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

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

Issue 1749153002: CORS-RFC1918: Teach ResourceRequest about "external" requests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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/loader/FrameFetchContextTest.cpp
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
index 758f79866bae13e8c2ddbc36fcb7efb65a276cb3..f5249a6a5df2cff6255bd78c8788e96ba46ffe6e 100644
--- a/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
@@ -580,4 +580,86 @@ TEST_F(FrameFetchContextDisplayedCertificateErrorsTest, MemoryCacheCertificateEr
fetchContext->dispatchDidLoadResourceFromMemoryCache(resource.get(), WebURLRequest::FrameTypeNone, WebURLRequest::RequestContextImage);
}
+TEST_F(FrameFetchContextTest, SetIsExternalRequestForPublicDocument)
+{
+ EXPECT_FALSE(document->isHostedInReservedIPRange());
+
+ struct TestCase {
+ const char* url;
+ bool isExternalExpectation;
+ } cases[] = {
+ { "http://example.com/", false },
+ { "https://example.com/", false },
+ { "data:text/html,whatever", false },
+ { "file:///etc/passwd", false },
+ { "blob:http://example.com/", false },
+
+ { "http://localhost/", true },
+ { "http://127.0.0.1/", true },
+ { "http://127.0.0.1:8000/", true },
+ { "http://192.168.1.1:8000/", true }
+ };
+ RuntimeEnabledFeatures::setCorsRFC1918Enabled(false);
+ for (const auto& test : cases) {
+ ResourceRequest mainRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource);
+ EXPECT_FALSE(mainRequest.isExternalRequest());
+
+ ResourceRequest subRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource);
+ EXPECT_FALSE(subRequest.isExternalRequest());
+ }
+
+ RuntimeEnabledFeatures::setCorsRFC1918Enabled(true);
+ for (const auto& test : cases) {
+ ResourceRequest mainRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource);
+ EXPECT_EQ(mainRequest.isExternalRequest(), test.isExternalExpectation);
+
+ ResourceRequest subRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource);
+ EXPECT_EQ(subRequest.isExternalRequest(), test.isExternalExpectation);
+ }
+}
+
+TEST_F(FrameFetchContextTest, SetIsExternalRequestForPrivateDocument)
+{
+ document->setHostedInReservedIPRange(true);
+
+ struct TestCase {
+ const char* url;
+ } cases[] = {
+ { "http://example.com/" },
+ { "https://example.com/" },
+ { "data:text/html,whatever" },
+ { "file:///etc/passwd" },
+ { "blob:http://example.com/" },
+ { "http://localhost/" },
+ { "http://127.0.0.1/" },
+ { "http://127.0.0.1:8000/" },
+ { "http://192.168.1.1:8000/" }
+ };
+ RuntimeEnabledFeatures::setCorsRFC1918Enabled(false);
+ for (const auto& test : cases) {
+ ResourceRequest mainRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource);
+ EXPECT_FALSE(mainRequest.isExternalRequest());
+
+ ResourceRequest subRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource);
+ EXPECT_FALSE(subRequest.isExternalRequest());
+ }
+
+ RuntimeEnabledFeatures::setCorsRFC1918Enabled(true);
+ for (const auto& test : cases) {
+ ResourceRequest mainRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource);
+ EXPECT_FALSE(mainRequest.isExternalRequest());
+
+ ResourceRequest subRequest(test.url);
+ fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource);
+ EXPECT_FALSE(subRequest.isExternalRequest());
+ }
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698