[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;
|
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));
|
||||||
|
Reference in New Issue
Block a user