Commit c9d4cd17 authored by Sebastien Marchand's avatar Sebastien Marchand Committed by Commit Bot

Add a Start function to MultiSourceMemoryPressureMonitor

Change-Id: I8cfd7c201e847596d54b750aa24bb7606b2d8498
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1836019Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Commit-Queue: Sébastien Marchand <sebmarchand@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702610}
parent 19bfaa21
......@@ -17,12 +17,6 @@ MultiSourceMemoryPressureMonitor::MultiSourceMemoryPressureMonitor()
dispatch_callback_(base::BindRepeating(
&base::MemoryPressureListener::NotifyMemoryPressure)),
aggregator_(this) {
// This can't be in the parameter list because |sequence_checker_| wouldn't be
// available, which would be needed by the |system_evaluator_|'s constructor's
// call to CreateVoter().
system_evaluator_ =
SystemMemoryPressureEvaluator::CreateDefaultSystemEvaluator(this);
StartMetricsTimer();
}
MultiSourceMemoryPressureMonitor::~MultiSourceMemoryPressureMonitor() {
......@@ -34,6 +28,12 @@ MultiSourceMemoryPressureMonitor::~MultiSourceMemoryPressureMonitor() {
system_evaluator_.reset();
}
void MultiSourceMemoryPressureMonitor::Start() {
system_evaluator_ =
SystemMemoryPressureEvaluator::CreateDefaultSystemEvaluator(this);
StartMetricsTimer();
}
void MultiSourceMemoryPressureMonitor::StartMetricsTimer() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Unretained is safe here since this task is running on a timer owned by this
......
......@@ -30,6 +30,9 @@ class MultiSourceMemoryPressureMonitor
MultiSourceMemoryPressureMonitor();
~MultiSourceMemoryPressureMonitor() override;
// Start monitoring memory pressure using the platform-specific voter.
void Start();
// MemoryPressureMonitor implementation.
MemoryPressureLevel GetCurrentPressureLevel() const override;
void SetDispatchCallback(const DispatchCallback& callback) override;
......
......@@ -14,6 +14,7 @@ namespace util {
TEST(MultiSourceMemoryPressureMonitorTest, RunDispatchCallback) {
base::test::TaskEnvironment task_environment;
MultiSourceMemoryPressureMonitor monitor;
monitor.Start();
auto* aggregator = monitor.aggregator_for_testing();
bool callback_called = false;
......
......@@ -21,6 +21,7 @@
#include "base/location.h"
#include "base/logging.h"
#include "base/memory/memory_pressure_monitor.h"
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
#include "base/message_loop/message_loop_current.h"
#include "base/metrics/field_trial.h"
......@@ -366,14 +367,20 @@ std::unique_ptr<base::MemoryPressureMonitor> CreateMemoryPressureMonitor(
if (command_line.HasSwitch(switches::kBrowserTest))
return nullptr;
std::unique_ptr<util::MultiSourceMemoryPressureMonitor> monitor;
#if defined(OS_CHROMEOS)
if (chromeos::switches::MemoryPressureHandlingEnabled())
return std::make_unique<util::MultiSourceMemoryPressureMonitor>();
monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
#elif defined(OS_MACOSX) || defined(OS_WIN)
return std::make_unique<util::MultiSourceMemoryPressureMonitor>();
monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
#endif
// No memory monitor on other platforms...
return nullptr;
if (monitor)
monitor->Start();
return monitor;
}
#if defined(OS_CHROMEOS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment