| 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #include "platform/loader/fetch/MockResource.h" | 44 #include "platform/loader/fetch/MockResource.h" |
| 45 #include "platform/loader/fetch/MockResourceClient.h" | 45 #include "platform/loader/fetch/MockResourceClient.h" |
| 46 #include "platform/loader/fetch/RawResource.h" | 46 #include "platform/loader/fetch/RawResource.h" |
| 47 #include "platform/loader/fetch/ResourceLoader.h" | 47 #include "platform/loader/fetch/ResourceLoader.h" |
| 48 #include "platform/network/ResourceError.h" | 48 #include "platform/network/ResourceError.h" |
| 49 #include "platform/network/ResourceRequest.h" | 49 #include "platform/network/ResourceRequest.h" |
| 50 #include "platform/network/ResourceTimingInfo.h" | 50 #include "platform/network/ResourceTimingInfo.h" |
| 51 #include "platform/scheduler/test/fake_web_task_runner.h" | 51 #include "platform/scheduler/test/fake_web_task_runner.h" |
| 52 #include "platform/testing/TestingPlatformSupport.h" | 52 #include "platform/testing/TestingPlatformSupport.h" |
| 53 #include "platform/testing/URLTestHelpers.h" | 53 #include "platform/testing/URLTestHelpers.h" |
| 54 #include "platform/testing/UnitTestHelpers.h" |
| 54 #include "platform/testing/weburl_loader_mock.h" | 55 #include "platform/testing/weburl_loader_mock.h" |
| 55 #include "platform/testing/weburl_loader_mock_factory_impl.h" | 56 #include "platform/testing/weburl_loader_mock_factory_impl.h" |
| 56 #include "platform/weborigin/KURL.h" | 57 #include "platform/weborigin/KURL.h" |
| 57 #include "public/platform/Platform.h" | 58 #include "public/platform/Platform.h" |
| 58 #include "public/platform/WebURLLoader.h" | 59 #include "public/platform/WebURLLoader.h" |
| 59 #include "public/platform/WebURLLoaderMockFactory.h" | 60 #include "public/platform/WebURLLoaderMockFactory.h" |
| 60 #include "public/platform/WebURLResponse.h" | 61 #include "public/platform/WebURLResponse.h" |
| 61 #include "testing/gtest/include/gtest/gtest.h" | 62 #include "testing/gtest/include/gtest/gtest.h" |
| 62 #include "wtf/Allocator.h" | 63 #include "wtf/Allocator.h" |
| 63 #include "wtf/PtrUtil.h" | 64 #include "wtf/PtrUtil.h" |
| 64 #include "wtf/Vector.h" | 65 #include "wtf/Vector.h" |
| 65 #include <memory> | 66 #include <memory> |
| 66 | 67 |
| 67 namespace blink { | 68 namespace blink { |
| 68 | 69 |
| 69 namespace { | 70 namespace { |
| 71 |
| 70 constexpr char kTestResourceFilename[] = "white-1x1.png"; | 72 constexpr char kTestResourceFilename[] = "white-1x1.png"; |
| 71 constexpr char kTestResourceMimeType[] = "image/png"; | 73 constexpr char kTestResourceMimeType[] = "image/png"; |
| 72 constexpr int kTestResourceSize = 103; // size of web/tests/data/white-1x1.png | 74 constexpr int kTestResourceSize = 103; // size of white-1x1.png |
| 75 |
| 76 void registerMockedURLLoadWithCustomResponse(const KURL& url, |
| 77 const ResourceResponse& response) { |
| 78 URLTestHelpers::registerMockedURLLoadWithCustomResponse( |
| 79 url, testing::platformTestDataPath(kTestResourceFilename), |
| 80 WrappedResourceResponse(response)); |
| 73 } | 81 } |
| 74 | 82 |
| 83 void registerMockedURLLoad(const KURL& url) { |
| 84 URLTestHelpers::registerMockedURLLoad( |
| 85 url, testing::platformTestDataPath(kTestResourceFilename), |
| 86 kTestResourceMimeType); |
| 87 } |
| 88 |
| 89 } // namespace |
| 90 |
| 75 class ResourceFetcherTest : public ::testing::Test { | 91 class ResourceFetcherTest : public ::testing::Test { |
| 76 public: | 92 public: |
| 77 ResourceFetcherTest() = default; | 93 ResourceFetcherTest() = default; |
| 78 ~ResourceFetcherTest() override { memoryCache()->evictResources(); } | 94 ~ResourceFetcherTest() override { memoryCache()->evictResources(); } |
| 79 | 95 |
| 80 protected: | 96 protected: |
| 81 MockFetchContext* context() { return m_platform->context(); } | 97 MockFetchContext* context() { return m_platform->context(); } |
| 82 | 98 |
| 83 ScopedTestingPlatformSupport<FetchTestingPlatformSupport> m_platform; | 99 ScopedTestingPlatformSupport<FetchTestingPlatformSupport> m_platform; |
| 84 | 100 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 107 } | 123 } |
| 108 | 124 |
| 109 TEST_F(ResourceFetcherTest, UseExistingResource) { | 125 TEST_F(ResourceFetcherTest, UseExistingResource) { |
| 110 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 126 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 111 | 127 |
| 112 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); | 128 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 113 ResourceResponse response; | 129 ResourceResponse response; |
| 114 response.setURL(url); | 130 response.setURL(url); |
| 115 response.setHTTPStatusCode(200); | 131 response.setHTTPStatusCode(200); |
| 116 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 132 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 117 URLTestHelpers::registerMockedURLLoadWithCustomResponse( | 133 registerMockedURLLoadWithCustomResponse(url, response); |
| 118 url, kTestResourceFilename, WebString::fromUTF8(""), | |
| 119 WrappedResourceResponse(response)); | |
| 120 | 134 |
| 121 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); | 135 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); |
| 122 Resource* resource = MockResource::fetch(fetchRequest, fetcher); | 136 Resource* resource = MockResource::fetch(fetchRequest, fetcher); |
| 123 ASSERT_TRUE(resource); | 137 ASSERT_TRUE(resource); |
| 124 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 138 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 125 EXPECT_TRUE(resource->isLoaded()); | 139 EXPECT_TRUE(resource->isLoaded()); |
| 126 EXPECT_TRUE(memoryCache()->contains(resource)); | 140 EXPECT_TRUE(memoryCache()->contains(resource)); |
| 127 | 141 |
| 128 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); | 142 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); |
| 129 EXPECT_EQ(resource, newResource); | 143 EXPECT_EQ(resource, newResource); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 232 |
| 219 TEST_F(ResourceFetcherTest, VaryResource) { | 233 TEST_F(ResourceFetcherTest, VaryResource) { |
| 220 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 234 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 221 | 235 |
| 222 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); | 236 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 223 ResourceResponse response; | 237 ResourceResponse response; |
| 224 response.setURL(url); | 238 response.setURL(url); |
| 225 response.setHTTPStatusCode(200); | 239 response.setHTTPStatusCode(200); |
| 226 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 240 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 227 response.setHTTPHeaderField(HTTPNames::Vary, "*"); | 241 response.setHTTPHeaderField(HTTPNames::Vary, "*"); |
| 228 URLTestHelpers::registerMockedURLLoadWithCustomResponse( | 242 registerMockedURLLoadWithCustomResponse(url, response); |
| 229 url, kTestResourceFilename, WebString::fromUTF8(""), | |
| 230 WrappedResourceResponse(response)); | |
| 231 | 243 |
| 232 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); | 244 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); |
| 233 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); | 245 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); |
| 234 ASSERT_TRUE(resource); | 246 ASSERT_TRUE(resource); |
| 235 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 247 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 236 ASSERT_TRUE(resource->hasVaryHeader()); | 248 ASSERT_TRUE(resource->hasVaryHeader()); |
| 237 | 249 |
| 238 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); | 250 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); |
| 239 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); | 251 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); |
| 240 EXPECT_EQ(resource, newResource); | 252 EXPECT_EQ(resource, newResource); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 bool m_notifyFinishedCalled; | 286 bool m_notifyFinishedCalled; |
| 275 }; | 287 }; |
| 276 | 288 |
| 277 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { | 289 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { |
| 278 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 290 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 279 ResourceResponse response; | 291 ResourceResponse response; |
| 280 response.setURL(url); | 292 response.setURL(url); |
| 281 response.setHTTPStatusCode(200); | 293 response.setHTTPStatusCode(200); |
| 282 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 294 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 283 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890"); | 295 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890"); |
| 284 URLTestHelpers::registerMockedURLLoadWithCustomResponse( | 296 registerMockedURLLoadWithCustomResponse(url, response); |
| 285 url, kTestResourceFilename, WebString::fromUTF8(""), | |
| 286 WrappedResourceResponse(response)); | |
| 287 ResourceFetcher* fetcher1 = ResourceFetcher::create(context()); | 297 ResourceFetcher* fetcher1 = ResourceFetcher::create(context()); |
| 288 ResourceRequest request1(url); | 298 ResourceRequest request1(url); |
| 289 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); | 299 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); |
| 290 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); | 300 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); |
| 291 Resource* resource1 = MockResource::fetch(fetchRequest1, fetcher1); | 301 Resource* resource1 = MockResource::fetch(fetchRequest1, fetcher1); |
| 292 Persistent<RequestSameResourceOnComplete> client = | 302 Persistent<RequestSameResourceOnComplete> client = |
| 293 new RequestSameResourceOnComplete(resource1); | 303 new RequestSameResourceOnComplete(resource1); |
| 294 resource1->addClient(client); | 304 resource1->addClient(client); |
| 295 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 305 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 296 EXPECT_TRUE(client->notifyFinishedCalled()); | 306 EXPECT_TRUE(client->notifyFinishedCalled()); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 String debugName() const override { return "ServeRequestsOnCompleteClient"; } | 362 String debugName() const override { return "ServeRequestsOnCompleteClient"; } |
| 353 }; | 363 }; |
| 354 | 364 |
| 355 // Regression test for http://crbug.com/594072. | 365 // Regression test for http://crbug.com/594072. |
| 356 // This emulates a modal dialog triggering a nested run loop inside | 366 // This emulates a modal dialog triggering a nested run loop inside |
| 357 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its | 367 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its |
| 358 // WebURLLoader before notifying its clients, a nested run loop may send a | 368 // WebURLLoader before notifying its clients, a nested run loop may send a |
| 359 // network response, leading to an invalid state transition in ResourceLoader. | 369 // network response, leading to an invalid state transition in ResourceLoader. |
| 360 TEST_F(ResourceFetcherTest, ResponseOnCancel) { | 370 TEST_F(ResourceFetcherTest, ResponseOnCancel) { |
| 361 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 371 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 362 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, | 372 registerMockedURLLoad(url); |
| 363 kTestResourceMimeType); | |
| 364 | 373 |
| 365 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 374 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 366 ResourceRequest resourceRequest(url); | 375 ResourceRequest resourceRequest(url); |
| 367 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); | 376 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| 368 FetchRequest fetchRequest = | 377 FetchRequest fetchRequest = |
| 369 FetchRequest(resourceRequest, FetchInitiatorInfo()); | 378 FetchRequest(resourceRequest, FetchInitiatorInfo()); |
| 370 Resource* resource = RawResource::fetch(fetchRequest, fetcher); | 379 Resource* resource = RawResource::fetch(fetchRequest, fetcher); |
| 371 Persistent<ServeRequestsOnCompleteClient> client = | 380 Persistent<ServeRequestsOnCompleteClient> client = |
| 372 new ServeRequestsOnCompleteClient(); | 381 new ServeRequestsOnCompleteClient(); |
| 373 resource->addClient(client); | 382 resource->addClient(client); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 389 redirectResponse.setURL(redirectURL); | 398 redirectResponse.setURL(redirectURL); |
| 390 redirectResponse.setHTTPStatusCode(301); | 399 redirectResponse.setHTTPStatusCode(301); |
| 391 redirectResponse.setHTTPHeaderField(HTTPNames::Location, toURL); | 400 redirectResponse.setHTTPHeaderField(HTTPNames::Location, toURL); |
| 392 redirectResponse.setEncodedDataLength(kRedirectResponseOverheadBytes); | 401 redirectResponse.setEncodedDataLength(kRedirectResponseOverheadBytes); |
| 393 Platform::current()->getURLLoaderMockFactory()->registerURL( | 402 Platform::current()->getURLLoaderMockFactory()->registerURL( |
| 394 redirectURL, redirectResponse, ""); | 403 redirectURL, redirectResponse, ""); |
| 395 } | 404 } |
| 396 | 405 |
| 397 void registerFinalResource(const WebString& url) { | 406 void registerFinalResource(const WebString& url) { |
| 398 KURL finalURL(ParsedURLString, url); | 407 KURL finalURL(ParsedURLString, url); |
| 399 URLTestHelpers::registerMockedURLLoad(finalURL, kTestResourceFilename); | 408 registerMockedURLLoad(finalURL); |
| 400 } | 409 } |
| 401 | 410 |
| 402 void request(const WebString& url) { | 411 void request(const WebString& url) { |
| 403 ResourceFetcher* fetcher = ResourceFetcher::create(m_context); | 412 ResourceFetcher* fetcher = ResourceFetcher::create(m_context); |
| 404 ResourceRequest resourceRequest(url); | 413 ResourceRequest resourceRequest(url); |
| 405 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); | 414 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| 406 FetchRequest fetchRequest = | 415 FetchRequest fetchRequest = |
| 407 FetchRequest(resourceRequest, FetchInitiatorInfo()); | 416 FetchRequest(resourceRequest, FetchInitiatorInfo()); |
| 408 RawResource::fetch(fetchRequest, fetcher); | 417 RawResource::fetch(fetchRequest, fetcher); |
| 409 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 418 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 446 requester.registerRedirect(redirectURL2, redirectURL3); | 455 requester.registerRedirect(redirectURL2, redirectURL3); |
| 447 requester.registerRedirect(redirectURL3, finalURL); | 456 requester.registerRedirect(redirectURL3, finalURL); |
| 448 requester.registerFinalResource(finalURL); | 457 requester.registerFinalResource(finalURL); |
| 449 requester.request(redirectURL1); | 458 requester.request(redirectURL1); |
| 450 | 459 |
| 451 EXPECT_EQ(kTestResourceSize, context()->getTransferSize()); | 460 EXPECT_EQ(kTestResourceSize, context()->getTransferSize()); |
| 452 } | 461 } |
| 453 | 462 |
| 454 TEST_F(ResourceFetcherTest, SynchronousRequest) { | 463 TEST_F(ResourceFetcherTest, SynchronousRequest) { |
| 455 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 464 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 456 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, | 465 registerMockedURLLoad(url); |
| 457 kTestResourceMimeType); | |
| 458 | 466 |
| 459 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 467 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 460 ResourceRequest resourceRequest(url); | 468 ResourceRequest resourceRequest(url); |
| 461 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); | 469 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| 462 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo()); | 470 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo()); |
| 463 fetchRequest.makeSynchronous(); | 471 fetchRequest.makeSynchronous(); |
| 464 Resource* resource = RawResource::fetch(fetchRequest, fetcher); | 472 Resource* resource = RawResource::fetch(fetchRequest, fetcher); |
| 465 EXPECT_TRUE(resource->isLoaded()); | 473 EXPECT_TRUE(resource->isLoaded()); |
| 466 EXPECT_EQ(ResourceLoadPriorityHighest, | 474 EXPECT_EQ(ResourceLoadPriorityHighest, |
| 467 resource->resourceRequest().priority()); | 475 resource->resourceRequest().priority()); |
| 468 } | 476 } |
| 469 | 477 |
| 470 TEST_F(ResourceFetcherTest, PreloadResourceTwice) { | 478 TEST_F(ResourceFetcherTest, PreloadResourceTwice) { |
| 471 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 479 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 472 | 480 |
| 473 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 481 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 474 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, | 482 registerMockedURLLoad(url); |
| 475 kTestResourceMimeType); | |
| 476 | 483 |
| 477 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); | 484 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); |
| 478 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); | 485 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); |
| 479 ASSERT_TRUE(resource); | 486 ASSERT_TRUE(resource); |
| 480 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 487 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 481 fetcher->preloadStarted(resource); | 488 fetcher->preloadStarted(resource); |
| 482 | 489 |
| 483 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); | 490 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); |
| 484 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); | 491 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); |
| 485 EXPECT_EQ(resource, newResource); | 492 EXPECT_EQ(resource, newResource); |
| 486 fetcher->preloadStarted(resource); | 493 fetcher->preloadStarted(resource); |
| 487 | 494 |
| 488 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads); | 495 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads); |
| 489 EXPECT_FALSE(memoryCache()->contains(resource)); | 496 EXPECT_FALSE(memoryCache()->contains(resource)); |
| 490 EXPECT_FALSE(resource->isPreloaded()); | 497 EXPECT_FALSE(resource->isPreloaded()); |
| 491 } | 498 } |
| 492 | 499 |
| 493 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { | 500 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
| 494 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 501 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 495 | 502 |
| 496 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 503 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 497 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, | 504 registerMockedURLLoad(url); |
| 498 kTestResourceMimeType); | |
| 499 | 505 |
| 500 // Link preload preload scanner | 506 // Link preload preload scanner |
| 501 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); | 507 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); |
| 502 fetchRequestOriginal.setLinkPreload(true); | 508 fetchRequestOriginal.setLinkPreload(true); |
| 503 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); | 509 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); |
| 504 ASSERT_TRUE(resource); | 510 ASSERT_TRUE(resource); |
| 505 EXPECT_TRUE(resource->isLinkPreload()); | 511 EXPECT_TRUE(resource->isLinkPreload()); |
| 506 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 512 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 507 fetcher->preloadStarted(resource); | 513 fetcher->preloadStarted(resource); |
| 508 | 514 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 526 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); | 532 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); |
| 527 EXPECT_TRUE(memoryCache()->contains(resource)); | 533 EXPECT_TRUE(memoryCache()->contains(resource)); |
| 528 EXPECT_FALSE(resource->isPreloaded()); | 534 EXPECT_FALSE(resource->isPreloaded()); |
| 529 } | 535 } |
| 530 | 536 |
| 531 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { | 537 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { |
| 532 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 538 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 533 ResourceFetcher* fetcher2 = ResourceFetcher::create(context()); | 539 ResourceFetcher* fetcher2 = ResourceFetcher::create(context()); |
| 534 | 540 |
| 535 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 541 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 536 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, | 542 registerMockedURLLoad(url); |
| 537 kTestResourceMimeType); | |
| 538 | 543 |
| 539 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); | 544 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); |
| 540 fetchRequestOriginal.setLinkPreload(true); | 545 fetchRequestOriginal.setLinkPreload(true); |
| 541 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); | 546 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); |
| 542 ASSERT_TRUE(resource); | 547 ASSERT_TRUE(resource); |
| 543 EXPECT_TRUE(resource->isLinkPreload()); | 548 EXPECT_TRUE(resource->isLinkPreload()); |
| 544 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 549 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 545 fetcher->preloadStarted(resource); | 550 fetcher->preloadStarted(resource); |
| 546 | 551 |
| 547 FetchRequest fetchRequestSecond = FetchRequest(url, FetchInitiatorInfo()); | 552 FetchRequest fetchRequestSecond = FetchRequest(url, FetchInitiatorInfo()); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 fetcher->stopFetching(); | 633 fetcher->stopFetching(); |
| 629 | 634 |
| 630 EXPECT_NE(resource, newResource); | 635 EXPECT_NE(resource, newResource); |
| 631 } | 636 } |
| 632 | 637 |
| 633 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { | 638 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { |
| 634 ResourceFetcher* fetcher = ResourceFetcher::create(context()); | 639 ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| 635 ResourceFetcher* fetcher2 = ResourceFetcher::create(context()); | 640 ResourceFetcher* fetcher2 = ResourceFetcher::create(context()); |
| 636 | 641 |
| 637 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); | 642 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 638 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, | 643 registerMockedURLLoad(url); |
| 639 kTestResourceMimeType); | |
| 640 | 644 |
| 641 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); | 645 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); |
| 642 fetchRequestOriginal.setLinkPreload(true); | 646 fetchRequestOriginal.setLinkPreload(true); |
| 643 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); | 647 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); |
| 644 ASSERT_TRUE(resource); | 648 ASSERT_TRUE(resource); |
| 645 EXPECT_TRUE(resource->isLinkPreload()); | 649 EXPECT_TRUE(resource->isLinkPreload()); |
| 646 fetcher->preloadStarted(resource); | 650 fetcher->preloadStarted(resource); |
| 647 | 651 |
| 648 // Resource created by parser on the second fetcher | 652 // Resource created by parser on the second fetcher |
| 649 FetchRequest fetchRequest2 = FetchRequest(url, FetchInitiatorInfo()); | 653 FetchRequest fetchRequest2 = FetchRequest(url, FetchInitiatorInfo()); |
| 650 Resource* newResource2 = MockResource::fetch(fetchRequest2, fetcher2); | 654 Resource* newResource2 = MockResource::fetch(fetchRequest2, fetcher2); |
| 651 Persistent<MockResourceClient> client2 = new MockResourceClient(newResource2); | 655 Persistent<MockResourceClient> client2 = new MockResourceClient(newResource2); |
| 652 EXPECT_EQ(resource, newResource2); | 656 EXPECT_EQ(resource, newResource2); |
| 653 EXPECT_FALSE(fetcher2->isFetching()); | 657 EXPECT_FALSE(fetcher2->isFetching()); |
| 654 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); | 658 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); |
| 655 } | 659 } |
| 656 | 660 |
| 657 } // namespace blink | 661 } // namespace blink |
| OLD | NEW |