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

Unified Diff: third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp

Issue 2483713002: Add referrerpolicy support to link prefetch (Closed)
Patch Set: -mReview nit & DCHECK Created 4 years, 1 month 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/loader/LinkLoaderTest.cpp
diff --git a/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp b/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
index fdccbbf41cecd0b6c6ea3908aaa241851646fc46..1c487ef102833f49f8494a611af4d1c866d20e07 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
+++ b/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
@@ -252,6 +252,57 @@ TEST(LinkLoaderTest, Preload) {
}
}
+TEST(LinkLoaderTest, Prefetch) {
+ struct TestCase {
+ const char* href;
+ // TODO(yoav): Add support for type and media crbug.com/662687
+ const char* type;
+ const char* media;
+ const ReferrerPolicy referrerPolicy;
+ const bool linkLoaderShouldLoadValue;
+ const bool expectingLoad;
+ const ReferrerPolicy expectedReferrerPolicy;
+ } cases[] = {
+ // Referrer Policy
+ {"http://example.test/cat.jpg", "image/jpg", "", ReferrerPolicyOrigin,
+ true, true, ReferrerPolicyOrigin},
+ {"http://example.test/cat.jpg", "image/jpg", "",
+ ReferrerPolicyOriginWhenCrossOrigin, true, true,
+ ReferrerPolicyOriginWhenCrossOrigin},
+ {"http://example.test/cat.jpg", "image/jpg", "", ReferrerPolicyNever,
+ true, true, ReferrerPolicyNever},
+ };
+
+ // Test the cases with a single header
+ for (const auto& testCase : cases) {
+ std::unique_ptr<DummyPageHolder> dummyPageHolder =
+ DummyPageHolder::create(IntSize(500, 500));
+ dummyPageHolder->frame().settings()->setScriptEnabled(true);
+ Persistent<MockLinkLoaderClient> loaderClient =
+ MockLinkLoaderClient::create(testCase.linkLoaderShouldLoadValue);
+ LinkLoader* loader = LinkLoader::create(loaderClient.get());
+ KURL hrefURL = KURL(KURL(), testCase.href);
+ URLTestHelpers::registerMockedErrorURLLoad(hrefURL);
+ loader->loadLink(LinkRelAttribute("prefetch"), CrossOriginAttributeNotSet,
+ testCase.type, "", testCase.media, testCase.referrerPolicy,
+ hrefURL, dummyPageHolder->document(), NetworkHintsMock());
+ ASSERT_TRUE(dummyPageHolder->document().fetcher());
+ Resource* resource = loader->resource();
+ if (testCase.expectingLoad) {
+ EXPECT_TRUE(resource);
+ } else {
+ EXPECT_FALSE(resource);
+ }
+ if (resource) {
+ if (testCase.expectedReferrerPolicy != ReferrerPolicyDefault) {
+ EXPECT_EQ(testCase.expectedReferrerPolicy,
+ resource->resourceRequest().getReferrerPolicy());
+ }
+ }
+ Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs();
+ }
+}
+
TEST(LinkLoaderTest, DNSPrefetch) {
struct {
const char* href;
@@ -260,10 +311,9 @@ TEST(LinkLoaderTest, DNSPrefetch) {
{"http://example.com/", true},
{"https://example.com/", true},
{"//example.com/", true},
+ {"//example.com/", false},
};
- // TODO(yoav): Test (and fix) shouldLoad = false
-
// Test the cases with a single header
for (const auto& testCase : cases) {
std::unique_ptr<DummyPageHolder> dummyPageHolder =
@@ -297,6 +347,7 @@ TEST(LinkLoaderTest, Preconnect) {
{"https://example.com/", CrossOriginAttributeNotSet, true, true, false},
{"http://example.com/", CrossOriginAttributeAnonymous, true, false, true},
{"//example.com/", CrossOriginAttributeNotSet, true, false, false},
+ {"http://example.com/", CrossOriginAttributeNotSet, false, false, false},
};
// Test the cases with a single header

Powered by Google App Engine
This is Rietveld 408576698