[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:

committed by
Chromium LUCI CQ

parent
ae6807bea9
commit
bd5dc78f14
@ -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));
|
||||
|
Reference in New Issue
Block a user