diff --git a/base/android/pre_freeze_background_memory_trimmer.cc b/base/android/pre_freeze_background_memory_trimmer.cc
index 73a6d01f21fd1..609738cd13ab7 100644
--- a/base/android/pre_freeze_background_memory_trimmer.cc
+++ b/base/android/pre_freeze_background_memory_trimmer.cc
@@ -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>
diff --git a/base/android/pre_freeze_background_memory_trimmer.h b/base/android/pre_freeze_background_memory_trimmer.h
index 74842a8f636ab..0e156c0c53bc1 100644
--- a/base/android/pre_freeze_background_memory_trimmer.h
+++ b/base/android/pre_freeze_background_memory_trimmer.h
@@ -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(); }
 
diff --git a/base/android/pre_freeze_background_memory_trimmer_unittest.cc b/base/android/pre_freeze_background_memory_trimmer_unittest.cc
index d0f27c4847406..7190ed1bfd80c 100644
--- a/base/android/pre_freeze_background_memory_trimmer_unittest.cc
+++ b/base/android/pre_freeze_background_memory_trimmer_unittest.cc
@@ -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));