| 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 c8e58f982e0ff114b59f00e032dc7d53517407d4..fdccbbf41cecd0b6c6ea3908aaa241851646fc46 100644
|
| --- a/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
|
| @@ -83,96 +83,124 @@ TEST(LinkLoaderTest, Preload) {
|
| const char* as;
|
| const char* type;
|
| const char* media;
|
| + const ReferrerPolicy referrerPolicy;
|
| const ResourceLoadPriority priority;
|
| const WebURLRequest::RequestContext context;
|
| const bool linkLoaderShouldLoadValue;
|
| const bool expectingLoad;
|
| + const ReferrerPolicy expectedReferrerPolicy;
|
| } cases[] = {
|
| - {"http://example.test/cat.jpg", "image", "", "", ResourceLoadPriorityLow,
|
| - WebURLRequest::RequestContextImage, true, true},
|
| - {"http://example.test/cat.js", "script", "", "", ResourceLoadPriorityHigh,
|
| - WebURLRequest::RequestContextScript, true, true},
|
| - {"http://example.test/cat.css", "style", "", "",
|
| + {"http://example.test/cat.jpg", "image", "", "", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityLow, WebURLRequest::RequestContextImage, true, true,
|
| + ReferrerPolicyDefault},
|
| + {"http://example.test/cat.js", "script", "", "", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityHigh, WebURLRequest::RequestContextScript, true,
|
| + true, ReferrerPolicyDefault},
|
| + {"http://example.test/cat.css", "style", "", "", ReferrerPolicyDefault,
|
| ResourceLoadPriorityVeryHigh, WebURLRequest::RequestContextStyle, true,
|
| - true},
|
| + true, ReferrerPolicyDefault},
|
| // TODO(yoav): It doesn't seem like the audio context is ever used. That
|
| // should probably be fixed (or we can consolidate audio and video).
|
| - {"http://example.test/cat.wav", "media", "", "", ResourceLoadPriorityLow,
|
| - WebURLRequest::RequestContextVideo, true, true},
|
| - {"http://example.test/cat.mp4", "media", "", "", ResourceLoadPriorityLow,
|
| - WebURLRequest::RequestContextVideo, true, true},
|
| - {"http://example.test/cat.vtt", "track", "", "", ResourceLoadPriorityLow,
|
| - WebURLRequest::RequestContextTrack, true, true},
|
| - {"http://example.test/cat.woff", "font", "", "",
|
| + {"http://example.test/cat.wav", "media", "", "", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true,
|
| + ReferrerPolicyDefault},
|
| + {"http://example.test/cat.mp4", "media", "", "", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true,
|
| + ReferrerPolicyDefault},
|
| + {"http://example.test/cat.vtt", "track", "", "", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityLow, WebURLRequest::RequestContextTrack, true, true,
|
| + ReferrerPolicyDefault},
|
| + {"http://example.test/cat.woff", "font", "", "", ReferrerPolicyDefault,
|
| ResourceLoadPriorityVeryHigh, WebURLRequest::RequestContextFont, true,
|
| - true},
|
| + true, ReferrerPolicyDefault},
|
| // TODO(yoav): subresource should be *very* low priority (rather than
|
| // low).
|
| - {"http://example.test/cat.empty", "", "", "", ResourceLoadPriorityHigh,
|
| - WebURLRequest::RequestContextSubresource, true, true},
|
| - {"http://example.test/cat.blob", "blabla", "", "",
|
| + {"http://example.test/cat.empty", "", "", "", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityHigh, WebURLRequest::RequestContextSubresource, true,
|
| + true, ReferrerPolicyDefault},
|
| + {"http://example.test/cat.blob", "blabla", "", "", ReferrerPolicyDefault,
|
| ResourceLoadPriorityLow, WebURLRequest::RequestContextSubresource, false,
|
| - false},
|
| - {"bla://example.test/cat.gif", "image", "", "",
|
| + false, ReferrerPolicyDefault},
|
| + {"bla://example.test/cat.gif", "image", "", "", ReferrerPolicyDefault,
|
| ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage,
|
| - false, false},
|
| + false, false, ReferrerPolicyDefault},
|
| // MIME type tests
|
| {"http://example.test/cat.webp", "image", "image/webp", "",
|
| - ResourceLoadPriorityLow, WebURLRequest::RequestContextImage, true, true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.svg", "image", "image/svg+xml", "",
|
| - ResourceLoadPriorityLow, WebURLRequest::RequestContextImage, true, true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.jxr", "image", "image/jxr", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage,
|
| - false, false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextImage, false, false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.js", "script", "text/javascript", "",
|
| - ResourceLoadPriorityHigh, WebURLRequest::RequestContextScript, true,
|
| - true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityHigh,
|
| + WebURLRequest::RequestContextScript, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.js", "script", "text/coffeescript", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextScript,
|
| - false, false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextScript, false, false,
|
| + ReferrerPolicyDefault},
|
| {"http://example.test/cat.css", "style", "text/css", "",
|
| - ResourceLoadPriorityVeryHigh, WebURLRequest::RequestContextStyle, true,
|
| - true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityVeryHigh,
|
| + WebURLRequest::RequestContextStyle, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.css", "style", "text/sass", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextStyle,
|
| - false, false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextStyle, false, false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.wav", "media", "audio/wav", "",
|
| - ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextVideo, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.wav", "media", "audio/mp57", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextVideo,
|
| - false, false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextVideo, false, false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.webm", "media", "video/webm", "",
|
| - ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextVideo, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.mp199", "media", "video/mp199", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextVideo,
|
| - false, false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextVideo, false, false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.vtt", "track", "text/vtt", "",
|
| - ResourceLoadPriorityLow, WebURLRequest::RequestContextTrack, true, true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextTrack, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.vtt", "track", "text/subtitlething", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextTrack,
|
| - false, false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextTrack, false, false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.woff", "font", "font/woff2", "",
|
| - ResourceLoadPriorityVeryHigh, WebURLRequest::RequestContextFont, true,
|
| - true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityVeryHigh,
|
| + WebURLRequest::RequestContextFont, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.woff", "font", "font/woff84", "",
|
| - ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextFont, false,
|
| - false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
|
| + WebURLRequest::RequestContextFont, false, false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.empty", "", "foo/bar", "",
|
| - ResourceLoadPriorityHigh, WebURLRequest::RequestContextSubresource, true,
|
| - true},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityHigh,
|
| + WebURLRequest::RequestContextSubresource, true, true,
|
| + ReferrerPolicyDefault},
|
| {"http://example.test/cat.blob", "blabla", "foo/bar", "",
|
| - ResourceLoadPriorityLow, WebURLRequest::RequestContextSubresource, false,
|
| - false},
|
| + ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextSubresource, false, false,
|
| + ReferrerPolicyDefault},
|
| // Media tests
|
| {"http://example.test/cat.gif", "image", "image/gif",
|
| - "(max-width: 600px)", ResourceLoadPriorityLow,
|
| - WebURLRequest::RequestContextImage, true, true},
|
| + "(max-width: 600px)", ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
|
| {"http://example.test/cat.gif", "image", "image/gif",
|
| - "(max-width: 400px)", ResourceLoadPriorityUnresolved,
|
| - WebURLRequest::RequestContextImage, true, false},
|
| + "(max-width: 400px)", ReferrerPolicyDefault,
|
| + ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage, true,
|
| + false, ReferrerPolicyDefault},
|
| {"http://example.test/cat.gif", "image", "image/gif",
|
| - "(max-width: 600px)", ResourceLoadPriorityLow,
|
| - WebURLRequest::RequestContextImage, false, false},
|
| + "(max-width: 600px)", ReferrerPolicyDefault, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, false, false, ReferrerPolicyDefault},
|
| + // Referrer Policy
|
| + {"http://example.test/cat.gif", "image", "image/gif", "",
|
| + ReferrerPolicyOrigin, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, true, true, ReferrerPolicyOrigin},
|
| + {"http://example.test/cat.gif", "image", "image/gif", "",
|
| + ReferrerPolicyOriginWhenCrossOrigin, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, true, true,
|
| + ReferrerPolicyOriginWhenCrossOrigin},
|
| + {"http://example.test/cat.gif", "image", "image/gif", "",
|
| + ReferrerPolicyNever, ResourceLoadPriorityLow,
|
| + WebURLRequest::RequestContextImage, true, true, ReferrerPolicyNever},
|
| };
|
|
|
| // Test the cases with a single header
|
| @@ -186,7 +214,8 @@ TEST(LinkLoaderTest, Preload) {
|
| KURL hrefURL = KURL(KURL(), testCase.href);
|
| URLTestHelpers::registerMockedErrorURLLoad(hrefURL);
|
| loader->loadLink(LinkRelAttribute("preload"), CrossOriginAttributeNotSet,
|
| - testCase.type, testCase.as, testCase.media, hrefURL,
|
| + testCase.type, testCase.as, testCase.media,
|
| + testCase.referrerPolicy, hrefURL,
|
| dummyPageHolder->document(), NetworkHintsMock());
|
| ASSERT_TRUE(dummyPageHolder->document().fetcher());
|
| HeapListHashSet<Member<Resource>>* preloads =
|
| @@ -210,6 +239,10 @@ TEST(LinkLoaderTest, Preload) {
|
| EXPECT_EQ(testCase.priority, resource->resourceRequest().priority());
|
| EXPECT_EQ(testCase.context,
|
| resource->resourceRequest().requestContext());
|
| + if (testCase.expectedReferrerPolicy != ReferrerPolicyDefault) {
|
| + EXPECT_EQ(testCase.expectedReferrerPolicy,
|
| + resource->resourceRequest().getReferrerPolicy());
|
| + }
|
| }
|
| }
|
| dummyPageHolder->document().fetcher()->clearPreloads();
|
| @@ -245,7 +278,8 @@ TEST(LinkLoaderTest, DNSPrefetch) {
|
| NetworkHintsMock networkHints;
|
| loader->loadLink(LinkRelAttribute("dns-prefetch"),
|
| CrossOriginAttributeNotSet, String(), String(), String(),
|
| - hrefURL, dummyPageHolder->document(), networkHints);
|
| + ReferrerPolicyDefault, hrefURL,
|
| + dummyPageHolder->document(), networkHints);
|
| EXPECT_FALSE(networkHints.didPreconnect());
|
| EXPECT_EQ(testCase.shouldLoad, networkHints.didDnsPrefetch());
|
| }
|
| @@ -277,8 +311,8 @@ TEST(LinkLoaderTest, Preconnect) {
|
| testCase.href);
|
| NetworkHintsMock networkHints;
|
| loader->loadLink(LinkRelAttribute("preconnect"), testCase.crossOrigin,
|
| - String(), String(), String(), hrefURL,
|
| - dummyPageHolder->document(), networkHints);
|
| + String(), String(), String(), ReferrerPolicyDefault,
|
| + hrefURL, dummyPageHolder->document(), networkHints);
|
| EXPECT_EQ(testCase.shouldLoad, networkHints.didPreconnect());
|
| EXPECT_EQ(testCase.isHTTPS, networkHints.isHTTPS());
|
| EXPECT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin());
|
|
|