OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/host_discardable_shared_memory_manager.h" | 5 #include "content/common/host_discardable_shared_memory_manager.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
7 | 7 |
8 namespace content { | 8 namespace content { |
9 namespace { | 9 namespace { |
10 | 10 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); | 71 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); |
72 | 72 |
73 TestDiscardableSharedMemory memory(shared_handle); | 73 TestDiscardableSharedMemory memory(shared_handle); |
74 bool rv = memory.Map(kDataSize); | 74 bool rv = memory.Map(kDataSize); |
75 ASSERT_TRUE(rv); | 75 ASSERT_TRUE(rv); |
76 | 76 |
77 memcpy(memory.memory(), data, kDataSize); | 77 memcpy(memory.memory(), data, kDataSize); |
78 memory.SetNow(base::Time::FromDoubleT(1)); | 78 memory.SetNow(base::Time::FromDoubleT(1)); |
79 memory.Unlock(0, 0); | 79 memory.Unlock(0, 0); |
80 | 80 |
81 ASSERT_TRUE(memory.Lock(0, 0)); | 81 ASSERT_EQ(base::DiscardableSharedMemory::SUCCESS, memory.Lock(0, 0)); |
82 EXPECT_EQ(memcmp(data, memory.memory(), kDataSize), 0); | 82 EXPECT_EQ(memcmp(data, memory.memory(), kDataSize), 0); |
83 memory.Unlock(0, 0); | 83 memory.Unlock(0, 0); |
84 } | 84 } |
85 | 85 |
86 TEST_F(HostDiscardableSharedMemoryManagerTest, Purge) { | 86 TEST_F(HostDiscardableSharedMemoryManagerTest, Purge) { |
87 const int kDataSize = 1024; | 87 const int kDataSize = 1024; |
88 | 88 |
89 base::SharedMemoryHandle shared_handle1; | 89 base::SharedMemoryHandle shared_handle1; |
90 manager_->AllocateLockedDiscardableSharedMemoryForChild( | 90 manager_->AllocateLockedDiscardableSharedMemoryForChild( |
91 base::GetCurrentProcessHandle(), kDataSize, &shared_handle1); | 91 base::GetCurrentProcessHandle(), kDataSize, &shared_handle1); |
(...skipping 23 matching lines...) Expand all Loading... |
115 | 115 |
116 // Manager should not have to schedule another call to EnforceMemoryPolicy(). | 116 // Manager should not have to schedule another call to EnforceMemoryPolicy(). |
117 manager_->SetNow(base::Time::FromDoubleT(3)); | 117 manager_->SetNow(base::Time::FromDoubleT(3)); |
118 manager_->EnforceMemoryPolicy(); | 118 manager_->EnforceMemoryPolicy(); |
119 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); | 119 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); |
120 | 120 |
121 // Memory should still be resident. | 121 // Memory should still be resident. |
122 EXPECT_TRUE(memory1.IsMemoryResident()); | 122 EXPECT_TRUE(memory1.IsMemoryResident()); |
123 EXPECT_TRUE(memory2.IsMemoryResident()); | 123 EXPECT_TRUE(memory2.IsMemoryResident()); |
124 | 124 |
125 rv = memory1.Lock(0, 0); | 125 auto lock_rv = memory1.Lock(0, 0); |
126 EXPECT_TRUE(rv); | 126 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv); |
127 rv = memory2.Lock(0, 0); | 127 lock_rv = memory2.Lock(0, 0); |
128 EXPECT_TRUE(rv); | 128 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv); |
129 | 129 |
130 memory1.SetNow(base::Time::FromDoubleT(4)); | 130 memory1.SetNow(base::Time::FromDoubleT(4)); |
131 memory1.Unlock(0, 0); | 131 memory1.Unlock(0, 0); |
132 memory2.SetNow(base::Time::FromDoubleT(5)); | 132 memory2.SetNow(base::Time::FromDoubleT(5)); |
133 memory2.Unlock(0, 0); | 133 memory2.Unlock(0, 0); |
134 | 134 |
135 // Just enough memory for one allocation. | 135 // Just enough memory for one allocation. |
136 manager_->SetNow(base::Time::FromDoubleT(6)); | 136 manager_->SetNow(base::Time::FromDoubleT(6)); |
137 manager_->SetMemoryLimit(memory2.mapped_size()); | 137 manager_->SetMemoryLimit(memory2.mapped_size()); |
138 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); | 138 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); |
139 | 139 |
140 // LRU allocation should still be resident. | 140 // LRU allocation should still be resident. |
141 EXPECT_FALSE(memory1.IsMemoryResident()); | 141 EXPECT_FALSE(memory1.IsMemoryResident()); |
142 EXPECT_TRUE(memory2.IsMemoryResident()); | 142 EXPECT_TRUE(memory2.IsMemoryResident()); |
143 | 143 |
144 rv = memory1.Lock(0, 0); | 144 lock_rv = memory1.Lock(0, 0); |
145 EXPECT_FALSE(rv); | 145 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, lock_rv); |
146 rv = memory2.Lock(0, 0); | 146 lock_rv = memory2.Lock(0, 0); |
147 EXPECT_TRUE(rv); | 147 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv); |
148 } | 148 } |
149 | 149 |
150 TEST_F(HostDiscardableSharedMemoryManagerTest, EnforceMemoryPolicy) { | 150 TEST_F(HostDiscardableSharedMemoryManagerTest, EnforceMemoryPolicy) { |
151 const int kDataSize = 1024; | 151 const int kDataSize = 1024; |
152 | 152 |
153 base::SharedMemoryHandle shared_handle; | 153 base::SharedMemoryHandle shared_handle; |
154 manager_->AllocateLockedDiscardableSharedMemoryForChild( | 154 manager_->AllocateLockedDiscardableSharedMemoryForChild( |
155 base::GetCurrentProcessHandle(), kDataSize, &shared_handle); | 155 base::GetCurrentProcessHandle(), kDataSize, &shared_handle); |
156 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); | 156 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); |
157 | 157 |
(...skipping 16 matching lines...) Expand all Loading... |
174 | 174 |
175 memory.SetNow(base::Time::FromDoubleT(3)); | 175 memory.SetNow(base::Time::FromDoubleT(3)); |
176 memory.Unlock(0, 0); | 176 memory.Unlock(0, 0); |
177 | 177 |
178 manager_->set_enforce_memory_policy_pending(false); | 178 manager_->set_enforce_memory_policy_pending(false); |
179 manager_->SetNow(base::Time::FromDoubleT(4)); | 179 manager_->SetNow(base::Time::FromDoubleT(4)); |
180 manager_->EnforceMemoryPolicy(); | 180 manager_->EnforceMemoryPolicy(); |
181 // Memory policy should have successfully been enforced. | 181 // Memory policy should have successfully been enforced. |
182 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); | 182 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); |
183 | 183 |
184 EXPECT_FALSE(memory.Lock(0, 0)); | 184 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, memory.Lock(0, 0)); |
185 } | 185 } |
186 | 186 |
187 } // namespace | 187 } // namespace |
188 } // namespace content | 188 } // namespace content |
OLD | NEW |