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 8c1aee896887aa95ec78e9035fc975c9fab93a73..84dfbc6df8adbddacc8d9f8cc5d1a887b0cb0e03 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(); |