Index: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp |
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp |
index 13638fc15d3dec5318932fa6d19a7db4b7227d27..6b3047689356e9cb628ceb566dd552ee86c0ff1a 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp |
@@ -493,22 +493,18 @@ TEST_F(ResourceFetcherTest, PreloadResourceTwice) { |
FetchParameters fetch_params_original = |
FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- fetch_params_original.SetLinkPreload(true); |
Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
ASSERT_TRUE(resource); |
- EXPECT_TRUE(resource->IsLinkPreload()); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource)); |
Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
+ fetcher->PreloadStarted(resource); |
FetchParameters fetch_params = |
FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- fetch_params.SetLinkPreload(true); |
Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
EXPECT_EQ(resource, new_resource); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource)); |
+ fetcher->PreloadStarted(resource); |
fetcher->ClearPreloads(ResourceFetcher::kClearAllPreloads); |
- EXPECT_FALSE(fetcher->ContainsAsPreload(resource)); |
EXPECT_FALSE(GetMemoryCache()->Contains(resource)); |
EXPECT_FALSE(resource->IsPreloaded()); |
} |
@@ -527,6 +523,7 @@ TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
ASSERT_TRUE(resource); |
EXPECT_TRUE(resource->IsLinkPreload()); |
Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
+ fetcher->PreloadStarted(resource); |
// Resource created by preload scanner |
FetchParameters fetch_params_preload_scanner = |
@@ -535,6 +532,7 @@ TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
MockResource::Fetch(fetch_params_preload_scanner, fetcher); |
EXPECT_EQ(resource, preload_scanner_resource); |
EXPECT_FALSE(resource->IsLinkPreload()); |
+ fetcher->PreloadStarted(resource); |
// Resource created by parser |
FetchParameters fetch_params = |
@@ -550,29 +548,7 @@ TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
EXPECT_FALSE(resource->IsPreloaded()); |
} |
-TEST_F(ResourceFetcherTest, PreloadMatchWithBypassingCache) { |
- ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
- KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
- RegisterMockedURLLoad(url); |
- |
- FetchParameters fetch_params_original = |
- FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- fetch_params_original.SetLinkPreload(true); |
- Resource* resource = MockResource::Fetch(fetch_params_original, fetcher); |
- ASSERT_TRUE(resource); |
- EXPECT_TRUE(resource->IsLinkPreload()); |
- Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
- |
- FetchParameters fetch_params_second = |
- FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- fetch_params_second.MutableResourceRequest().SetCachePolicy( |
- WebCachePolicy::kBypassingCache); |
- Resource* second_resource = MockResource::Fetch(fetch_params_second, fetcher); |
- EXPECT_EQ(resource, second_resource); |
- EXPECT_FALSE(resource->IsLinkPreload()); |
-} |
- |
-TEST_F(ResourceFetcherTest, CrossFramePreloadMatchIsNotAllowed) { |
+TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { |
ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
ResourceFetcher* fetcher2 = ResourceFetcher::Create(Context()); |
@@ -586,116 +562,73 @@ TEST_F(ResourceFetcherTest, CrossFramePreloadMatchIsNotAllowed) { |
ASSERT_TRUE(resource); |
EXPECT_TRUE(resource->IsLinkPreload()); |
Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
+ fetcher->PreloadStarted(resource); |
FetchParameters fetch_params_second = |
FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- fetch_params_second.MutableResourceRequest().SetCachePolicy( |
- WebCachePolicy::kBypassingCache); |
+ fetch_params_second.SetLinkPreload(true); |
Resource* second_resource = |
MockResource::Fetch(fetch_params_second, fetcher2); |
+ ASSERT_TRUE(second_resource); |
+ EXPECT_TRUE(second_resource->IsLinkPreload()); |
+ Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
+ fetcher2->PreloadStarted(second_resource); |
- EXPECT_NE(resource, second_resource); |
+ // Link rel preload scanner |
+ FetchParameters fetch_params_link_preload_scanner = |
+ FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
+ fetch_params_link_preload_scanner.SetLinkPreload(true); |
+ Resource* link_preload_scanner_resource = |
+ MockResource::Fetch(fetch_params_link_preload_scanner, fetcher); |
+ EXPECT_EQ(resource, link_preload_scanner_resource); |
EXPECT_TRUE(resource->IsLinkPreload()); |
-} |
+ fetcher->PreloadStarted(resource); |
-TEST_F(ResourceFetcherTest, RepetitiveLinkPreloadShouldBeMerged) { |
- ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
- |
- KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
- RegisterMockedURLLoad(url); |
- |
- FetchParameters fetch_params_for_request = |
+ // Resource created by preload scanner |
+ FetchParameters fetch_params_preload_scanner = |
FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- FetchParameters fetch_params_for_preload = fetch_params_for_request; |
- fetch_params_for_preload.SetLinkPreload(true); |
- |
- Resource* resource1 = MockResource::Fetch(fetch_params_for_preload, fetcher); |
- ASSERT_TRUE(resource1); |
- EXPECT_TRUE(resource1->IsPreloaded()); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource1)); |
- Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
- |
- // The second preload fetch returnes the first preload. |
- Resource* resource2 = MockResource::Fetch(fetch_params_for_preload, fetcher); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource1)); |
- EXPECT_TRUE(resource1->IsPreloaded()); |
- EXPECT_EQ(resource1, resource2); |
- |
- // preload matching |
- Resource* resource3 = MockResource::Fetch(fetch_params_for_request, fetcher); |
- EXPECT_EQ(resource1, resource3); |
- EXPECT_FALSE(fetcher->ContainsAsPreload(resource1)); |
- EXPECT_FALSE(resource1->IsPreloaded()); |
-} |
- |
-TEST_F(ResourceFetcherTest, RepetitiveSpeculativePreloadShouldBeMerged) { |
- ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
- |
- KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
- RegisterMockedURLLoad(url); |
+ Resource* preload_scanner_resource = |
+ MockResource::Fetch(fetch_params_preload_scanner, fetcher); |
+ EXPECT_EQ(resource, preload_scanner_resource); |
+ EXPECT_FALSE(resource->IsLinkPreload()); |
+ fetcher->PreloadStarted(resource); |
- FetchParameters fetch_params_for_request = |
+ // Resource created by preload scanner on the second fetcher |
+ FetchParameters fetch_params_preload_scanner2 = |
FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- FetchParameters fetch_params_for_preload = fetch_params_for_request; |
- fetch_params_for_preload.SetSpeculativePreloadType( |
- FetchParameters::SpeculativePreloadType::kInDocument); |
- |
- Resource* resource1 = MockResource::Fetch(fetch_params_for_preload, fetcher); |
- ASSERT_TRUE(resource1); |
- EXPECT_TRUE(resource1->IsPreloaded()); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource1)); |
- Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
- |
- // The second preload fetch returnes the first preload. |
- Resource* resource2 = MockResource::Fetch(fetch_params_for_preload, fetcher); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource1)); |
- EXPECT_TRUE(resource1->IsPreloaded()); |
- EXPECT_EQ(resource1, resource2); |
- |
- // preload matching |
- Resource* resource3 = MockResource::Fetch(fetch_params_for_request, fetcher); |
- EXPECT_EQ(resource1, resource3); |
- EXPECT_FALSE(fetcher->ContainsAsPreload(resource1)); |
- EXPECT_FALSE(resource1->IsPreloaded()); |
-} |
- |
-TEST_F(ResourceFetcherTest, SpeculativePreloadShouldBePromotedToLinkePreload) { |
- ResourceFetcher* fetcher = ResourceFetcher::Create(Context()); |
+ Resource* preload_scanner_resource2 = |
+ MockResource::Fetch(fetch_params_preload_scanner2, fetcher2); |
+ EXPECT_EQ(resource, preload_scanner_resource2); |
+ EXPECT_FALSE(resource->IsLinkPreload()); |
+ fetcher2->PreloadStarted(resource); |
- KURL url(kParsedURLString, "http://127.0.0.1:8000/foo.png"); |
- RegisterMockedURLLoad(url); |
+ // Resource created by parser |
+ FetchParameters fetch_params = |
+ FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
+ Resource* new_resource = MockResource::Fetch(fetch_params, fetcher); |
+ Persistent<MockResourceClient> client = new MockResourceClient(new_resource); |
+ EXPECT_EQ(resource, new_resource); |
+ EXPECT_FALSE(resource->IsLinkPreload()); |
- FetchParameters fetch_params_for_request = |
+ // Resource created by parser on the second fetcher |
+ FetchParameters fetch_params2 = |
FetchParameters(ResourceRequest(url), FetchInitiatorInfo()); |
- FetchParameters fetch_params_for_speculative_preload = |
- fetch_params_for_request; |
- fetch_params_for_speculative_preload.SetSpeculativePreloadType( |
- FetchParameters::SpeculativePreloadType::kInDocument); |
- FetchParameters fetch_params_for_link_preload = fetch_params_for_request; |
- fetch_params_for_link_preload.SetLinkPreload(true); |
- |
- Resource* resource1 = |
- MockResource::Fetch(fetch_params_for_speculative_preload, fetcher); |
- ASSERT_TRUE(resource1); |
- EXPECT_TRUE(resource1->IsPreloaded()); |
- EXPECT_FALSE(resource1->IsLinkPreload()); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource1)); |
- Platform::Current()->GetURLLoaderMockFactory()->ServeAsynchronousRequests(); |
+ Resource* new_resource2 = MockResource::Fetch(fetch_params, fetcher2); |
+ Persistent<MockResourceClient> client2 = |
+ new MockResourceClient(new_resource2); |
+ EXPECT_EQ(resource, new_resource2); |
+ EXPECT_FALSE(resource->IsLinkPreload()); |
+ |
+ // DCL reached on first fetcher |
+ EXPECT_TRUE(resource->IsPreloaded()); |
+ fetcher->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); |
+ EXPECT_TRUE(GetMemoryCache()->Contains(resource)); |
+ EXPECT_TRUE(resource->IsPreloaded()); |
- // The second preload fetch returnes the first preload. |
- Resource* resource2 = |
- MockResource::Fetch(fetch_params_for_link_preload, fetcher); |
- EXPECT_TRUE(fetcher->ContainsAsPreload(resource1)); |
- EXPECT_TRUE(resource1->IsPreloaded()); |
- EXPECT_TRUE(resource1->IsLinkPreload()); |
- EXPECT_EQ(resource1, resource2); |
- |
- // preload matching |
- Resource* resource3 = MockResource::Fetch(fetch_params_for_request, fetcher); |
- EXPECT_EQ(resource1, resource3); |
- EXPECT_FALSE(fetcher->ContainsAsPreload(resource1)); |
- EXPECT_FALSE(resource1->IsPreloaded()); |
- EXPECT_FALSE(resource1->IsLinkPreload()); |
+ // DCL reached on second fetcher |
+ fetcher2->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads); |
+ EXPECT_TRUE(GetMemoryCache()->Contains(resource)); |
+ EXPECT_FALSE(resource->IsPreloaded()); |
} |
TEST_F(ResourceFetcherTest, Revalidate304) { |
@@ -737,6 +670,7 @@ TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { |
ASSERT_TRUE(resource); |
EXPECT_TRUE(resource->IsLinkPreload()); |
EXPECT_FALSE(fetcher->IsFetching()); |
+ fetcher->PreloadStarted(resource); |
// Resource created by parser on the second fetcher |
FetchParameters fetch_params2 = |