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

Unified Diff: third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp

Issue 2319483002: Turn off isLinkPreload() when used (Closed)
Patch Set: Turn off LinkPreload when resource is used + tests Created 4 years, 3 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
Index: third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp
index 9f748b065c1532afcb9df30f011593bba130eb7c..3b22949c1db07054d4a068b17a5c31f4e57981b6 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp
@@ -516,4 +516,70 @@ TEST_F(ResourceFetcherTest, SynchronousRequest)
memoryCache()->remove(resource);
}
+TEST_F(ResourceFetcherTest, PreloadImageTwice)
+{
+ ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create());
+
+ KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
+ ResourceResponse response;
+ response.setURL(url);
+ response.setHTTPStatusCode(200);
+ URLTestHelpers::registerMockedURLLoadWithCustomResponse(url, testImageFilename, WebString::fromUTF8(""), WrappedResourceResponse(response));
+
+ FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
+ Resource* resource = fetcher->requestResource(fetchRequestOriginal, TestResourceFactory(Resource::Image));
+ ASSERT_TRUE(resource);
+ Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
+ fetcher->preloadStarted(resource);
+
+ FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
+ Resource* newResource = fetcher->requestResource(fetchRequest, TestResourceFactory(Resource::Image));
+ EXPECT_EQ(resource, newResource);
+ fetcher->preloadStarted(resource);
+
+ fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads);
+ Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
+ EXPECT_FALSE(memoryCache()->contains(resource));
+ EXPECT_FALSE(resource->isPreloaded());
+}
+
+
+TEST_F(ResourceFetcherTest, LinkPreloadImageAndUse)
+{
+ ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create());
+
+ KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
+ ResourceResponse response;
+ response.setURL(url);
+ response.setHTTPStatusCode(200);
+ URLTestHelpers::registerMockedURLLoadWithCustomResponse(url, testImageFilename, WebString::fromUTF8(""), WrappedResourceResponse(response));
+
+ // Link preload preload scanner
+ FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
+ fetchRequestOriginal.setLinkPreload(true);
+ Resource* resource = fetcher->requestResource(fetchRequestOriginal, TestResourceFactory(Resource::Image));
+ ASSERT_TRUE(resource);
+ EXPECT_TRUE(resource->isLinkPreload());
+ Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
+ fetcher->preloadStarted(resource);
+
+ // Image preload scanner
+ FetchRequest fetchRequestPreloadScanner = FetchRequest(url, FetchInitiatorInfo());
+ Resource* imgPreloadScannerResource = fetcher->requestResource(fetchRequestPreloadScanner, TestResourceFactory(Resource::Image));
+ EXPECT_EQ(resource, imgPreloadScannerResource);
+ EXPECT_FALSE(resource->isLinkPreload());
+ fetcher->preloadStarted(resource);
+
+ // Image created by parser
+ FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
+ Resource* newResource = fetcher->requestResource(fetchRequest, TestResourceFactory(Resource::Image));
+ EXPECT_EQ(resource, newResource);
+ EXPECT_FALSE(resource->isLinkPreload());
+
+ // DCL reached
+ fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
+ Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
+ EXPECT_FALSE(memoryCache()->contains(resource));
+ EXPECT_FALSE(resource->isPreloaded());
+}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698