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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 }; | 101 }; |
102 | 102 |
103 // Verifies that setters and getters for cache capacities work correcty. | 103 // Verifies that setters and getters for cache capacities work correcty. |
104 TEST_F(MemoryCacheTest, CapacityAccounting) | 104 TEST_F(MemoryCacheTest, CapacityAccounting) |
105 { | 105 { |
106 const size_t sizeMax = ~static_cast<size_t>(0); | 106 const size_t sizeMax = ~static_cast<size_t>(0); |
107 const size_t totalCapacity = sizeMax / 4; | 107 const size_t totalCapacity = sizeMax / 4; |
108 const size_t minDeadCapacity = sizeMax / 16; | 108 const size_t minDeadCapacity = sizeMax / 16; |
109 const size_t maxDeadCapacity = sizeMax / 8; | 109 const size_t maxDeadCapacity = sizeMax / 8; |
110 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); | 110 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); |
111 ASSERT_EQ(totalCapacity, memoryCache()->capacity()); | 111 EXPECT_EQ(totalCapacity, memoryCache()->capacity()); |
112 ASSERT_EQ(minDeadCapacity, memoryCache()->minDeadCapacity()); | 112 EXPECT_EQ(minDeadCapacity, memoryCache()->minDeadCapacity()); |
113 ASSERT_EQ(maxDeadCapacity, memoryCache()->maxDeadCapacity()); | 113 EXPECT_EQ(maxDeadCapacity, memoryCache()->maxDeadCapacity()); |
114 } | 114 } |
115 | 115 |
116 TEST_F(MemoryCacheTest, VeryLargeResourceAccounting) | 116 TEST_F(MemoryCacheTest, VeryLargeResourceAccounting) |
117 { | 117 { |
118 const size_t sizeMax = ~static_cast<size_t>(0); | 118 const size_t sizeMax = ~static_cast<size_t>(0); |
119 const size_t totalCapacity = sizeMax / 4; | 119 const size_t totalCapacity = sizeMax / 4; |
120 const size_t minDeadCapacity = sizeMax / 16; | 120 const size_t minDeadCapacity = sizeMax / 16; |
121 const size_t maxDeadCapacity = sizeMax / 8; | 121 const size_t maxDeadCapacity = sizeMax / 8; |
122 const size_t resourceSize1 = sizeMax / 16; | 122 const size_t resourceSize1 = sizeMax / 16; |
123 const size_t resourceSize2 = sizeMax / 20; | 123 const size_t resourceSize2 = sizeMax / 20; |
124 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); | 124 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); |
125 FakeResource* cachedResource = | 125 FakeResource* cachedResource = |
126 FakeResource::create(ResourceRequest("http://test/resource"), Resource::
Raw); | 126 FakeResource::create(ResourceRequest("http://test/resource"), Resource::
Raw); |
127 cachedResource->fakeEncodedSize(resourceSize1); | 127 cachedResource->fakeEncodedSize(resourceSize1); |
128 | 128 |
129 ASSERT_EQ(0u, memoryCache()->deadSize()); | 129 EXPECT_EQ(0u, memoryCache()->deadSize()); |
130 ASSERT_EQ(0u, memoryCache()->liveSize()); | 130 EXPECT_EQ(0u, memoryCache()->liveSize()); |
131 memoryCache()->add(cachedResource); | 131 memoryCache()->add(cachedResource); |
132 ASSERT_EQ(cachedResource->size(), memoryCache()->deadSize()); | 132 EXPECT_EQ(cachedResource->size(), memoryCache()->deadSize()); |
133 ASSERT_EQ(0u, memoryCache()->liveSize()); | 133 EXPECT_EQ(0u, memoryCache()->liveSize()); |
134 | 134 |
135 Persistent<MockResourceClient> client = new MockResourceClient(cachedResourc
e); | 135 Persistent<MockResourceClient> client = new MockResourceClient(cachedResourc
e); |
136 ASSERT_EQ(0u, memoryCache()->deadSize()); | 136 EXPECT_EQ(0u, memoryCache()->deadSize()); |
137 ASSERT_EQ(cachedResource->size(), memoryCache()->liveSize()); | 137 EXPECT_EQ(cachedResource->size(), memoryCache()->liveSize()); |
138 | 138 |
139 cachedResource->fakeEncodedSize(resourceSize2); | 139 cachedResource->fakeEncodedSize(resourceSize2); |
140 ASSERT_EQ(0u, memoryCache()->deadSize()); | 140 EXPECT_EQ(0u, memoryCache()->deadSize()); |
141 ASSERT_EQ(cachedResource->size(), memoryCache()->liveSize()); | 141 EXPECT_EQ(cachedResource->size(), memoryCache()->liveSize()); |
142 } | 142 } |
143 | 143 |
144 // Verifies that dead resources that exceed dead resource capacity are evicted | 144 // Verifies that dead resources that exceed dead resource capacity are evicted |
145 // from cache when pruning. | 145 // from cache when pruning. |
146 static void TestDeadResourceEviction(Resource* resource1, Resource* resource2) | 146 static void TestDeadResourceEviction(Resource* resource1, Resource* resource2) |
147 { | 147 { |
148 memoryCache()->setDelayBeforeLiveDecodedPrune(0); | 148 memoryCache()->setDelayBeforeLiveDecodedPrune(0); |
149 memoryCache()->setMaxPruneDeferralDelay(0); | 149 memoryCache()->setMaxPruneDeferralDelay(0); |
150 const unsigned totalCapacity = 1000000; | 150 const unsigned totalCapacity = 1000000; |
151 const unsigned minDeadCapacity = 0; | 151 const unsigned minDeadCapacity = 0; |
152 const unsigned maxDeadCapacity = 0; | 152 const unsigned maxDeadCapacity = 0; |
153 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); | 153 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); |
154 | 154 |
155 const char data[5] = "abcd"; | 155 const char data[5] = "abcd"; |
156 resource1->appendData(data, 3u); | 156 resource1->appendData(data, 3u); |
157 resource2->appendData(data, 2u); | 157 resource2->appendData(data, 2u); |
158 | 158 |
159 // The resource size has to be nonzero for this test to be meaningful, but | 159 // The resource size has to be nonzero for this test to be meaningful, but |
160 // we do not rely on it having any particular value. | 160 // we do not rely on it having any particular value. |
161 ASSERT_GT(resource1->size(), 0u); | 161 EXPECT_GT(resource1->size(), 0u); |
162 ASSERT_GT(resource2->size(), 0u); | 162 EXPECT_GT(resource2->size(), 0u); |
163 | 163 |
164 ASSERT_EQ(0u, memoryCache()->deadSize()); | 164 EXPECT_EQ(0u, memoryCache()->deadSize()); |
165 ASSERT_EQ(0u, memoryCache()->liveSize()); | 165 EXPECT_EQ(0u, memoryCache()->liveSize()); |
166 | 166 |
167 memoryCache()->add(resource1); | 167 memoryCache()->add(resource1); |
168 ASSERT_EQ(resource1->size(), memoryCache()->deadSize()); | 168 EXPECT_EQ(resource1->size(), memoryCache()->deadSize()); |
169 ASSERT_EQ(0u, memoryCache()->liveSize()); | 169 EXPECT_EQ(0u, memoryCache()->liveSize()); |
170 | 170 |
171 memoryCache()->add(resource2); | 171 memoryCache()->add(resource2); |
172 ASSERT_EQ(resource1->size() + resource2->size(), memoryCache()->deadSize()); | 172 EXPECT_EQ(resource1->size() + resource2->size(), memoryCache()->deadSize()); |
173 ASSERT_EQ(0u, memoryCache()->liveSize()); | 173 EXPECT_EQ(0u, memoryCache()->liveSize()); |
174 | 174 |
175 memoryCache()->prune(); | 175 memoryCache()->prune(); |
176 ASSERT_EQ(0u, memoryCache()->deadSize()); | 176 EXPECT_EQ(0u, memoryCache()->deadSize()); |
177 ASSERT_EQ(0u, memoryCache()->liveSize()); | 177 EXPECT_EQ(0u, memoryCache()->liveSize()); |
178 } | 178 } |
179 | 179 |
180 TEST_F(MemoryCacheTest, DeadResourceEviction_Basic) | 180 TEST_F(MemoryCacheTest, DeadResourceEviction_Basic) |
181 { | 181 { |
182 Resource* resource1 = | 182 Resource* resource1 = |
183 Resource::create(ResourceRequest("http://test/resource1"), Resource::Raw
); | 183 Resource::create(ResourceRequest("http://test/resource1"), Resource::Raw
); |
184 Resource* resource2 = | 184 Resource* resource2 = |
185 Resource::create(ResourceRequest("http://test/resource2"), Resource::Raw
); | 185 Resource::create(ResourceRequest("http://test/resource2"), Resource::Raw
); |
186 TestDeadResourceEviction(resource1, resource2); | 186 TestDeadResourceEviction(resource1, resource2); |
187 } | 187 } |
188 | 188 |
189 TEST_F(MemoryCacheTest, DeadResourceEviction_MultipleResourceMaps) | 189 TEST_F(MemoryCacheTest, DeadResourceEviction_MultipleResourceMaps) |
190 { | 190 { |
191 Resource* resource1 = | 191 Resource* resource1 = |
192 Resource::create(ResourceRequest("http://test/resource1"), Resource::Raw
); | 192 Resource::create(ResourceRequest("http://test/resource1"), Resource::Raw
); |
193 Resource* resource2 = | 193 Resource* resource2 = |
194 Resource::create(ResourceRequest("http://test/resource2"), Resource::Raw
); | 194 Resource::create(ResourceRequest("http://test/resource2"), Resource::Raw
); |
195 resource2->setCacheIdentifier("foo"); | 195 resource2->setCacheIdentifier("foo"); |
196 TestDeadResourceEviction(resource1, resource2); | 196 TestDeadResourceEviction(resource1, resource2); |
197 } | 197 } |
198 | 198 |
199 static void runTask1(Resource* live, Resource* dead) | 199 static void runTask1(Resource* live, Resource* dead) |
200 { | 200 { |
201 // The resource size has to be nonzero for this test to be meaningful, but | 201 // The resource size has to be nonzero for this test to be meaningful, but |
202 // we do not rely on it having any particular value. | 202 // we do not rely on it having any particular value. |
203 ASSERT_GT(live->size(), 0u); | 203 EXPECT_GT(live->size(), 0u); |
204 ASSERT_GT(dead->size(), 0u); | 204 EXPECT_GT(dead->size(), 0u); |
205 | 205 |
206 ASSERT_EQ(0u, memoryCache()->deadSize()); | 206 EXPECT_EQ(0u, memoryCache()->deadSize()); |
207 ASSERT_EQ(0u, memoryCache()->liveSize()); | 207 EXPECT_EQ(0u, memoryCache()->liveSize()); |
208 | 208 |
209 memoryCache()->add(dead); | 209 memoryCache()->add(dead); |
210 memoryCache()->add(live); | 210 memoryCache()->add(live); |
211 memoryCache()->updateDecodedResource(live, UpdateForPropertyChange); | 211 memoryCache()->updateDecodedResource(live, UpdateForPropertyChange); |
212 ASSERT_EQ(dead->size(), memoryCache()->deadSize()); | 212 EXPECT_EQ(dead->size(), memoryCache()->deadSize()); |
213 ASSERT_EQ(live->size(), memoryCache()->liveSize()); | 213 EXPECT_EQ(live->size(), memoryCache()->liveSize()); |
214 ASSERT_GT(live->decodedSize(), 0u); | 214 EXPECT_GT(live->decodedSize(), 0u); |
215 | 215 |
216 memoryCache()->prune(); // Dead resources are pruned immediately | 216 memoryCache()->prune(); // Dead resources are pruned immediately |
217 ASSERT_EQ(dead->size(), memoryCache()->deadSize()); | 217 EXPECT_EQ(dead->size(), memoryCache()->deadSize()); |
218 ASSERT_EQ(live->size(), memoryCache()->liveSize()); | 218 EXPECT_EQ(live->size(), memoryCache()->liveSize()); |
219 ASSERT_GT(live->decodedSize(), 0u); | 219 EXPECT_GT(live->decodedSize(), 0u); |
220 } | 220 } |
221 | 221 |
222 static void runTask2(unsigned liveSizeWithoutDecode) | 222 static void runTask2(unsigned liveSizeWithoutDecode) |
223 { | 223 { |
224 // Next task: now, the live resource was evicted. | 224 // Next task: now, the live resource was evicted. |
225 ASSERT_EQ(0u, memoryCache()->deadSize()); | 225 EXPECT_EQ(0u, memoryCache()->deadSize()); |
226 ASSERT_EQ(liveSizeWithoutDecode, memoryCache()->liveSize()); | 226 EXPECT_EQ(liveSizeWithoutDecode, memoryCache()->liveSize()); |
227 } | 227 } |
228 | 228 |
229 static void TestLiveResourceEvictionAtEndOfTask(Resource* cachedDeadResource, Re
source* cachedLiveResource) | 229 static void TestLiveResourceEvictionAtEndOfTask(Resource* cachedDeadResource, Re
source* cachedLiveResource) |
230 { | 230 { |
231 memoryCache()->setDelayBeforeLiveDecodedPrune(0); | 231 memoryCache()->setDelayBeforeLiveDecodedPrune(0); |
232 const unsigned totalCapacity = 1; | 232 const unsigned totalCapacity = 1; |
233 const unsigned minDeadCapacity = 0; | 233 const unsigned minDeadCapacity = 0; |
234 const unsigned maxDeadCapacity = 0; | 234 const unsigned maxDeadCapacity = 0; |
235 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); | 235 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); |
236 const char data[6] = "abcde"; | 236 const char data[6] = "abcde"; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 | 300 |
301 const unsigned minDeadCapacity = 0; | 301 const unsigned minDeadCapacity = 0; |
302 const unsigned maxDeadCapacity = ((resource1->size() + resource2->size()) /
2) - 1; | 302 const unsigned maxDeadCapacity = ((resource1->size() + resource2->size()) /
2) - 1; |
303 const unsigned totalCapacity = maxDeadCapacity; | 303 const unsigned totalCapacity = maxDeadCapacity; |
304 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); | 304 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity
); |
305 memoryCache()->add(resource1); | 305 memoryCache()->add(resource1); |
306 memoryCache()->add(resource2); | 306 memoryCache()->add(resource2); |
307 // Call prune. There is nothing to prune, but this will initialize | 307 // Call prune. There is nothing to prune, but this will initialize |
308 // the prune timestamp, allowing future prunes to be deferred. | 308 // the prune timestamp, allowing future prunes to be deferred. |
309 memoryCache()->prune(); | 309 memoryCache()->prune(); |
310 ASSERT_GT(resource1->decodedSize(), 0u); | 310 EXPECT_GT(resource1->decodedSize(), 0u); |
311 ASSERT_GT(resource2->decodedSize(), 0u); | 311 EXPECT_GT(resource2->decodedSize(), 0u); |
312 ASSERT_EQ(memoryCache()->deadSize(), 0u); | 312 EXPECT_EQ(0u, memoryCache()->deadSize()); |
313 ASSERT_EQ(memoryCache()->liveSize(), resource1->size() + resource2->size()); | 313 EXPECT_EQ(resource1->size() + resource2->size(), memoryCache()->liveSize()); |
314 | 314 |
315 // Removing the client from resource1 should result in all resources | 315 // Removing the client from resource1 should result in all resources |
316 // remaining in cache since the prune is deferred. | 316 // remaining in cache since the prune is deferred. |
317 client1->removeAsClient(); | 317 client1->removeAsClient(); |
318 ASSERT_GT(resource1->decodedSize(), 0u); | 318 EXPECT_GT(resource1->decodedSize(), 0u); |
319 ASSERT_GT(resource2->decodedSize(), 0u); | 319 EXPECT_GT(resource2->decodedSize(), 0u); |
320 ASSERT_EQ(memoryCache()->deadSize(), resource1->size()); | 320 EXPECT_EQ(resource1->size(), memoryCache()->deadSize()); |
321 ASSERT_EQ(memoryCache()->liveSize(), resource2->size()); | 321 EXPECT_EQ(resource2->size(), memoryCache()->liveSize()); |
322 ASSERT_TRUE(memoryCache()->contains(resource1)); | 322 EXPECT_TRUE(memoryCache()->contains(resource1)); |
323 ASSERT_TRUE(memoryCache()->contains(resource2)); | 323 EXPECT_TRUE(memoryCache()->contains(resource2)); |
324 | 324 |
325 // Removing the client from resource2 should result in immediate | 325 // Removing the client from resource2 should result in immediate |
326 // eviction of resource2 because we are over the prune deferral limit. | 326 // eviction of resource2 because we are over the prune deferral limit. |
327 client2->removeAsClient(); | 327 client2->removeAsClient(); |
328 ASSERT_GT(resource1->decodedSize(), 0u); | 328 EXPECT_GT(resource1->decodedSize(), 0u); |
329 ASSERT_GT(resource2->decodedSize(), 0u); | 329 EXPECT_GT(resource2->decodedSize(), 0u); |
330 ASSERT_EQ(memoryCache()->deadSize(), resource1->size()); | 330 EXPECT_EQ(resource1->size(), memoryCache()->deadSize()); |
331 ASSERT_EQ(memoryCache()->liveSize(), 0u); | 331 EXPECT_EQ(0u, memoryCache()->liveSize()); |
332 ASSERT_TRUE(memoryCache()->contains(resource1)); | 332 EXPECT_TRUE(memoryCache()->contains(resource1)); |
333 ASSERT_FALSE(memoryCache()->contains(resource2)); | 333 EXPECT_FALSE(memoryCache()->contains(resource2)); |
334 } | 334 } |
335 | 335 |
336 TEST_F(MemoryCacheTest, ClientRemoval_Basic) | 336 TEST_F(MemoryCacheTest, ClientRemoval_Basic) |
337 { | 337 { |
338 Resource* resource1 = | 338 Resource* resource1 = |
339 FakeDecodedResource::create(ResourceRequest("http://foo.com"), Resource:
:Raw); | 339 FakeDecodedResource::create(ResourceRequest("http://foo.com"), Resource:
:Raw); |
340 Resource* resource2 = | 340 Resource* resource2 = |
341 FakeDecodedResource::create(ResourceRequest("http://test/resource"), Res
ource::Raw); | 341 FakeDecodedResource::create(ResourceRequest("http://test/resource"), Res
ource::Raw); |
342 TestClientRemoval(resource1, resource2); | 342 TestClientRemoval(resource1, resource2); |
343 } | 343 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 memoryCache()->evictResources(); | 423 memoryCache()->evictResources(); |
424 EXPECT_FALSE(memoryCache()->contains(resource1)); | 424 EXPECT_FALSE(memoryCache()->contains(resource1)); |
425 EXPECT_FALSE(memoryCache()->contains(resource3)); | 425 EXPECT_FALSE(memoryCache()->contains(resource3)); |
426 } | 426 } |
427 | 427 |
428 TEST_F(MemoryCacheTest, FragmentIdentifier) | 428 TEST_F(MemoryCacheTest, FragmentIdentifier) |
429 { | 429 { |
430 const KURL url1 = KURL(ParsedURLString, "http://test/resource#foo"); | 430 const KURL url1 = KURL(ParsedURLString, "http://test/resource#foo"); |
431 FakeResource* resource = FakeResource::create(ResourceRequest(url1), Resourc
e::Raw); | 431 FakeResource* resource = FakeResource::create(ResourceRequest(url1), Resourc
e::Raw); |
432 memoryCache()->add(resource); | 432 memoryCache()->add(resource); |
433 ASSERT_TRUE(memoryCache()->contains(resource)); | 433 EXPECT_TRUE(memoryCache()->contains(resource)); |
434 | 434 |
435 EXPECT_EQ(resource, memoryCache()->resourceForURL(url1)); | 435 EXPECT_EQ(resource, memoryCache()->resourceForURL(url1)); |
436 | 436 |
437 const KURL url2 = MemoryCache::removeFragmentIdentifierIfNeeded(url1); | 437 const KURL url2 = MemoryCache::removeFragmentIdentifierIfNeeded(url1); |
438 EXPECT_EQ(resource, memoryCache()->resourceForURL(url2)); | 438 EXPECT_EQ(resource, memoryCache()->resourceForURL(url2)); |
439 } | 439 } |
440 | 440 |
441 TEST_F(MemoryCacheTest, MakeLiveAndDead) | 441 TEST_F(MemoryCacheTest, MakeLiveAndDead) |
442 { | 442 { |
443 FakeResource* resource = FakeResource::create(ResourceRequest("http://test/r
esource"), Resource::Raw); | 443 FakeResource* resource = FakeResource::create(ResourceRequest("http://test/r
esource"), Resource::Raw); |
444 const char data[6] = "abcde"; | 444 const char data[6] = "abcde"; |
445 resource->appendData(data, 5u); | 445 resource->appendData(data, 5u); |
446 memoryCache()->add(resource); | 446 memoryCache()->add(resource); |
447 | 447 |
448 const size_t deadSize = memoryCache()->deadSize(); | 448 const size_t deadSize = memoryCache()->deadSize(); |
449 const size_t liveSize = memoryCache()->liveSize(); | 449 const size_t liveSize = memoryCache()->liveSize(); |
450 | 450 |
451 memoryCache()->makeLive(resource); | 451 memoryCache()->makeLive(resource); |
452 ASSERT_EQ(deadSize, memoryCache()->deadSize() + resource->size()); | 452 EXPECT_EQ(deadSize, memoryCache()->deadSize() + resource->size()); |
453 ASSERT_EQ(liveSize, memoryCache()->liveSize() - resource->size()); | 453 EXPECT_EQ(liveSize, memoryCache()->liveSize() - resource->size()); |
454 | 454 |
455 memoryCache()->makeDead(resource); | 455 memoryCache()->makeDead(resource); |
456 ASSERT_EQ(deadSize, memoryCache()->deadSize()); | 456 EXPECT_EQ(deadSize, memoryCache()->deadSize()); |
457 ASSERT_EQ(liveSize, memoryCache()->liveSize()); | 457 EXPECT_EQ(liveSize, memoryCache()->liveSize()); |
458 } | 458 } |
459 | 459 |
460 TEST_F(MemoryCacheTest, RemoveURLFromCache) | 460 TEST_F(MemoryCacheTest, RemoveURLFromCache) |
461 { | 461 { |
462 const KURL url1 = KURL(ParsedURLString, "http://test/resource1"); | 462 const KURL url1 = KURL(ParsedURLString, "http://test/resource1"); |
463 FakeResource* resource1 = FakeResource::create(ResourceRequest(url1), Resour
ce::Raw); | 463 FakeResource* resource1 = FakeResource::create(ResourceRequest(url1), Resour
ce::Raw); |
464 memoryCache()->add(resource1); | 464 memoryCache()->add(resource1); |
465 ASSERT_TRUE(memoryCache()->contains(resource1)); | 465 EXPECT_TRUE(memoryCache()->contains(resource1)); |
466 | 466 |
467 memoryCache()->removeURLFromCache(url1); | 467 memoryCache()->removeURLFromCache(url1); |
468 EXPECT_FALSE(memoryCache()->contains(resource1)); | 468 EXPECT_FALSE(memoryCache()->contains(resource1)); |
469 | 469 |
470 const KURL url2 = KURL(ParsedURLString, "http://test/resource2#foo"); | 470 const KURL url2 = KURL(ParsedURLString, "http://test/resource2#foo"); |
471 FakeResource* resource2 = FakeResource::create(ResourceRequest(url2), Resour
ce::Raw); | 471 FakeResource* resource2 = FakeResource::create(ResourceRequest(url2), Resour
ce::Raw); |
472 memoryCache()->add(resource2); | 472 memoryCache()->add(resource2); |
473 ASSERT_TRUE(memoryCache()->contains(resource2)); | 473 EXPECT_TRUE(memoryCache()->contains(resource2)); |
474 | 474 |
475 memoryCache()->removeURLFromCache(url2); | 475 memoryCache()->removeURLFromCache(url2); |
476 EXPECT_FALSE(memoryCache()->contains(resource2)); | 476 EXPECT_FALSE(memoryCache()->contains(resource2)); |
477 } | 477 } |
478 | 478 |
479 } // namespace blink | 479 } // namespace blink |
OLD | NEW |