OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013, Google Inc. All rights reserved. | 2 * Copyright (c) 2013, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 10 matching lines...) Expand all Loading... |
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "core/fetch/MemoryCache.h" | 31 #include "platform/loader/fetch/MemoryCache.h" |
32 | 32 |
33 #include "core/fetch/MockResourceClient.h" | 33 #include "platform/loader/fetch/MockResourceClient.h" |
34 #include "core/fetch/RawResource.h" | 34 #include "platform/loader/fetch/RawResource.h" |
35 #include "platform/network/ResourceRequest.h" | 35 #include "platform/network/ResourceRequest.h" |
| 36 #include "platform/testing/TestingPlatformSupport.h" |
36 #include "platform/testing/UnitTestHelpers.h" | 37 #include "platform/testing/UnitTestHelpers.h" |
37 #include "public/platform/Platform.h" | 38 #include "public/platform/Platform.h" |
38 #include "testing/gtest/include/gtest/gtest.h" | 39 #include "testing/gtest/include/gtest/gtest.h" |
39 | 40 |
40 namespace blink { | 41 namespace blink { |
41 | 42 |
42 class MemoryCacheTest : public ::testing::Test { | 43 class MemoryCacheTest : public ::testing::Test { |
43 public: | 44 public: |
44 class FakeDecodedResource final : public Resource { | 45 class FakeDecodedResource final : public Resource { |
45 public: | 46 public: |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 virtual void SetUp() { | 82 virtual void SetUp() { |
82 // Save the global memory cache to restore it upon teardown. | 83 // Save the global memory cache to restore it upon teardown. |
83 m_globalMemoryCache = replaceMemoryCacheForTesting(MemoryCache::create()); | 84 m_globalMemoryCache = replaceMemoryCacheForTesting(MemoryCache::create()); |
84 } | 85 } |
85 | 86 |
86 virtual void TearDown() { | 87 virtual void TearDown() { |
87 replaceMemoryCacheForTesting(m_globalMemoryCache.release()); | 88 replaceMemoryCacheForTesting(m_globalMemoryCache.release()); |
88 } | 89 } |
89 | 90 |
90 Persistent<MemoryCache> m_globalMemoryCache; | 91 Persistent<MemoryCache> m_globalMemoryCache; |
| 92 ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler> |
| 93 m_platform; |
91 }; | 94 }; |
92 | 95 |
93 // Verifies that setters and getters for cache capacities work correcty. | 96 // Verifies that setters and getters for cache capacities work correcty. |
94 TEST_F(MemoryCacheTest, CapacityAccounting) { | 97 TEST_F(MemoryCacheTest, CapacityAccounting) { |
95 const size_t sizeMax = ~static_cast<size_t>(0); | 98 const size_t sizeMax = ~static_cast<size_t>(0); |
96 const size_t totalCapacity = sizeMax / 4; | 99 const size_t totalCapacity = sizeMax / 4; |
97 memoryCache()->setCapacity(totalCapacity); | 100 memoryCache()->setCapacity(totalCapacity); |
98 EXPECT_EQ(totalCapacity, memoryCache()->capacity()); | 101 EXPECT_EQ(totalCapacity, memoryCache()->capacity()); |
99 } | 102 } |
100 | 103 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 resource2->finish(); | 176 resource2->finish(); |
174 | 177 |
175 Platform::current()->currentThread()->getWebTaskRunner()->postTask( | 178 Platform::current()->currentThread()->getWebTaskRunner()->postTask( |
176 BLINK_FROM_HERE, WTF::bind(&runTask1, wrapPersistent(resource1), | 179 BLINK_FROM_HERE, WTF::bind(&runTask1, wrapPersistent(resource1), |
177 wrapPersistent(resource2))); | 180 wrapPersistent(resource2))); |
178 Platform::current()->currentThread()->getWebTaskRunner()->postTask( | 181 Platform::current()->currentThread()->getWebTaskRunner()->postTask( |
179 BLINK_FROM_HERE, | 182 BLINK_FROM_HERE, |
180 WTF::bind(&runTask2, | 183 WTF::bind(&runTask2, |
181 resource1->encodedSize() + resource1->overheadSize() + | 184 resource1->encodedSize() + resource1->overheadSize() + |
182 resource2->encodedSize() + resource2->overheadSize())); | 185 resource2->encodedSize() + resource2->overheadSize())); |
183 testing::runPendingTasks(); | 186 static_cast<TestingPlatformSupportWithMockScheduler*>(Platform::current()) |
| 187 ->runUntilIdle(); |
184 } | 188 } |
185 | 189 |
186 // Verified that when ordering a prune in a runLoop task, the prune | 190 // Verified that when ordering a prune in a runLoop task, the prune |
187 // is deferred to the end of the task. | 191 // is deferred to the end of the task. |
188 TEST_F(MemoryCacheTest, ResourcePruningAtEndOfTask_Basic) { | 192 TEST_F(MemoryCacheTest, ResourcePruningAtEndOfTask_Basic) { |
189 Resource* resource1 = FakeDecodedResource::create( | 193 Resource* resource1 = FakeDecodedResource::create( |
190 ResourceRequest("http://test/resource1"), Resource::Raw); | 194 ResourceRequest("http://test/resource1"), Resource::Raw); |
191 Resource* resource2 = FakeDecodedResource::create( | 195 Resource* resource2 = FakeDecodedResource::create( |
192 ResourceRequest("http://test/resource2"), Resource::Raw); | 196 ResourceRequest("http://test/resource2"), Resource::Raw); |
193 testResourcePruningAtEndOfTask(resource1, resource2); | 197 testResourcePruningAtEndOfTask(resource1, resource2); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 FakeResource* resource2 = | 393 FakeResource* resource2 = |
390 FakeResource::create(ResourceRequest(url2), Resource::Raw); | 394 FakeResource::create(ResourceRequest(url2), Resource::Raw); |
391 memoryCache()->add(resource2); | 395 memoryCache()->add(resource2); |
392 EXPECT_TRUE(memoryCache()->contains(resource2)); | 396 EXPECT_TRUE(memoryCache()->contains(resource2)); |
393 | 397 |
394 memoryCache()->removeURLFromCache(url2); | 398 memoryCache()->removeURLFromCache(url2); |
395 EXPECT_FALSE(memoryCache()->contains(resource2)); | 399 EXPECT_FALSE(memoryCache()->contains(resource2)); |
396 } | 400 } |
397 | 401 |
398 } // namespace blink | 402 } // namespace blink |
OLD | NEW |