Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp

Issue 2584423002: Loading: move core/fetch to platform/loader/fetch (Closed)
Patch Set: another try Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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/RawResource.h" 31 #include "platform/loader/fetch/RawResource.h"
32 32
33 #include "core/fetch/MemoryCache.h"
34 #include "core/fetch/ResourceFetcher.h"
35 #include "platform/SharedBuffer.h" 33 #include "platform/SharedBuffer.h"
36 #include "platform/heap/Handle.h" 34 #include "platform/heap/Handle.h"
35 #include "platform/loader/fetch/MemoryCache.h"
36 #include "platform/loader/fetch/ResourceFetcher.h"
37 #include "platform/network/ResourceTimingInfo.h" 37 #include "platform/network/ResourceTimingInfo.h"
38 #include "platform/testing/TestingPlatformSupport.h"
38 #include "platform/testing/UnitTestHelpers.h" 39 #include "platform/testing/UnitTestHelpers.h"
39 #include "public/platform/Platform.h" 40 #include "public/platform/Platform.h"
40 #include "public/platform/WebScheduler.h" 41 #include "public/platform/WebScheduler.h"
41 #include "public/platform/WebThread.h" 42 #include "public/platform/WebThread.h"
42 #include "public/platform/WebURL.h" 43 #include "public/platform/WebURL.h"
43 #include "public/platform/WebURLResponse.h" 44 #include "public/platform/WebURLResponse.h"
44 #include "testing/gmock/include/gmock/gmock.h" 45 #include "testing/gmock/include/gmock/gmock.h"
45 #include "testing/gtest/include/gtest/gtest.h" 46 #include "testing/gtest/include/gtest/gtest.h"
46 47
47 namespace blink { 48 namespace blink {
48 49
49 using ::testing::InSequence; 50 using ::testing::InSequence;
50 using ::testing::_; 51 using ::testing::_;
51 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>; 52 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>;
52 53
54 class RawResourceTest : public ::testing::Test {
55 public:
56 RawResourceTest() {}
57 ~RawResourceTest() override {}
58
59 protected:
60 ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
61 m_platform;
62
63 private:
64 DISALLOW_COPY_AND_ASSIGN(RawResourceTest);
65 };
66
53 class MockRawResourceClient 67 class MockRawResourceClient
54 : public GarbageCollectedFinalized<MockRawResourceClient>, 68 : public GarbageCollectedFinalized<MockRawResourceClient>,
55 public RawResourceClient { 69 public RawResourceClient {
56 USING_GARBAGE_COLLECTED_MIXIN(MockRawResourceClient); 70 USING_GARBAGE_COLLECTED_MIXIN(MockRawResourceClient);
57 71
58 public: 72 public:
59 static MockRawResourceClient* create() { 73 static MockRawResourceClient* create() {
60 return new ::testing::StrictMock<MockRawResourceClient>; 74 return new ::testing::StrictMock<MockRawResourceClient>;
61 } 75 }
62 76
(...skipping 23 matching lines...) Expand all
86 } 100 }
87 101
88 String debugName() const override { return "MockRawResourceClient"; } 102 String debugName() const override { return "MockRawResourceClient"; }
89 103
90 DEFINE_INLINE_VIRTUAL_TRACE() { RawResourceClient::trace(visitor); } 104 DEFINE_INLINE_VIRTUAL_TRACE() { RawResourceClient::trace(visitor); }
91 105
92 protected: 106 protected:
93 MockRawResourceClient() = default; 107 MockRawResourceClient() = default;
94 }; 108 };
95 109
96 TEST(RawResourceTest, DontIgnoreAcceptForCacheReuse) { 110 TEST_F(RawResourceTest, DontIgnoreAcceptForCacheReuse) {
97 ResourceRequest jpegRequest; 111 ResourceRequest jpegRequest;
98 jpegRequest.setHTTPAccept("image/jpeg"); 112 jpegRequest.setHTTPAccept("image/jpeg");
99 113
100 RawResource* jpegResource(RawResource::create(jpegRequest, Resource::Raw)); 114 RawResource* jpegResource(RawResource::create(jpegRequest, Resource::Raw));
101 115
102 ResourceRequest pngRequest; 116 ResourceRequest pngRequest;
103 pngRequest.setHTTPAccept("image/png"); 117 pngRequest.setHTTPAccept("image/png");
104 118
105 EXPECT_FALSE(jpegResource->canReuse(pngRequest)); 119 EXPECT_FALSE(jpegResource->canReuse(pngRequest));
106 } 120 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 visitor->trace(m_dummyClient); 185 visitor->trace(m_dummyClient);
172 visitor->trace(m_resource); 186 visitor->trace(m_resource);
173 RawResourceClient::trace(visitor); 187 RawResourceClient::trace(visitor);
174 } 188 }
175 189
176 private: 190 private:
177 Member<DummyClient> m_dummyClient; 191 Member<DummyClient> m_dummyClient;
178 Member<Resource> m_resource; 192 Member<Resource> m_resource;
179 }; 193 };
180 194
181 TEST(RawResourceTest, RevalidationSucceeded) { 195 TEST_F(RawResourceTest, RevalidationSucceeded) {
182 Resource* resource = 196 Resource* resource =
183 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); 197 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
184 ResourceResponse response; 198 ResourceResponse response;
185 response.setHTTPStatusCode(200); 199 response.setHTTPStatusCode(200);
186 resource->responseReceived(response, nullptr); 200 resource->responseReceived(response, nullptr);
187 const char data[5] = "abcd"; 201 const char data[5] = "abcd";
188 resource->appendData(data, 4); 202 resource->appendData(data, 4);
189 resource->finish(); 203 resource->finish();
190 memoryCache()->add(resource); 204 memoryCache()->add(resource);
191 205
(...skipping 12 matching lines...) Expand all
204 EXPECT_EQ(resource, memoryCache()->resourceForURL( 218 EXPECT_EQ(resource, memoryCache()->resourceForURL(
205 KURL(ParsedURLString, "data:text/html,"))); 219 KURL(ParsedURLString, "data:text/html,")));
206 memoryCache()->remove(resource); 220 memoryCache()->remove(resource);
207 221
208 resource->removeClient(client); 222 resource->removeClient(client);
209 EXPECT_FALSE(resource->isAlive()); 223 EXPECT_FALSE(resource->isAlive());
210 EXPECT_FALSE(client->called()); 224 EXPECT_FALSE(client->called());
211 EXPECT_EQ("abcd", String(client->data().data(), client->data().size())); 225 EXPECT_EQ("abcd", String(client->data().data(), client->data().size()));
212 } 226 }
213 227
214 TEST(RawResourceTest, RevalidationSucceededForResourceWithoutBody) { 228 TEST_F(RawResourceTest, RevalidationSucceededForResourceWithoutBody) {
215 Resource* resource = 229 Resource* resource =
216 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); 230 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
217 ResourceResponse response; 231 ResourceResponse response;
218 response.setHTTPStatusCode(200); 232 response.setHTTPStatusCode(200);
219 resource->responseReceived(response, nullptr); 233 resource->responseReceived(response, nullptr);
220 resource->finish(); 234 resource->finish();
221 memoryCache()->add(resource); 235 memoryCache()->add(resource);
222 236
223 // Simulate a successful revalidation. 237 // Simulate a successful revalidation.
224 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); 238 resource->setRevalidatingRequest(ResourceRequest("data:text/html,"));
(...skipping 10 matching lines...) Expand all
235 EXPECT_EQ(resource, memoryCache()->resourceForURL( 249 EXPECT_EQ(resource, memoryCache()->resourceForURL(
236 KURL(ParsedURLString, "data:text/html,"))); 250 KURL(ParsedURLString, "data:text/html,")));
237 memoryCache()->remove(resource); 251 memoryCache()->remove(resource);
238 252
239 resource->removeClient(client); 253 resource->removeClient(client);
240 EXPECT_FALSE(resource->isAlive()); 254 EXPECT_FALSE(resource->isAlive());
241 EXPECT_FALSE(client->called()); 255 EXPECT_FALSE(client->called());
242 EXPECT_EQ(0u, client->data().size()); 256 EXPECT_EQ(0u, client->data().size());
243 } 257 }
244 258
245 TEST(RawResourceTest, RevalidationSucceededUpdateHeaders) { 259 TEST_F(RawResourceTest, RevalidationSucceededUpdateHeaders) {
246 Resource* resource = 260 Resource* resource =
247 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); 261 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
248 ResourceResponse response; 262 ResourceResponse response;
249 response.setHTTPStatusCode(200); 263 response.setHTTPStatusCode(200);
250 response.addHTTPHeaderField("keep-alive", "keep-alive value"); 264 response.addHTTPHeaderField("keep-alive", "keep-alive value");
251 response.addHTTPHeaderField("expires", "expires value"); 265 response.addHTTPHeaderField("expires", "expires value");
252 response.addHTTPHeaderField("last-modified", "last-modified value"); 266 response.addHTTPHeaderField("last-modified", "last-modified value");
253 response.addHTTPHeaderField("proxy-authenticate", "proxy-authenticate value"); 267 response.addHTTPHeaderField("proxy-authenticate", "proxy-authenticate value");
254 response.addHTTPHeaderField("proxy-connection", "proxy-connection value"); 268 response.addHTTPHeaderField("proxy-connection", "proxy-connection value");
255 response.addHTTPHeaderField("x-custom", "custom value"); 269 response.addHTTPHeaderField("x-custom", "custom value");
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 EXPECT_EQ("updated", resource->response().httpHeaderField("x-custom")); 322 EXPECT_EQ("updated", resource->response().httpHeaderField("x-custom"));
309 323
310 memoryCache()->remove(resource); 324 memoryCache()->remove(resource);
311 325
312 resource->removeClient(client); 326 resource->removeClient(client);
313 EXPECT_FALSE(resource->isAlive()); 327 EXPECT_FALSE(resource->isAlive());
314 EXPECT_FALSE(client->called()); 328 EXPECT_FALSE(client->called());
315 EXPECT_EQ(0u, client->data().size()); 329 EXPECT_EQ(0u, client->data().size());
316 } 330 }
317 331
318 TEST(RawResourceTest, RedirectDuringRevalidation) { 332 TEST_F(RawResourceTest, RedirectDuringRevalidation) {
319 Resource* resource = RawResource::create( 333 Resource* resource = RawResource::create(
320 ResourceRequest("https://example.com/1"), Resource::Raw); 334 ResourceRequest("https://example.com/1"), Resource::Raw);
321 ResourceResponse response; 335 ResourceResponse response;
322 response.setURL(KURL(ParsedURLString, "https://example.com/1")); 336 response.setURL(KURL(ParsedURLString, "https://example.com/1"));
323 response.setHTTPStatusCode(200); 337 response.setHTTPStatusCode(200);
324 resource->responseReceived(response, nullptr); 338 resource->responseReceived(response, nullptr);
325 const char data[5] = "abcd"; 339 const char data[5] = "abcd";
326 resource->appendData(data, 4); 340 resource->appendData(data, 4);
327 resource->finish(); 341 resource->finish();
328 memoryCache()->add(resource); 342 memoryCache()->add(resource);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 392
379 EXPECT_TRUE(client->called()); 393 EXPECT_TRUE(client->called());
380 EXPECT_EQ(1, client->numberOfRedirectsReceived()); 394 EXPECT_EQ(1, client->numberOfRedirectsReceived());
381 EXPECT_EQ("xyz", String(client->data().data(), client->data().size())); 395 EXPECT_EQ("xyz", String(client->data().data(), client->data().size()));
382 396
383 // Test the case where a client is added after revalidation is completed. 397 // Test the case where a client is added after revalidation is completed.
384 Persistent<DummyClient> client2 = new DummyClient; 398 Persistent<DummyClient> client2 = new DummyClient;
385 resource->addClient(client2); 399 resource->addClient(client2);
386 400
387 // Because RawResourceClient is added asynchronously, 401 // Because RawResourceClient is added asynchronously,
388 // |runPendingTasks()| is called to make |client2| to be notified. 402 // |runUntilIdle()| is called to make |client2| to be notified.
389 testing::runPendingTasks(); 403 m_platform->runUntilIdle();
390 404
391 EXPECT_TRUE(client2->called()); 405 EXPECT_TRUE(client2->called());
392 EXPECT_EQ(1, client2->numberOfRedirectsReceived()); 406 EXPECT_EQ(1, client2->numberOfRedirectsReceived());
393 EXPECT_EQ("xyz", String(client2->data().data(), client2->data().size())); 407 EXPECT_EQ("xyz", String(client2->data().data(), client2->data().size()));
394 408
395 memoryCache()->remove(resource); 409 memoryCache()->remove(resource);
396 410
397 resource->removeClient(client); 411 resource->removeClient(client);
398 resource->removeClient(client2); 412 resource->removeClient(client2);
399 EXPECT_FALSE(resource->isAlive()); 413 EXPECT_FALSE(resource->isAlive());
400 } 414 }
401 415
402 TEST(RawResourceTest, AddClientDuringCallback) { 416 TEST_F(RawResourceTest, AddClientDuringCallback) {
403 Resource* raw = 417 Resource* raw =
404 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); 418 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
405 419
406 // Create a non-null response. 420 // Create a non-null response.
407 ResourceResponse response = raw->response(); 421 ResourceResponse response = raw->response();
408 response.setURL(KURL(ParsedURLString, "http://600.613/")); 422 response.setURL(KURL(ParsedURLString, "http://600.613/"));
409 raw->setResponse(response); 423 raw->setResponse(response);
410 raw->finish(); 424 raw->finish();
411 EXPECT_FALSE(raw->response().isNull()); 425 EXPECT_FALSE(raw->response().isNull());
412 426
413 Persistent<DummyClient> dummyClient = new DummyClient(); 427 Persistent<DummyClient> dummyClient = new DummyClient();
414 Persistent<AddingClient> addingClient = 428 Persistent<AddingClient> addingClient =
415 new AddingClient(dummyClient.get(), raw); 429 new AddingClient(dummyClient.get(), raw);
416 raw->addClient(addingClient); 430 raw->addClient(addingClient);
417 testing::runPendingTasks(); 431 m_platform->runUntilIdle();
418 raw->removeClient(addingClient); 432 raw->removeClient(addingClient);
419 EXPECT_FALSE(dummyClient->called()); 433 EXPECT_FALSE(dummyClient->called());
420 EXPECT_FALSE(raw->isAlive()); 434 EXPECT_FALSE(raw->isAlive());
421 } 435 }
422 436
423 // This client removes another client when notified. 437 // This client removes another client when notified.
424 class RemovingClient : public GarbageCollectedFinalized<RemovingClient>, 438 class RemovingClient : public GarbageCollectedFinalized<RemovingClient>,
425 public RawResourceClient { 439 public RawResourceClient {
426 USING_GARBAGE_COLLECTED_MIXIN(RemovingClient); 440 USING_GARBAGE_COLLECTED_MIXIN(RemovingClient);
427 441
(...skipping 10 matching lines...) Expand all
438 String debugName() const override { return "RemovingClient"; } 452 String debugName() const override { return "RemovingClient"; }
439 DEFINE_INLINE_TRACE() { 453 DEFINE_INLINE_TRACE() {
440 visitor->trace(m_dummyClient); 454 visitor->trace(m_dummyClient);
441 RawResourceClient::trace(visitor); 455 RawResourceClient::trace(visitor);
442 } 456 }
443 457
444 private: 458 private:
445 Member<DummyClient> m_dummyClient; 459 Member<DummyClient> m_dummyClient;
446 }; 460 };
447 461
448 TEST(RawResourceTest, RemoveClientDuringCallback) { 462 TEST_F(RawResourceTest, RemoveClientDuringCallback) {
449 Resource* raw = 463 Resource* raw =
450 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); 464 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
451 465
452 // Create a non-null response. 466 // Create a non-null response.
453 ResourceResponse response = raw->response(); 467 ResourceResponse response = raw->response();
454 response.setURL(KURL(ParsedURLString, "http://600.613/")); 468 response.setURL(KURL(ParsedURLString, "http://600.613/"));
455 raw->setResponse(response); 469 raw->setResponse(response);
456 raw->finish(); 470 raw->finish();
457 EXPECT_FALSE(raw->response().isNull()); 471 EXPECT_FALSE(raw->response().isNull());
458 472
459 Persistent<DummyClient> dummyClient = new DummyClient(); 473 Persistent<DummyClient> dummyClient = new DummyClient();
460 Persistent<RemovingClient> removingClient = 474 Persistent<RemovingClient> removingClient =
461 new RemovingClient(dummyClient.get()); 475 new RemovingClient(dummyClient.get());
462 raw->addClient(dummyClient); 476 raw->addClient(dummyClient);
463 raw->addClient(removingClient); 477 raw->addClient(removingClient);
464 testing::runPendingTasks(); 478 m_platform->runUntilIdle();
465 EXPECT_FALSE(raw->isAlive()); 479 EXPECT_FALSE(raw->isAlive());
466 } 480 }
467 481
468 // ResourceClient can be added to |m_clients| asynchronously via 482 // ResourceClient can be added to |m_clients| asynchronously via
469 // ResourceCallback. When revalidation is started after ResourceCallback is 483 // ResourceCallback. When revalidation is started after ResourceCallback is
470 // scheduled and before it is dispatched, ResourceClient's callbacks should be 484 // scheduled and before it is dispatched, ResourceClient's callbacks should be
471 // called appropriately. 485 // called appropriately.
472 TEST(RawResourceTest, StartFailedRevalidationWhileResourceCallback) { 486 TEST_F(RawResourceTest, StartFailedRevalidationWhileResourceCallback) {
473 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 487 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
474 488
475 ResourceResponse response; 489 ResourceResponse response;
476 response.setURL(url); 490 response.setURL(url);
477 response.setHTTPStatusCode(200); 491 response.setHTTPStatusCode(200);
478 492
479 ResourceResponse newResponse; 493 ResourceResponse newResponse;
480 newResponse.setURL(url); 494 newResponse.setURL(url);
481 newResponse.setHTTPStatusCode(201); 495 newResponse.setHTTPStatusCode(201);
482 496
(...skipping 15 matching lines...) Expand all
498 // Add a client. No callbacks are made here because ResourceCallback is 512 // Add a client. No callbacks are made here because ResourceCallback is
499 // scheduled asynchronously. 513 // scheduled asynchronously.
500 resource->addClient(client); 514 resource->addClient(client);
501 EXPECT_FALSE(resource->isCacheValidator()); 515 EXPECT_FALSE(resource->isCacheValidator());
502 516
503 // Start revalidation. 517 // Start revalidation.
504 resource->setRevalidatingRequest(ResourceRequest(url)); 518 resource->setRevalidatingRequest(ResourceRequest(url));
505 EXPECT_TRUE(resource->isCacheValidator()); 519 EXPECT_TRUE(resource->isCacheValidator());
506 520
507 // Make the ResourceCallback to be dispatched. 521 // Make the ResourceCallback to be dispatched.
508 testing::runPendingTasks(); 522 m_platform->runUntilIdle();
509 523
510 checkpoint.Call(1); 524 checkpoint.Call(1);
511 525
512 resource->responseReceived(newResponse, nullptr); 526 resource->responseReceived(newResponse, nullptr);
513 resource->appendData("newData", 8); 527 resource->appendData("newData", 8);
514 } 528 }
515 529
516 TEST(RawResourceTest, StartSuccessfulRevalidationWhileResourceCallback) { 530 TEST_F(RawResourceTest, StartSuccessfulRevalidationWhileResourceCallback) {
517 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 531 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
518 532
519 ResourceResponse response; 533 ResourceResponse response;
520 response.setURL(url); 534 response.setURL(url);
521 response.setHTTPStatusCode(200); 535 response.setHTTPStatusCode(200);
522 536
523 ResourceResponse newResponse; 537 ResourceResponse newResponse;
524 newResponse.setURL(url); 538 newResponse.setURL(url);
525 newResponse.setHTTPStatusCode(304); 539 newResponse.setHTTPStatusCode(304);
526 540
(...skipping 15 matching lines...) Expand all
542 // Add a client. No callbacks are made here because ResourceCallback is 556 // Add a client. No callbacks are made here because ResourceCallback is
543 // scheduled asynchronously. 557 // scheduled asynchronously.
544 resource->addClient(client); 558 resource->addClient(client);
545 EXPECT_FALSE(resource->isCacheValidator()); 559 EXPECT_FALSE(resource->isCacheValidator());
546 560
547 // Start revalidation. 561 // Start revalidation.
548 resource->setRevalidatingRequest(ResourceRequest(url)); 562 resource->setRevalidatingRequest(ResourceRequest(url));
549 EXPECT_TRUE(resource->isCacheValidator()); 563 EXPECT_TRUE(resource->isCacheValidator());
550 564
551 // Make the ResourceCallback to be dispatched. 565 // Make the ResourceCallback to be dispatched.
552 testing::runPendingTasks(); 566 m_platform->runUntilIdle();
553 567
554 checkpoint.Call(1); 568 checkpoint.Call(1);
555 569
556 resource->responseReceived(newResponse, nullptr); 570 resource->responseReceived(newResponse, nullptr);
557 } 571 }
558 572
559 TEST(RawResourceTest, CanReuseDevToolsEmulateNetworkConditionsClientIdHeader) { 573 TEST_F(RawResourceTest,
574 CanReuseDevToolsEmulateNetworkConditionsClientIdHeader) {
560 ResourceRequest request("data:text/html,"); 575 ResourceRequest request("data:text/html,");
561 request.setHTTPHeaderField( 576 request.setHTTPHeaderField(
562 HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id, "Foo"); 577 HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id, "Foo");
563 Resource* raw = RawResource::create(request, Resource::Raw); 578 Resource* raw = RawResource::create(request, Resource::Raw);
564 EXPECT_TRUE(raw->canReuse(ResourceRequest("data:text/html,"))); 579 EXPECT_TRUE(raw->canReuse(ResourceRequest("data:text/html,")));
565 } 580 }
566 581
567 } // namespace blink 582 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698