Index: base/memory/discardable_memory_provider_unittest.cc |
diff --git a/base/memory/discardable_memory_provider_unittest.cc b/base/memory/discardable_memory_provider_unittest.cc |
index f033a0524e727ab1d314b50b31faca888123901c..a1294fbcde9e3034b16065f703d748a923b212ff 100644 |
--- a/base/memory/discardable_memory_provider_unittest.cc |
+++ b/base/memory/discardable_memory_provider_unittest.cc |
@@ -232,6 +232,22 @@ TEST_P(DiscardableMemoryProviderPermutationTest, LRUDiscardedExceedLimit) { |
EXPECT_NE(static_cast<void*>(NULL), Memory(discardable(0))); |
} |
+// Verify that no more memory than necessary was discarded after changing |
+// memory limit. |
+TEST_P(DiscardableMemoryProviderPermutationTest, LRUDiscardedAmount) { |
+ SetBytesToReclaimUnderModeratePressure(2048); |
+ SetDiscardableMemoryLimit(4096); |
+ |
+ CreateAndUseDiscardableMemory(); |
+ |
+ SetDiscardableMemoryLimit(2048); |
+ |
+ EXPECT_EQ(DISCARDABLE_MEMORY_SUCCESS, discardable(2)->Lock()); |
+ EXPECT_EQ(DISCARDABLE_MEMORY_PURGED, discardable(1)->Lock()); |
+ // 0 should still be locked. |
+ EXPECT_NE(static_cast<void*>(NULL), Memory(discardable(0))); |
+} |
+ |
TEST_P(DiscardableMemoryProviderPermutationTest, |
CriticalPressureFreesAllUnlocked) { |
CreateAndUseDiscardableMemory(); |