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() ...@@ -17,12 +17,6 @@ MultiSourceMemoryPressureMonitor::MultiSourceMemoryPressureMonitor()
dispatch_callback_(base::BindRepeating( dispatch_callback_(base::BindRepeating(
&base::MemoryPressureListener::NotifyMemoryPressure)), &base::MemoryPressureListener::NotifyMemoryPressure)),
aggregator_(this) { 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() { MultiSourceMemoryPressureMonitor::~MultiSourceMemoryPressureMonitor() {
...@@ -34,6 +28,12 @@ MultiSourceMemoryPressureMonitor::~MultiSourceMemoryPressureMonitor() { ...@@ -34,6 +28,12 @@ MultiSourceMemoryPressureMonitor::~MultiSourceMemoryPressureMonitor() {
system_evaluator_.reset(); system_evaluator_.reset();
} }
void MultiSourceMemoryPressureMonitor::Start() {
system_evaluator_ =
SystemMemoryPressureEvaluator::CreateDefaultSystemEvaluator(this);
StartMetricsTimer();
}
void MultiSourceMemoryPressureMonitor::StartMetricsTimer() { void MultiSourceMemoryPressureMonitor::StartMetricsTimer() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Unretained is safe here since this task is running on a timer owned by this // Unretained is safe here since this task is running on a timer owned by this
......
...@@ -30,6 +30,9 @@ class MultiSourceMemoryPressureMonitor ...@@ -30,6 +30,9 @@ class MultiSourceMemoryPressureMonitor
MultiSourceMemoryPressureMonitor(); MultiSourceMemoryPressureMonitor();
~MultiSourceMemoryPressureMonitor() override; ~MultiSourceMemoryPressureMonitor() override;
// Start monitoring memory pressure using the platform-specific voter.
void Start();
// MemoryPressureMonitor implementation. // MemoryPressureMonitor implementation.
MemoryPressureLevel GetCurrentPressureLevel() const override; MemoryPressureLevel GetCurrentPressureLevel() const override;
void SetDispatchCallback(const DispatchCallback& callback) override; void SetDispatchCallback(const DispatchCallback& callback) override;
......
...@@ -14,6 +14,7 @@ namespace util { ...@@ -14,6 +14,7 @@ namespace util {
TEST(MultiSourceMemoryPressureMonitorTest, RunDispatchCallback) { TEST(MultiSourceMemoryPressureMonitorTest, RunDispatchCallback) {
base::test::TaskEnvironment task_environment; base::test::TaskEnvironment task_environment;
MultiSourceMemoryPressureMonitor monitor; MultiSourceMemoryPressureMonitor monitor;
monitor.Start();
auto* aggregator = monitor.aggregator_for_testing(); auto* aggregator = monitor.aggregator_for_testing();
bool callback_called = false; bool callback_called = false;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "base/location.h" #include "base/location.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/memory_pressure_monitor.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.h"
#include "base/message_loop/message_loop_current.h" #include "base/message_loop/message_loop_current.h"
#include "base/metrics/field_trial.h" #include "base/metrics/field_trial.h"
...@@ -366,14 +367,20 @@ std::unique_ptr<base::MemoryPressureMonitor> CreateMemoryPressureMonitor( ...@@ -366,14 +367,20 @@ std::unique_ptr<base::MemoryPressureMonitor> CreateMemoryPressureMonitor(
if (command_line.HasSwitch(switches::kBrowserTest)) if (command_line.HasSwitch(switches::kBrowserTest))
return nullptr; return nullptr;
std::unique_ptr<util::MultiSourceMemoryPressureMonitor> monitor;
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
if (chromeos::switches::MemoryPressureHandlingEnabled()) if (chromeos::switches::MemoryPressureHandlingEnabled())
return std::make_unique<util::MultiSourceMemoryPressureMonitor>(); monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
#elif defined(OS_MACOSX) || defined(OS_WIN) #elif defined(OS_MACOSX) || defined(OS_WIN)
return std::make_unique<util::MultiSourceMemoryPressureMonitor>(); monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
#endif #endif
// No memory monitor on other platforms... // No memory monitor on other platforms...
return nullptr;
if (monitor)
monitor->Start();
return monitor;
} }
#if defined(OS_CHROMEOS) #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