| 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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 FetchParameters fetch_params = | 113 FetchParameters fetch_params = |
| 114 FetchParameters(resource_request, FetchInitiatorInfo()); | 114 FetchParameters(resource_request, FetchInitiatorInfo()); |
| 115 Resource* resource = RawResource::Fetch(fetch_params, fetcher); | 115 Resource* resource = RawResource::Fetch(fetch_params, fetcher); |
| 116 ASSERT_TRUE(resource); | 116 ASSERT_TRUE(resource); |
| 117 EXPECT_TRUE(resource->ErrorOccurred()); | 117 EXPECT_TRUE(resource->ErrorOccurred()); |
| 118 EXPECT_TRUE(resource->GetResourceError().IsAccessCheck()); | 118 EXPECT_TRUE(resource->GetResourceError().IsAccessCheck()); |
| 119 EXPECT_FALSE(GetMemoryCache()->ResourceForURL(secure_url)); | 119 EXPECT_FALSE(GetMemoryCache()->ResourceForURL(secure_url)); |
| 120 | 120 |
| 121 // Start by calling startLoad() directly, rather than via requestResource(). | 121 // Start by calling startLoad() directly, rather than via requestResource(). |
| 122 // This shouldn't crash. | 122 // This shouldn't crash. |
| 123 fetcher->StartLoad(RawResource::Create(secure_url, Resource::kRaw)); | 123 fetcher->StartLoad( |
| 124 RawResource::Create(ResourceRequest(secure_url), Resource::kRaw)); |
| 124 } | 125 } |
| 125 | 126 |
| 126 TEST_F(ResourceFetcherTest, UseExistingResource) { | 127 TEST_F(ResourceFetcherTest, UseExistingResource) { |
| 127 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 128 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 128 | 129 |
| 129 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); | 130 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 130 ResourceResponse response; | 131 ResourceResponse response; |
| 131 response.SetURL(url); | 132 response.SetURL(url); |
| 132 response.SetHTTPStatusCode(200); | 133 response.SetHTTPStatusCode(200); |
| 133 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 134 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 134 RegisterMockedURLLoadWithCustomResponse(url, response); | 135 RegisterMockedURLLoadWithCustomResponse(url, response); |
| 135 | 136 |
| 136 FetchParameters fetch_params = FetchParameters(url, FetchInitiatorInfo()); | 137 FetchParameters fetch_params = |
| 138 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 137 Resource* resource = MockResource::Fetch(fetch_params, fetcher); | 139 Resource* resource = MockResource::Fetch(fetch_params, fetcher); |
| 138 ASSERT_TRUE(resource); | 140 ASSERT_TRUE(resource); |
| 139 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 141 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 140 EXPECT_TRUE(resource->IsLoaded()); | 142 EXPECT_TRUE(resource->IsLoaded()); |
| 141 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); | 143 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); |
| 142 | 144 |
| 143 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); | 145 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
| 144 EXPECT_EQ(resource, new_resource); | 146 EXPECT_EQ(resource, new_resource); |
| 145 } | 147 } |
| 146 | 148 |
| 147 TEST_F(ResourceFetcherTest, Vary) { | 149 TEST_F(ResourceFetcherTest, Vary) { |
| 148 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); | 150 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 149 Resource* resource = RawResource::Create(url, Resource::kRaw); | 151 Resource* resource = |
| 152 RawResource::Create(ResourceRequest(url), Resource::kRaw); |
| 150 GetMemoryCache()->Add(resource); | 153 GetMemoryCache()->Add(resource); |
| 151 ResourceResponse response; | 154 ResourceResponse response; |
| 152 response.SetURL(url); | 155 response.SetURL(url); |
| 153 response.SetHTTPStatusCode(200); | 156 response.SetHTTPStatusCode(200); |
| 154 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 157 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 155 response.SetHTTPHeaderField(HTTPNames::Vary, "*"); | 158 response.SetHTTPHeaderField(HTTPNames::Vary, "*"); |
| 156 resource->ResponseReceived(response, nullptr); | 159 resource->ResponseReceived(response, nullptr); |
| 157 resource->Finish(); | 160 resource->Finish(); |
| 158 ASSERT_TRUE(resource->MustReloadDueToVaryHeader(url)); | 161 ASSERT_TRUE(resource->MustReloadDueToVaryHeader(ResourceRequest(url))); |
| 159 | 162 |
| 160 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 163 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 161 ResourceRequest resource_request(url); | 164 ResourceRequest resource_request(url); |
| 162 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal); | 165 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal); |
| 163 FetchParameters fetch_params = | 166 FetchParameters fetch_params = |
| 164 FetchParameters(resource_request, FetchInitiatorInfo()); | 167 FetchParameters(resource_request, FetchInitiatorInfo()); |
| 165 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( | 168 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( |
| 166 url, WebURLResponse(), ""); | 169 url, WebURLResponse(), ""); |
| 167 Resource* new_resource = RawResource::Fetch(fetch_params, fetcher); | 170 Resource* new_resource = RawResource::Fetch(fetch_params, fetcher); |
| 168 EXPECT_NE(resource, new_resource); | 171 EXPECT_NE(resource, new_resource); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 ResourceRequest redirect_resource_request(url); | 208 ResourceRequest redirect_resource_request(url); |
| 206 fetcher->RecordResourceTimingOnRedirect(resource, redirect_response, false); | 209 fetcher->RecordResourceTimingOnRedirect(resource, redirect_response, false); |
| 207 EXPECT_EQ(navigation_timing_info->TransferSize(), | 210 EXPECT_EQ(navigation_timing_info->TransferSize(), |
| 208 encoded_data_length + redirect_encoded_data_length); | 211 encoded_data_length + redirect_encoded_data_length); |
| 209 } | 212 } |
| 210 | 213 |
| 211 TEST_F(ResourceFetcherTest, VaryOnBack) { | 214 TEST_F(ResourceFetcherTest, VaryOnBack) { |
| 212 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 215 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 213 | 216 |
| 214 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); | 217 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 215 Resource* resource = RawResource::Create(url, Resource::kRaw); | 218 Resource* resource = |
| 219 RawResource::Create(ResourceRequest(url), Resource::kRaw); |
| 216 GetMemoryCache()->Add(resource); | 220 GetMemoryCache()->Add(resource); |
| 217 ResourceResponse response; | 221 ResourceResponse response; |
| 218 response.SetURL(url); | 222 response.SetURL(url); |
| 219 response.SetHTTPStatusCode(200); | 223 response.SetHTTPStatusCode(200); |
| 220 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 224 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 221 response.SetHTTPHeaderField(HTTPNames::Vary, "*"); | 225 response.SetHTTPHeaderField(HTTPNames::Vary, "*"); |
| 222 resource->ResponseReceived(response, nullptr); | 226 resource->ResponseReceived(response, nullptr); |
| 223 resource->Finish(); | 227 resource->Finish(); |
| 224 ASSERT_TRUE(resource->MustReloadDueToVaryHeader(url)); | 228 ASSERT_TRUE(resource->MustReloadDueToVaryHeader(ResourceRequest(url))); |
| 225 | 229 |
| 226 ResourceRequest resource_request(url); | 230 ResourceRequest resource_request(url); |
| 227 resource_request.SetCachePolicy(WebCachePolicy::kReturnCacheDataElseLoad); | 231 resource_request.SetCachePolicy(WebCachePolicy::kReturnCacheDataElseLoad); |
| 228 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal); | 232 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal); |
| 229 FetchParameters fetch_params = | 233 FetchParameters fetch_params = |
| 230 FetchParameters(resource_request, FetchInitiatorInfo()); | 234 FetchParameters(resource_request, FetchInitiatorInfo()); |
| 231 Resource* new_resource = RawResource::Fetch(fetch_params, fetcher); | 235 Resource* new_resource = RawResource::Fetch(fetch_params, fetcher); |
| 232 EXPECT_EQ(resource, new_resource); | 236 EXPECT_EQ(resource, new_resource); |
| 233 } | 237 } |
| 234 | 238 |
| 235 TEST_F(ResourceFetcherTest, VaryResource) { | 239 TEST_F(ResourceFetcherTest, VaryResource) { |
| 236 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 240 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 237 | 241 |
| 238 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); | 242 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 239 ResourceResponse response; | 243 ResourceResponse response; |
| 240 response.SetURL(url); | 244 response.SetURL(url); |
| 241 response.SetHTTPStatusCode(200); | 245 response.SetHTTPStatusCode(200); |
| 242 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); | 246 response.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); |
| 243 response.SetHTTPHeaderField(HTTPNames::Vary, "*"); | 247 response.SetHTTPHeaderField(HTTPNames::Vary, "*"); |
| 244 RegisterMockedURLLoadWithCustomResponse(url, response); | 248 RegisterMockedURLLoadWithCustomResponse(url, response); |
| 245 | 249 |
| 246 FetchParameters fetch_params_original = | 250 FetchParameters fetch_params_original = |
| 247 FetchParameters(url, FetchInitiatorInfo()); | 251 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 248 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); | 252 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
| 249 ASSERT_TRUE(resource); | 253 ASSERT_TRUE(resource); |
| 250 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 254 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 251 ASSERT_TRUE(resource->MustReloadDueToVaryHeader(url)); | 255 ASSERT_TRUE(resource->MustReloadDueToVaryHeader(ResourceRequest(url))); |
| 252 | 256 |
| 253 FetchParameters fetch_params = FetchParameters(url, FetchInitiatorInfo()); | 257 FetchParameters fetch_params = |
| 258 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 254 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); | 259 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
| 255 EXPECT_EQ(resource, new_resource); | 260 EXPECT_EQ(resource, new_resource); |
| 256 } | 261 } |
| 257 | 262 |
| 258 class RequestSameResourceOnComplete | 263 class RequestSameResourceOnComplete |
| 259 : public GarbageCollectedFinalized<RequestSameResourceOnComplete>, | 264 : public GarbageCollectedFinalized<RequestSameResourceOnComplete>, |
| 260 public RawResourceClient { | 265 public RawResourceClient { |
| 261 USING_GARBAGE_COLLECTED_MIXIN(RequestSameResourceOnComplete); | 266 USING_GARBAGE_COLLECTED_MIXIN(RequestSameResourceOnComplete); |
| 262 | 267 |
| 263 public: | 268 public: |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 resource->GetResourceRequest().Priority()); | 485 resource->GetResourceRequest().Priority()); |
| 481 } | 486 } |
| 482 | 487 |
| 483 TEST_F(ResourceFetcherTest, PreloadResourceTwice) { | 488 TEST_F(ResourceFetcherTest, PreloadResourceTwice) { |
| 484 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 489 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 485 | 490 |
| 486 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); | 491 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 487 RegisterMockedURLLoad(url); | 492 RegisterMockedURLLoad(url); |
| 488 | 493 |
| 489 FetchParameters fetch_params_original = | 494 FetchParameters fetch_params_original = |
| 490 FetchParameters(url, FetchInitiatorInfo()); | 495 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 491 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); | 496 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
| 492 ASSERT_TRUE(resource); | 497 ASSERT_TRUE(resource); |
| 493 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 498 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 494 fetcher->PreloadStarted(resource); | 499 fetcher->PreloadStarted(resource); |
| 495 | 500 |
| 496 FetchParameters fetch_params = FetchParameters(url, FetchInitiatorInfo()); | 501 FetchParameters fetch_params = |
| 502 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 497 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); | 503 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
| 498 EXPECT_EQ(resource, new_resource); | 504 EXPECT_EQ(resource, new_resource); |
| 499 fetcher->PreloadStarted(resource); | 505 fetcher->PreloadStarted(resource); |
| 500 | 506 |
| 501 fetcher->ClearPreloads(ResourceFetcher::kClearAllPreloads); | 507 fetcher->ClearPreloads(ResourceFetcher::kClearAllPreloads); |
| 502 EXPECT_FALSE(GetMemoryCache()->Contains(resource)); | 508 EXPECT_FALSE(GetMemoryCache()->Contains(resource)); |
| 503 EXPECT_FALSE(resource->IsPreloaded()); | 509 EXPECT_FALSE(resource->IsPreloaded()); |
| 504 } | 510 } |
| 505 | 511 |
| 506 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { | 512 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
| 507 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 513 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 508 | 514 |
| 509 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); | 515 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 510 RegisterMockedURLLoad(url); | 516 RegisterMockedURLLoad(url); |
| 511 | 517 |
| 512 // Link preload preload scanner | 518 // Link preload preload scanner |
| 513 FetchParameters fetch_params_original = | 519 FetchParameters fetch_params_original = |
| 514 FetchParameters(url, FetchInitiatorInfo()); | 520 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 515 fetch_params_original.SetLinkPreload(true); | 521 fetch_params_original.SetLinkPreload(true); |
| 516 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); | 522 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
| 517 ASSERT_TRUE(resource); | 523 ASSERT_TRUE(resource); |
| 518 EXPECT_TRUE(resource->IsLinkPreload()); | 524 EXPECT_TRUE(resource->IsLinkPreload()); |
| 519 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 525 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 520 fetcher->PreloadStarted(resource); | 526 fetcher->PreloadStarted(resource); |
| 521 | 527 |
| 522 // Resource created by preload scanner | 528 // Resource created by preload scanner |
| 523 FetchParameters fetch_params_preload_scanner = | 529 FetchParameters fetch_params_preload_scanner = |
| 524 FetchParameters(url, FetchInitiatorInfo()); | 530 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 525 Resource* preload_scanner_resource = | 531 Resource* preload_scanner_resource = |
| 526 MockResource::Fetch(fetch_params_preload_scanner, fetcher); | 532 MockResource::Fetch(fetch_params_preload_scanner, fetcher); |
| 527 EXPECT_EQ(resource, preload_scanner_resource); | 533 EXPECT_EQ(resource, preload_scanner_resource); |
| 528 EXPECT_FALSE(resource->IsLinkPreload()); | 534 EXPECT_FALSE(resource->IsLinkPreload()); |
| 529 fetcher->PreloadStarted(resource); | 535 fetcher->PreloadStarted(resource); |
| 530 | 536 |
| 531 // Resource created by parser | 537 // Resource created by parser |
| 532 FetchParameters fetch_params = FetchParameters(url, FetchInitiatorInfo()); | 538 FetchParameters fetch_params = |
| 539 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 533 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); | 540 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
| 534 Persistent<MockResourceClient> client = new MockResourceClient(new_resource); | 541 Persistent<MockResourceClient> client = new MockResourceClient(new_resource); |
| 535 EXPECT_EQ(resource, new_resource); | 542 EXPECT_EQ(resource, new_resource); |
| 536 EXPECT_FALSE(resource->IsLinkPreload()); | 543 EXPECT_FALSE(resource->IsLinkPreload()); |
| 537 | 544 |
| 538 // DCL reached | 545 // DCL reached |
| 539 fetcher->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); | 546 fetcher->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); |
| 540 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); | 547 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); |
| 541 EXPECT_FALSE(resource->IsPreloaded()); | 548 EXPECT_FALSE(resource->IsPreloaded()); |
| 542 } | 549 } |
| 543 | 550 |
| 544 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { | 551 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { |
| 545 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 552 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 546 ResourceFetcher* fetcher2 = ResourceFetcher::Create(Context()); | 553 ResourceFetcher* fetcher2 = ResourceFetcher::Create(Context()); |
| 547 | 554 |
| 548 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); | 555 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 549 RegisterMockedURLLoad(url); | 556 RegisterMockedURLLoad(url); |
| 550 | 557 |
| 551 FetchParameters fetch_params_original = | 558 FetchParameters fetch_params_original = |
| 552 FetchParameters(url, FetchInitiatorInfo()); | 559 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 553 fetch_params_original.SetLinkPreload(true); | 560 fetch_params_original.SetLinkPreload(true); |
| 554 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); | 561 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
| 555 ASSERT_TRUE(resource); | 562 ASSERT_TRUE(resource); |
| 556 EXPECT_TRUE(resource->IsLinkPreload()); | 563 EXPECT_TRUE(resource->IsLinkPreload()); |
| 557 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 564 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 558 fetcher->PreloadStarted(resource); | 565 fetcher->PreloadStarted(resource); |
| 559 | 566 |
| 560 FetchParameters fetch_params_second = | 567 FetchParameters fetch_params_second = |
| 561 FetchParameters(url, FetchInitiatorInfo()); | 568 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 562 fetch_params_second.SetLinkPreload(true); | 569 fetch_params_second.SetLinkPreload(true); |
| 563 Resource* second_resource = | 570 Resource* second_resource = |
| 564 MockResource::Fetch(fetch_params_second, fetcher2); | 571 MockResource::Fetch(fetch_params_second, fetcher2); |
| 565 ASSERT_TRUE(second_resource); | 572 ASSERT_TRUE(second_resource); |
| 566 EXPECT_TRUE(second_resource->IsLinkPreload()); | 573 EXPECT_TRUE(second_resource->IsLinkPreload()); |
| 567 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 574 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 568 fetcher2->PreloadStarted(second_resource); | 575 fetcher2->PreloadStarted(second_resource); |
| 569 | 576 |
| 570 // Link rel preload scanner | 577 // Link rel preload scanner |
| 571 FetchParameters fetch_params_link_preload_scanner = | 578 FetchParameters fetch_params_link_preload_scanner = |
| 572 FetchParameters(url, FetchInitiatorInfo()); | 579 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 573 fetch_params_link_preload_scanner.SetLinkPreload(true); | 580 fetch_params_link_preload_scanner.SetLinkPreload(true); |
| 574 Resource* link_preload_scanner_resource = | 581 Resource* link_preload_scanner_resource = |
| 575 MockResource::Fetch(fetch_params_link_preload_scanner, fetcher); | 582 MockResource::Fetch(fetch_params_link_preload_scanner, fetcher); |
| 576 EXPECT_EQ(resource, link_preload_scanner_resource); | 583 EXPECT_EQ(resource, link_preload_scanner_resource); |
| 577 EXPECT_TRUE(resource->IsLinkPreload()); | 584 EXPECT_TRUE(resource->IsLinkPreload()); |
| 578 fetcher->PreloadStarted(resource); | 585 fetcher->PreloadStarted(resource); |
| 579 | 586 |
| 580 // Resource created by preload scanner | 587 // Resource created by preload scanner |
| 581 FetchParameters fetch_params_preload_scanner = | 588 FetchParameters fetch_params_preload_scanner = |
| 582 FetchParameters(url, FetchInitiatorInfo()); | 589 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 583 Resource* preload_scanner_resource = | 590 Resource* preload_scanner_resource = |
| 584 MockResource::Fetch(fetch_params_preload_scanner, fetcher); | 591 MockResource::Fetch(fetch_params_preload_scanner, fetcher); |
| 585 EXPECT_EQ(resource, preload_scanner_resource); | 592 EXPECT_EQ(resource, preload_scanner_resource); |
| 586 EXPECT_FALSE(resource->IsLinkPreload()); | 593 EXPECT_FALSE(resource->IsLinkPreload()); |
| 587 fetcher->PreloadStarted(resource); | 594 fetcher->PreloadStarted(resource); |
| 588 | 595 |
| 589 // Resource created by preload scanner on the second fetcher | 596 // Resource created by preload scanner on the second fetcher |
| 590 FetchParameters fetch_params_preload_scanner2 = | 597 FetchParameters fetch_params_preload_scanner2 = |
| 591 FetchParameters(url, FetchInitiatorInfo()); | 598 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 592 Resource* preload_scanner_resource2 = | 599 Resource* preload_scanner_resource2 = |
| 593 MockResource::Fetch(fetch_params_preload_scanner2, fetcher2); | 600 MockResource::Fetch(fetch_params_preload_scanner2, fetcher2); |
| 594 EXPECT_EQ(resource, preload_scanner_resource2); | 601 EXPECT_EQ(resource, preload_scanner_resource2); |
| 595 EXPECT_FALSE(resource->IsLinkPreload()); | 602 EXPECT_FALSE(resource->IsLinkPreload()); |
| 596 fetcher2->PreloadStarted(resource); | 603 fetcher2->PreloadStarted(resource); |
| 597 | 604 |
| 598 // Resource created by parser | 605 // Resource created by parser |
| 599 FetchParameters fetch_params = FetchParameters(url, FetchInitiatorInfo()); | 606 FetchParameters fetch_params = |
| 607 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 600 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); | 608 Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
| 601 Persistent<MockResourceClient> client = new MockResourceClient(new_resource); | 609 Persistent<MockResourceClient> client = new MockResourceClient(new_resource); |
| 602 EXPECT_EQ(resource, new_resource); | 610 EXPECT_EQ(resource, new_resource); |
| 603 EXPECT_FALSE(resource->IsLinkPreload()); | 611 EXPECT_FALSE(resource->IsLinkPreload()); |
| 604 | 612 |
| 605 // Resource created by parser on the second fetcher | 613 // Resource created by parser on the second fetcher |
| 606 FetchParameters fetch_params2 = FetchParameters(url, FetchInitiatorInfo()); | 614 FetchParameters fetch_params2 = |
| 615 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 607 Resource* new_resource2 = MockResource::Fetch(fetch_params, fetcher2); | 616 Resource* new_resource2 = MockResource::Fetch(fetch_params, fetcher2); |
| 608 Persistent<MockResourceClient> client2 = | 617 Persistent<MockResourceClient> client2 = |
| 609 new MockResourceClient(new_resource2); | 618 new MockResourceClient(new_resource2); |
| 610 EXPECT_EQ(resource, new_resource2); | 619 EXPECT_EQ(resource, new_resource2); |
| 611 EXPECT_FALSE(resource->IsLinkPreload()); | 620 EXPECT_FALSE(resource->IsLinkPreload()); |
| 612 | 621 |
| 613 // DCL reached on first fetcher | 622 // DCL reached on first fetcher |
| 614 EXPECT_TRUE(resource->IsPreloaded()); | 623 EXPECT_TRUE(resource->IsPreloaded()); |
| 615 fetcher->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); | 624 fetcher->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); |
| 616 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); | 625 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); |
| 617 EXPECT_TRUE(resource->IsPreloaded()); | 626 EXPECT_TRUE(resource->IsPreloaded()); |
| 618 | 627 |
| 619 // DCL reached on second fetcher | 628 // DCL reached on second fetcher |
| 620 fetcher2->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); | 629 fetcher2->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); |
| 621 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); | 630 EXPECT_TRUE(GetMemoryCache()->Contains(resource)); |
| 622 EXPECT_FALSE(resource->IsPreloaded()); | 631 EXPECT_FALSE(resource->IsPreloaded()); |
| 623 } | 632 } |
| 624 | 633 |
| 625 TEST_F(ResourceFetcherTest, Revalidate304) { | 634 TEST_F(ResourceFetcherTest, Revalidate304) { |
| 626 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); | 635 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 627 Resource* resource = RawResource::Create(url, Resource::kRaw); | 636 Resource* resource = |
| 637 RawResource::Create(ResourceRequest(url), Resource::kRaw); |
| 628 GetMemoryCache()->Add(resource); | 638 GetMemoryCache()->Add(resource); |
| 629 ResourceResponse response; | 639 ResourceResponse response; |
| 630 response.SetURL(url); | 640 response.SetURL(url); |
| 631 response.SetHTTPStatusCode(304); | 641 response.SetHTTPStatusCode(304); |
| 632 response.SetHTTPHeaderField("etag", "1234567890"); | 642 response.SetHTTPHeaderField("etag", "1234567890"); |
| 633 resource->ResponseReceived(response, nullptr); | 643 resource->ResponseReceived(response, nullptr); |
| 634 resource->Finish(); | 644 resource->Finish(); |
| 635 | 645 |
| 636 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 646 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 637 ResourceRequest resource_request(url); | 647 ResourceRequest resource_request(url); |
| 638 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal); | 648 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal); |
| 639 FetchParameters fetch_params = | 649 FetchParameters fetch_params = |
| 640 FetchParameters(resource_request, FetchInitiatorInfo()); | 650 FetchParameters(resource_request, FetchInitiatorInfo()); |
| 641 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( | 651 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( |
| 642 url, WebURLResponse(), ""); | 652 url, WebURLResponse(), ""); |
| 643 Resource* new_resource = RawResource::Fetch(fetch_params, fetcher); | 653 Resource* new_resource = RawResource::Fetch(fetch_params, fetcher); |
| 644 fetcher->StopFetching(); | 654 fetcher->StopFetching(); |
| 645 | 655 |
| 646 EXPECT_NE(resource, new_resource); | 656 EXPECT_NE(resource, new_resource); |
| 647 } | 657 } |
| 648 | 658 |
| 649 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { | 659 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { |
| 650 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 660 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 651 ResourceFetcher* fetcher2 = ResourceFetcher::Create(Context()); | 661 ResourceFetcher* fetcher2 = ResourceFetcher::Create(Context()); |
| 652 | 662 |
| 653 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); | 663 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| 654 RegisterMockedURLLoad(url); | 664 RegisterMockedURLLoad(url); |
| 655 | 665 |
| 656 FetchParameters fetch_params_original = | 666 FetchParameters fetch_params_original = |
| 657 FetchParameters(url, FetchInitiatorInfo()); | 667 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 658 fetch_params_original.SetLinkPreload(true); | 668 fetch_params_original.SetLinkPreload(true); |
| 659 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); | 669 Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
| 660 ASSERT_TRUE(resource); | 670 ASSERT_TRUE(resource); |
| 661 EXPECT_TRUE(resource->IsLinkPreload()); | 671 EXPECT_TRUE(resource->IsLinkPreload()); |
| 662 EXPECT_FALSE(fetcher->IsFetching()); | 672 EXPECT_FALSE(fetcher->IsFetching()); |
| 663 fetcher->PreloadStarted(resource); | 673 fetcher->PreloadStarted(resource); |
| 664 | 674 |
| 665 // Resource created by parser on the second fetcher | 675 // Resource created by parser on the second fetcher |
| 666 FetchParameters fetch_params2 = FetchParameters(url, FetchInitiatorInfo()); | 676 FetchParameters fetch_params2 = |
| 677 FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
| 667 Resource* new_resource2 = MockResource::Fetch(fetch_params2, fetcher2); | 678 Resource* new_resource2 = MockResource::Fetch(fetch_params2, fetcher2); |
| 668 Persistent<MockResourceClient> client2 = | 679 Persistent<MockResourceClient> client2 = |
| 669 new MockResourceClient(new_resource2); | 680 new MockResourceClient(new_resource2); |
| 670 EXPECT_NE(resource, new_resource2); | 681 EXPECT_NE(resource, new_resource2); |
| 671 EXPECT_FALSE(fetcher2->IsFetching()); | 682 EXPECT_FALSE(fetcher2->IsFetching()); |
| 672 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); | 683 Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
| 673 } | 684 } |
| 674 | 685 |
| 675 TEST_F(ResourceFetcherTest, ContentTypeDataURL) { | 686 TEST_F(ResourceFetcherTest, ContentTypeDataURL) { |
| 676 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); | 687 ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
| 677 FetchParameters fetch_params = | 688 FetchParameters fetch_params = FetchParameters( |
| 678 FetchParameters(KURL(kParsedURLString, "data:text/testmimetype,foo"), | 689 ResourceRequest("data:text/testmimetype,foo"), FetchInitiatorInfo()); |
| 679 FetchInitiatorInfo()); | |
| 680 Resource* resource = MockResource::Fetch(fetch_params, fetcher); | 690 Resource* resource = MockResource::Fetch(fetch_params, fetcher); |
| 681 ASSERT_TRUE(resource); | 691 ASSERT_TRUE(resource); |
| 682 EXPECT_EQ(ResourceStatus::kCached, resource->GetStatus()); | 692 EXPECT_EQ(ResourceStatus::kCached, resource->GetStatus()); |
| 683 EXPECT_EQ("text/testmimetype", resource->GetResponse().MimeType()); | 693 EXPECT_EQ("text/testmimetype", resource->GetResponse().MimeType()); |
| 684 EXPECT_EQ("text/testmimetype", resource->GetResponse().HttpContentType()); | 694 EXPECT_EQ("text/testmimetype", resource->GetResponse().HttpContentType()); |
| 685 } | 695 } |
| 686 | 696 |
| 687 } // namespace blink | 697 } // namespace blink |
| OLD | NEW |