blob: dfa52f5051049a0c594a8f5a48d57b0cc5a2062d [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_COMPONENTS_ARC_TEST_FAKE_PROCESS_INSTANCE_H_
#define ASH_COMPONENTS_ARC_TEST_FAKE_PROCESS_INSTANCE_H_
#include "ash/components/arc/mojom/process.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace arc {
class FakeProcessInstance : public mojom::ProcessInstance {
public:
FakeProcessInstance();
~FakeProcessInstance() override;
FakeProcessInstance(const FakeProcessInstance&) = delete;
FakeProcessInstance& operator=(const FakeProcessInstance&) = delete;
void KillProcess(uint32_t pid, const std::string& reason) override;
void RequestProcessList(RequestProcessListCallback callback) override;
void RequestApplicationProcessMemoryInfoDeprecated(
RequestApplicationProcessMemoryInfoDeprecatedCallback callback) override;
void RequestSystemProcessMemoryInfoDeprecated(
const std::vector<uint32_t>& nspids,
RequestSystemProcessMemoryInfoDeprecatedCallback callback) override;
void RequestApplicationProcessMemoryInfo(
RequestApplicationProcessMemoryInfoCallback callback) override;
void RequestSystemProcessMemoryInfo(
const std::vector<uint32_t>& nspids,
RequestSystemProcessMemoryInfoCallback callback) override;
void ApplyHostMemoryPressure(
mojom::ProcessState level,
int64_t reclaim_target,
ApplyHostMemoryPressureCallback callback) override;
// Returns true if the last call to HostMemoryPressure had matching level and
// reclaim_target arguments.
bool CheckLastHostMemoryPressure(mojom::ProcessState level,
int64_t reclaim_target);
// Returns false when there is a call to HostMemoryPressue not followed by
// CheckLastHostMemoryPressure.
bool IsLastHostMemoryPressureChecked() {
return host_memory_pressure_checked_;
}
// Executes the callback from the last call to HostMemoryPressure.
void RunHostMemoryPressureCallback(uint32_t killed, uint64_t reclaimed);
private:
// State to save the most recent call to HostMemoryPressure.
bool host_memory_pressure_checked_ = true;
mojom::ProcessState host_memory_pressure_level_;
int64_t host_memory_pressure_reclaim_target_;
ApplyHostMemoryPressureCallback host_memory_pressure_callback_;
};
} // namespace arc
#endif // ASH_COMPONENTS_ARC_TEST_FAKE_PROCESS_INSTANCE_H_