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

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js

Issue 2798353002: Un-skipped wpt frame-ancestors tests (Closed)
Patch Set: Rebase-update Created 3 years, 8 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/LayoutTests/external/wpt/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/frame-ancestors-test.js b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
similarity index 56%
rename from third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/frame-ancestors-test.js
rename to third_party/WebKit/LayoutTests/external/wpt/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
index 7eb1be60e43bef89aa3b624b94f3df70413fb5b7..795842707616f02443445c29e3957ccb58b49d5e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/frame-ancestors-test.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
@@ -4,33 +4,36 @@ var CROSS_ORIGIN = false;
var EXPECT_BLOCK = true;
var EXPECT_LOAD = false;
-var SAMEORIGIN_ORIGIN = "http://127.0.0.1:8000";
-var CROSSORIGIN_ORIGIN = "http://localhost:8080";
+var SAMEORIGIN_ORIGIN = "{{location[scheme]}}://{{location[host]}}";
+var CROSSORIGIN_ORIGIN = "http://{{domains[www1]}}:{{ports[http][1]}}";
-window.jsTestIsAsync = true;
-window.wasPostTestScriptParsed = true;
+var test;
-if (window.testRunner)
- testRunner.dumpChildFramesAsText();
+function endTest(failed, message) {
+ if (typeof test === 'undefined') return;
+
+ if (failed) {
+ test.step(function() {
+ assert_unreached(message);
+ test.done();
+ });
+ }
+ else test.done({message: message});
+}
window.addEventListener("message", function (e) {
- if (window.parent != window) {
+ if (window.parent != window)
window.parent.postMessage(e.data, "*");
- } else {
- if (e.data)
- testFailed("The inner IFrame failed.");
- else
- testPassed("The inner IFrame passed.");
-
- finishJSTest();
- }
+ else
+ if (e.data.type === 'test_result')
+ endTest(e.data.failed, "Inner IFrame msg: " + e.data.msg);
});
function injectNestedIframe(policy, parent, child, expectation, isSandboxed) {
var iframe = document.createElement("iframe");
- var url = "/security/contentSecurityPolicy/resources/frame-in-frame.pl?"
- + "policy=" + policy
+ var url = "/content-security-policy/frame-ancestors/support/frame-in-frame.sub.html"
+ + "?policy=" + policy
+ "&parent=" + parent
+ "&child=" + child
+ "&expectation=" + expectation;
@@ -49,8 +52,10 @@ function injectIFrame(policy, sameOrigin, expectBlock) {
iframe.addEventListener("load", iframeLoaded(expectBlock));
iframe.addEventListener("error", iframeLoaded(expectBlock));
- var url = "/security/contentSecurityPolicy/resources/frame-ancestors.pl?policy=" + policy;
- if (!sameOrigin)
+ var url = "/content-security-policy/frame-ancestors/support/frame-ancestors.sub.html?policy=" + policy;
+ if (sameOrigin)
+ url = SAMEORIGIN_ORIGIN + url;
+ else
url = CROSSORIGIN_ORIGIN + url;
iframe.src = url;
@@ -60,32 +65,40 @@ function injectIFrame(policy, sameOrigin, expectBlock) {
function iframeLoaded(expectBlock) {
return function(ev) {
var failed = true;
+ var message = "";
try {
console.log("IFrame load event fired: the IFrame's location is '" + ev.target.contentWindow.location.href + "'.");
if (expectBlock) {
- testFailed("The IFrame should have been blocked (or cross-origin). It wasn't.");
+ message = "The IFrame should have been blocked (or cross-origin). It wasn't.";
failed = true;
} else {
- testPassed("The IFrame should not have been blocked. It wasn't.");
+ message = "The IFrame should not have been blocked. It wasn't.";
failed = false;
}
} catch (ex) {
- debug("IFrame load event fired: the IFrame is cross-origin (or was blocked).");
+ console.log("IFrame load event fired: the IFrame is cross-origin (or was blocked).");
if (expectBlock) {
- testPassed("The IFrame should have been blocked (or cross-origin). It was.");
+ message = "The IFrame should have been blocked (or cross-origin). It was.";
failed = false;
} else {
- testFailed("The IFrame should not have been blocked. It was.");
+ message = "The IFrame should not have been blocked. It was.";
failed = true;
}
}
if (window.parent != window)
- window.parent.postMessage(failed, '*');
+ window.parent.postMessage({type: 'test_result', failed: failed, message: message}, '*');
else
- finishJSTest();
+ endTest(failed, message);
};
}
+function originFrameShouldBe(child, expectation, policy) {
+ if (child == "cross" && expectation == "blocked") crossOriginFrameShouldBeBlocked(policy);
+ if (child == "same" && expectation == "blocked") sameOriginFrameShouldBeBlocked(policy);
+ if (child == "cross" && expectation == "allowed") crossOriginFrameShouldBeAllowed(policy);
+ if (child == "same" && expectation == "allowed") sameOriginFrameShouldBeAllowed(policy);
+}
+
function crossOriginFrameShouldBeBlocked(policy) {
window.onload = function () {
injectIFrame(policy, CROSS_ORIGIN, EXPECT_BLOCK);
@@ -112,12 +125,12 @@ function sameOriginFrameShouldBeAllowed(policy) {
function testNestedIFrame(policy, parent, child, expectation) {
window.onload = function () {
- injectNestedIframe(policy, parent == SAME_ORIGIN ? "same" : "cross", child == SAME_ORIGIN ? "same" : "cross", expectation == EXPECT_LOAD ? "Allowed" : "Blocked", false /* isSandboxed */);
+ injectNestedIframe(policy, parent == SAME_ORIGIN ? "same" : "cross", child == SAME_ORIGIN ? "same" : "cross", expectation == EXPECT_LOAD ? "allowed" : "blocked", false /* isSandboxed */);
};
}
function testNestedSandboxedIFrame(policy, parent, child, expectation) {
window.onload = function () {
- injectNestedIframe(policy, parent == SAME_ORIGIN ? "same" : "cross", child == SAME_ORIGIN ? "same" : "cross", expectation == EXPECT_LOAD ? "Allowed" : "Blocked", true /* isSandboxed */);
+ injectNestedIframe(policy, parent == SAME_ORIGIN ? "same" : "cross", child == SAME_ORIGIN ? "same" : "cross", expectation == EXPECT_LOAD ? "allowed" : "blocked", true /* isSandboxed */);
};
}

Powered by Google App Engine
This is Rietveld 408576698