| Index: third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
|
| index c9e1ebff4ebb10814888e5ae69a706eac900f4eb..d8c3e17741a115b4b8948c2821268b610f4a7fc0 100644
|
| --- a/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
|
| @@ -448,6 +448,66 @@ TEST_F(FrameFetchContextTest, MainResource)
|
| EXPECT_EQ(WebCachePolicy::BypassingCache, childFetchContext->resourceRequestCachePolicy(request, Resource::MainResource, FetchRequest::NoDefer));
|
| }
|
|
|
| +TEST_F(FrameFetchContextTest, PopulateRequestData)
|
| +{
|
| + struct TestCase {
|
| + const char* documentURL;
|
| + bool documentSandboxed;
|
| + const char* requestorOrigin; // "" => nullptr, "null" => unique origin
|
| + WebURLRequest::FrameType frameType;
|
| + const char* serializedOrigin; // "" => nullptr, "null" => unique origin
|
| + } cases[] = {
|
| + // No document origin => unique request origin
|
| + { "", false, "", WebURLRequest::FrameTypeNone, "null" },
|
| + { "", true, "", WebURLRequest::FrameTypeNone, "null" },
|
| +
|
| + // Document origin => request origin
|
| + { "http://example.test", false, "", WebURLRequest::FrameTypeNone, "http://example.test" },
|
| + { "http://example.test", true, "", WebURLRequest::FrameTypeNone, "http://example.test" },
|
| +
|
| + // If the request already has a requestor origin, then 'populateRequestData' leaves it alone:
|
| + { "http://example.test", false, "http://not-example.test", WebURLRequest::FrameTypeNone, "http://not-example.test" },
|
| + { "http://example.test", true, "http://not-example.test", WebURLRequest::FrameTypeNone, "http://not-example.test" },
|
| +
|
| + // If the request's frame type is not 'none', then 'populateRequestData' leaves it alone:
|
| + { "http://example.test", false, "", WebURLRequest::FrameTypeTopLevel, "" },
|
| + { "http://example.test", false, "", WebURLRequest::FrameTypeAuxiliary, "" },
|
| + { "http://example.test", false, "", WebURLRequest::FrameTypeNested, "" },
|
| + };
|
| +
|
| + for (const auto& test : cases) {
|
| + SCOPED_TRACE(::testing::Message() << test.documentURL << " => " << test.serializedOrigin);
|
| + // Set up a new document to ensure sandbox flags are cleared:
|
| + dummyPageHolder = DummyPageHolder::create(IntSize(500, 500));
|
| + dummyPageHolder->page().setDeviceScaleFactor(1.0);
|
| + document = toHTMLDocument(&dummyPageHolder->document());
|
| + FrameFetchContext::provideDocumentToContext(*fetchContext, document.get());
|
| +
|
| + // Setup the test:
|
| + document->setURL(KURL(ParsedURLString, test.documentURL));
|
| + document->setSecurityOrigin(SecurityOrigin::create(document->url()));
|
| +
|
| + if (test.documentSandboxed)
|
| + document->enforceSandboxFlags(SandboxOrigin);
|
| +
|
| + ResourceRequest request("http://example.test/");
|
| + request.setFrameType(test.frameType);
|
| + if (strlen(test.requestorOrigin) == 0)
|
| + request.setRequestorOrigin(nullptr);
|
| + else
|
| + request.setRequestorOrigin(SecurityOrigin::create(KURL(ParsedURLString, test.requestorOrigin)));
|
| +
|
| + // Compare the populated |requestorOrigin| against |test.serializedOrigin|
|
| + fetchContext->populateRequestData(request);
|
| + if (strlen(test.serializedOrigin) == 0)
|
| + EXPECT_EQ(nullptr, request.requestorOrigin().get());
|
| + else
|
| + EXPECT_EQ(String(test.serializedOrigin), request.requestorOrigin()->toString());
|
| +
|
| + EXPECT_EQ(document->firstPartyForCookies(), request.firstPartyForCookies());
|
| + }
|
| +}
|
| +
|
| TEST_F(FrameFetchContextTest, ModifyPriorityForLowPriorityIframes)
|
| {
|
| Settings* settings = document->frame()->settings();
|
|
|