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;
}
// static
void PreFreezeBackgroundMemoryTrimmer::SetDidRegisterTasksForTesting(
bool did_register_task) {
base::AutoLock locker(Instance().lock_);
Instance().did_register_task_ = did_register_task;
}
size_t PreFreezeBackgroundMemoryTrimmer::
GetNumberOfPendingBackgroundTasksForTesting() {
base::AutoLock locker(lock_);
return background_tasks_.size();
}
bool PreFreezeBackgroundMemoryTrimmer::DidRegisterTasksForTesting() {
base::AutoLock locker(lock_);
return did_register_task_;
}
// static
void PreFreezeBackgroundMemoryTrimmer::BackgroundTask::RunNow(
std::unique_ptr<PreFreezeBackgroundMemoryTrimmer::BackgroundTask>

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

@ -42,9 +42,9 @@ class PreFreezeBackgroundMemoryTrimmerTest : public testing::Test {
PreFreezeBackgroundMemoryTrimmerTest() {
fl_.InitAndEnableFeature(kOnPreFreezeMemoryTrim);
}
void SetUp() override {
PreFreezeBackgroundMemoryTrimmer::SetSupportsModernTrimForTesting(true);
PreFreezeBackgroundMemoryTrimmer::SetDidRegisterTasksForTesting(false);
ResetGlobalCounter();
}
@ -54,26 +54,54 @@ class PreFreezeBackgroundMemoryTrimmerTest : public testing::Test {
.GetNumberOfPendingBackgroundTasksForTesting();
}
bool did_register_tasks() {
return PreFreezeBackgroundMemoryTrimmer::Instance()
.DidRegisterTasksForTesting();
}
test::TaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
private:
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);
ASSERT_FALSE(did_register_tasks());
PreFreezeBackgroundMemoryTrimmer::PostDelayedBackgroundTask(
SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE,
base::BindRepeating(&IncGlobalCounter), base::Seconds(30));
ASSERT_EQ(pending_task_count(), 0u);
ASSERT_FALSE(did_register_tasks());
task_environment_.FastForwardBy(base::Seconds(30));
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);
}
@ -82,6 +110,7 @@ TEST_F(PreFreezeBackgroundMemoryTrimmerTest, PostDelayedTaskSimple) {
SingleThreadTaskRunner::GetCurrentDefault(), FROM_HERE,
base::BindRepeating(&IncGlobalCounter), base::Seconds(30));
ASSERT_TRUE(did_register_tasks());
ASSERT_EQ(pending_task_count(), 1u);
task_environment_.FastForwardBy(base::Seconds(30));