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 12 matching lines...) Expand all Loading... |
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 "platform/loader/fetch/ResourceFetcher.h" | 31 #include "platform/loader/fetch/ResourceFetcher.h" |
32 | 32 |
| 33 #include <memory> |
33 #include "platform/WebTaskRunner.h" | 34 #include "platform/WebTaskRunner.h" |
34 #include "platform/exported/WrappedResourceResponse.h" | 35 #include "platform/exported/WrappedResourceResponse.h" |
35 #include "platform/heap/Handle.h" | 36 #include "platform/heap/Handle.h" |
36 #include "platform/heap/HeapAllocator.h" | 37 #include "platform/heap/HeapAllocator.h" |
37 #include "platform/heap/Member.h" | 38 #include "platform/heap/Member.h" |
38 #include "platform/loader/fetch/FetchInitiatorInfo.h" | 39 #include "platform/loader/fetch/FetchInitiatorInfo.h" |
39 #include "platform/loader/fetch/FetchInitiatorTypeNames.h" | 40 #include "platform/loader/fetch/FetchInitiatorTypeNames.h" |
40 #include "platform/loader/fetch/FetchRequest.h" | 41 #include "platform/loader/fetch/FetchRequest.h" |
41 #include "platform/loader/fetch/FetchTestingPlatformSupport.h" | 42 #include "platform/loader/fetch/FetchTestingPlatformSupport.h" |
42 #include "platform/loader/fetch/MemoryCache.h" | 43 #include "platform/loader/fetch/MemoryCache.h" |
43 #include "platform/loader/fetch/MockFetchContext.h" | 44 #include "platform/loader/fetch/MockFetchContext.h" |
44 #include "platform/loader/fetch/MockResource.h" | 45 #include "platform/loader/fetch/MockResource.h" |
45 #include "platform/loader/fetch/MockResourceClient.h" | 46 #include "platform/loader/fetch/MockResourceClient.h" |
46 #include "platform/loader/fetch/RawResource.h" | 47 #include "platform/loader/fetch/RawResource.h" |
47 #include "platform/loader/fetch/ResourceLoader.h" | 48 #include "platform/loader/fetch/ResourceLoader.h" |
48 #include "platform/network/ResourceError.h" | 49 #include "platform/network/ResourceError.h" |
49 #include "platform/network/ResourceRequest.h" | 50 #include "platform/network/ResourceRequest.h" |
50 #include "platform/network/ResourceTimingInfo.h" | 51 #include "platform/network/ResourceTimingInfo.h" |
51 #include "platform/scheduler/test/fake_web_task_runner.h" | 52 #include "platform/scheduler/test/fake_web_task_runner.h" |
52 #include "platform/testing/TestingPlatformSupport.h" | 53 #include "platform/testing/TestingPlatformSupport.h" |
53 #include "platform/testing/URLTestHelpers.h" | 54 #include "platform/testing/URLTestHelpers.h" |
| 55 #include "platform/testing/UnitTestHelpers.h" |
54 #include "platform/testing/weburl_loader_mock.h" | 56 #include "platform/testing/weburl_loader_mock.h" |
55 #include "platform/testing/weburl_loader_mock_factory_impl.h" | 57 #include "platform/testing/weburl_loader_mock_factory_impl.h" |
56 #include "platform/weborigin/KURL.h" | 58 #include "platform/weborigin/KURL.h" |
57 #include "public/platform/Platform.h" | 59 #include "public/platform/Platform.h" |
58 #include "public/platform/WebURLLoader.h" | 60 #include "public/platform/WebURLLoader.h" |
59 #include "public/platform/WebURLLoaderMockFactory.h" | 61 #include "public/platform/WebURLLoaderMockFactory.h" |
60 #include "public/platform/WebURLResponse.h" | 62 #include "public/platform/WebURLResponse.h" |
61 #include "testing/gtest/include/gtest/gtest.h" | 63 #include "testing/gtest/include/gtest/gtest.h" |
62 #include "wtf/Allocator.h" | 64 #include "wtf/Allocator.h" |
63 #include "wtf/PtrUtil.h" | 65 #include "wtf/PtrUtil.h" |
64 #include "wtf/Vector.h" | 66 #include "wtf/Vector.h" |
65 #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 |