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

Unified Diff: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp

Issue 2867333002: Revert "Separate preaload matching from MemoryCache" (Closed)
Patch Set: Revert "Separate preaload matching from MemoryCache" Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 =
« no previous file with comments | « third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698