0

[pre_freeze] Add unittests for when PreFreeze is disabled.

This CL tests that when the feature is disabled or PreFreeze is not supported, we do not post any tasks through PreFreeze.

Bug: 1513796
Change-Id: Ic22faa9e122b4c4640d8082f86a749ea1d17a001
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5444965
Reviewed-by: Egor Pasko <pasko@chromium.org>
Commit-Queue: Thiabaud Engelbrecht <thiabaud@google.com>
Cr-Commit-Position: refs/heads/main@{#1286639}
This commit is contained in:
Thiabaud Engelbrecht
2024-04-12 18:37:21 +00:00
committed by Chromium LUCI CQ
parent ae6807bea9
commit bd5dc78f14
3 changed files with 46 additions and 3 deletions

@@ -284,12 +284,24 @@ void PreFreezeBackgroundMemoryTrimmer::SetSupportsModernTrimForTesting(
Instance().supports_modern_trim_ = is_supported; Instance().supports_modern_trim_ = is_supported;
} }
// static
void PreFreezeBackgroundMemoryTrimmer::SetDidRegisterTasksForTesting(
bool did_register_task) {
base::AutoLock locker(Instance().lock_);
Instance().did_register_task_ = did_register_task;
}
size_t PreFreezeBackgroundMemoryTrimmer:: size_t PreFreezeBackgroundMemoryTrimmer::
GetNumberOfPendingBackgroundTasksForTesting() { GetNumberOfPendingBackgroundTasksForTesting() {
base::AutoLock locker(lock_); base::AutoLock locker(lock_);
return background_tasks_.size(); return background_tasks_.size();
} }
bool PreFreezeBackgroundMemoryTrimmer::DidRegisterTasksForTesting() {
base::AutoLock locker(lock_);
return did_register_task_;
}
// static // static
void PreFreezeBackgroundMemoryTrimmer::BackgroundTask::RunNow( void PreFreezeBackgroundMemoryTrimmer::BackgroundTask::RunNow(
std::unique_ptr<PreFreezeBackgroundMemoryTrimmer::BackgroundTask> std::unique_ptr<PreFreezeBackgroundMemoryTrimmer::BackgroundTask>

@@ -60,7 +60,9 @@ class BASE_EXPORT PreFreezeBackgroundMemoryTrimmer {
base::TimeDelta delay) LOCKS_EXCLUDED(lock_); base::TimeDelta delay) LOCKS_EXCLUDED(lock_);
static void SetSupportsModernTrimForTesting(bool is_supported); static void SetSupportsModernTrimForTesting(bool is_supported);
static void SetDidRegisterTasksForTesting(bool did_register_tasks);
size_t GetNumberOfPendingBackgroundTasksForTesting() LOCKS_EXCLUDED(lock_); size_t GetNumberOfPendingBackgroundTasksForTesting() LOCKS_EXCLUDED(lock_);
bool DidRegisterTasksForTesting();
static void OnPreFreezeForTesting() LOCKS_EXCLUDED(lock_) { OnPreFreeze(); } static void OnPreFreezeForTesting() LOCKS_EXCLUDED(lock_) { OnPreFreeze(); }

@@ -42,9 +42,9 @@ class PreFreezeBackgroundMemoryTrimmerTest : public testing::Test {
PreFreezeBackgroundMemoryTrimmerTest() { PreFreezeBackgroundMemoryTrimmerTest() {
fl_.InitAndEnableFeature(kOnPreFreezeMemoryTrim); fl_.InitAndEnableFeature(kOnPreFreezeMemoryTrim);
} }
void SetUp() override { void SetUp() override {
PreFreezeBackgroundMemoryTrimmer::SetSupportsModernTrimForTesting(true); PreFreezeBackgroundMemoryTrimmer::SetSupportsModernTrimForTesting(true);
PreFreezeBackgroundMemoryTrimmer::SetDidRegisterTasksForTesting(false);
ResetGlobalCounter(); ResetGlobalCounter();
} }
@@ -54,26 +54,54 @@ class PreFreezeBackgroundMemoryTrimmerTest : public testing::Test {
.GetNumberOfPendingBackgroundTasksForTesting(); .GetNumberOfPendingBackgroundTasksForTesting();
} }
bool did_register_tasks() {
return PreFreezeBackgroundMemoryTrimmer::Instance()
.DidRegisterTasksForTesting();
}
test::TaskEnvironment task_environment_{ test::TaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME}; base::test::TaskEnvironment::TimeSource::MOCK_TIME};
private: private:
test::ScopedFeatureList fl_; test::ScopedFeatureList fl_;
}; };
TEST_F(PreFreezeBackgroundMemoryTrimmerTest, PostTaskPreFreezeDisabled) { // We do not expect any tasks to be registered with
// PreFreezeBackgroundMemoryTrimmer on Android versions before U.
TEST_F(PreFreezeBackgroundMemoryTrimmerTest, PostTaskPreFreezeUnsupported) {
PreFreezeBackgroundMemoryTrimmer::SetSupportsModernTrimForTesting(false); PreFreezeBackgroundMemoryTrimmer::SetSupportsModernTrimForTesting(false);
ASSERT_FALSE(did_register_tasks());
PreFreezeBackgroundMemoryTrimmer::PostDelayedBackgroundTask( PreFreezeBackgroundMemoryTrimmer::PostDelayedBackgroundTask(
SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE, SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE,
base::BindRepeating(&IncGlobalCounter), base::Seconds(30)); base::BindRepeating(&IncGlobalCounter), base::Seconds(30));
ASSERT_EQ(pending_task_count(), 0u); ASSERT_EQ(pending_task_count(), 0u);
ASSERT_FALSE(did_register_tasks());
task_environment_.FastForwardBy(base::Seconds(30)); task_environment_.FastForwardBy(base::Seconds(30));
ASSERT_EQ(pending_task_count(), 0u); ASSERT_EQ(pending_task_count(), 0u);
EXPECT_EQ(s_counter, 1);
}
TEST_F(PreFreezeBackgroundMemoryTrimmerTest, PostTaskPreFreezeWithoutTrim) {
test::ScopedFeatureList fl;
fl.InitAndDisableFeature(kOnPreFreezeMemoryTrim);
ASSERT_FALSE(did_register_tasks());
PreFreezeBackgroundMemoryTrimmer::PostDelayedBackgroundTask(
SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE,
base::BindRepeating(&IncGlobalCounter), base::Seconds(30));
ASSERT_EQ(pending_task_count(), 0u);
ASSERT_TRUE(did_register_tasks());
task_environment_.FastForwardBy(base::Seconds(30));
PreFreezeBackgroundMemoryTrimmer::OnPreFreezeForTesting();
ASSERT_EQ(pending_task_count(), 0u);
EXPECT_EQ(s_counter, 1); EXPECT_EQ(s_counter, 1);
} }
@@ -82,6 +110,7 @@ TEST_F(PreFreezeBackgroundMemoryTrimmerTest, PostDelayedTaskSimple) {
SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE, SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE,
base::BindRepeating(&IncGlobalCounter), base::Seconds(30)); base::BindRepeating(&IncGlobalCounter), base::Seconds(30));
ASSERT_TRUE(did_register_tasks());
ASSERT_EQ(pending_task_count(), 1u); ASSERT_EQ(pending_task_count(), 1u);
task_environment_.FastForwardBy(base::Seconds(30)); task_environment_.FastForwardBy(base::Seconds(30));