Commit d0cb4780 authored by arthursonzogni's avatar arthursonzogni Committed by Commit Bot

COOP access reporting. Update the test suite.

It has been decided to monitor only the attributes marked as CrossOrigin
instead of every attributes. Updating the tests accordingly.

Along the way some improvements.

Bug: chromium:1090273
Change-Id: Iecd0bd478ab348f75f3835105db5bdca9edcc39b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2252339
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: default avatarPâris Meuleman <pmeuleman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#780247}
parent e4965928
This is a testharness.js-based test.
FAIL Call blur assert_not_equals: got disallowed value "timeout"
FAIL Call foo assert_not_equals: got disallowed value "timeout"
FAIL Call location assert_not_equals: got disallowed value "timeout"
FAIL Call opener assert_not_equals: got disallowed value "timeout"
FAIL Call postMessage assert_not_equals: got disallowed value "timeout"
FAIL Call window assert_not_equals: got disallowed value "timeout"
FAIL Read blur assert_not_equals: got disallowed value "timeout"
FAIL Read foo assert_not_equals: got disallowed value "timeout"
FAIL Read location assert_not_equals: got disallowed value "timeout"
FAIL Read opener assert_not_equals: got disallowed value "timeout"
FAIL Read postMessage assert_not_equals: got disallowed value "timeout"
FAIL Read window assert_not_equals: got disallowed value "timeout"
FAIL Write blur assert_not_equals: got disallowed value "timeout"
FAIL Write foo assert_not_equals: got disallowed value "timeout"
FAIL Write location assert_not_equals: got disallowed value "timeout"
FAIL Write opener assert_not_equals: got disallowed value "timeout"
FAIL Write postMessage assert_not_equals: got disallowed value "timeout"
FAIL Write window assert_not_equals: got disallowed value "timeout"
FAIL w => w.blur() assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.close() assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.closed assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.focus() assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.frames assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w[0] assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w[0] = "" assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.length assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.location assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.location = "#" assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w["test"] assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w["test"] = "" assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.opener assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.opener = "" assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.postMessage("") assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.postMessage("", "") assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.self assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.top assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL w => w.window assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
Harness: the test ran to completion.
......@@ -16,28 +16,29 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
let operation = [
//[type , property , operation ] ,
["Call" , "blur" , w => w.blur() ] ,
["Call" , "foo" , w => w.foo() ] ,
["Call" , "location" , w => w.location() ] ,
["Call" , "opener" , w => w.opener() ] ,
["Call" , "postMessage" , w => w.postMessage() ] ,
["Call" , "window" , w => w.window() ] ,
["Read" , "blur" , w => w.blur ] ,
["Read" , "foo" , w => w.foo ] ,
["Read" , "location" , w => w.location ] ,
["Read" , "opener" , w => w.opener ] ,
["Read" , "postMessage" , w => w.postMessage ] ,
["Read" , "window" , w => w.window ] ,
["Write" , "blur" , w => w.blur = "test" ] ,
["Write" , "foo" , w => w.foo = "test" ] ,
["Write" , "location" , w => w.location = "test" ] ,
["Write" , "opener" , w => w.opener = "test" ] ,
["Write" , "postMessage" , w => w.postMessage = "test" ] ,
["Write" , "window" , w => w.window = "test" ] ,
//[property , operation ] ,
["blur" , w => w.blur() ] ,
["close" , w => w.close() ] ,
["closed" , w => w.closed ] ,
["focus" , w => w.focus() ] ,
["frames" , w => w.frames ] ,
["indexed" , w => w[0] ] ,
["indexed" , w => w[0] = "" ] ,
["length" , w => w.length ] ,
["location" , w => w.location ] ,
["location" , w => w.location = "#" ] ,
["named" , w => w["test"] ] ,
["named" , w => w["test"] = "" ] ,
["opener" , w => w.opener ] ,
["opener" , w => w.opener = "" ] ,
["postMessage" , w => w.postMessage("") ] ,
["postMessage" , w => w.postMessage("", "")] ,
["self" , w => w.self ] ,
["top" , w => w.top ] ,
["window" , w => w.window ] ,
];
operation.forEach(([type, property, op]) => {
operation.forEach(([property, op]) => {
promise_test(async t => {
const report_token = token();
const executor_token = token();
......@@ -59,7 +60,8 @@ operation.forEach(([type, property, op]) => {
// 2. Skip the first report about the opener breakage.
let report_1 = await receive(report_token);
assert_not_equals(report_1, "timeout");
assert_not_equals(report_1, "timeout",
"Receive navigation-to-document report");
report_1 = JSON.parse(report_1);
assert_equals(report_1.length, 1);
assert_equals(report_1[0].type, "coop");
......@@ -71,11 +73,11 @@ operation.forEach(([type, property, op]) => {
// 4. A COOP access reports must be sent as a result of (3).
let report_2 = await receive(report_token);
assert_not_equals(report_1, "timeout");
assert_not_equals(report_2, "timeout", "Receive access report");
report_2 = JSON.parse(report_2);
assert_equals(report_2.length, 1);
assert_equals(report_2[0].type, "coop");
assert_equals(report_2[0].url, openee_url);
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
assert_equals(report_2[0].body["violation-type"], "access-to-coop-page");
assert_equals(report_2[0].body["disposition"], "reporting");
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
......@@ -84,7 +86,7 @@ operation.forEach(([type, property, op]) => {
assert_equals(report_2[0].body["lineno"], undefined);
assert_equals(report_2[0].body["colno"], undefined);
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
}, `${type} ${property}`);
}, `${op}`);
});
</script>
This is a testharness.js-based test.
FAIL Call blur assert_not_equals: got disallowed value "timeout"
FAIL Call foo assert_not_equals: got disallowed value "timeout"
FAIL Call location assert_not_equals: got disallowed value "timeout"
FAIL Call opener assert_not_equals: got disallowed value "timeout"
FAIL Call postMessage assert_not_equals: got disallowed value "timeout"
FAIL Call window assert_not_equals: got disallowed value "timeout"
FAIL Read blur assert_not_equals: got disallowed value "timeout"
FAIL Read foo assert_not_equals: got disallowed value "timeout"
FAIL Read location assert_not_equals: got disallowed value "timeout"
FAIL Read opener assert_not_equals: got disallowed value "timeout"
FAIL Read postMessage assert_not_equals: got disallowed value "timeout"
FAIL Read window assert_not_equals: got disallowed value "timeout"
FAIL Write blur assert_not_equals: got disallowed value "timeout"
FAIL Write foo assert_not_equals: got disallowed value "timeout"
FAIL Write location assert_not_equals: got disallowed value "timeout"
FAIL Write opener assert_not_equals: got disallowed value "timeout"
FAIL Write postMessage assert_not_equals: got disallowed value "timeout"
FAIL Write window assert_not_equals: got disallowed value "timeout"
FAIL w => w.blur() assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.close() assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.closed assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.focus() assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.frames assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w[0] assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w[0] = "" assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.length assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.location assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.location = "#" assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w["test"] assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w["test"] = "" assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.opener assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.opener = "" assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.postMessage("") assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.postMessage("", "") assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.self assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.top assert_not_equals: Receive access report got disallowed value "timeout"
FAIL w => w.window assert_not_equals: Receive access report got disallowed value "timeout"
Harness: the test ran to completion.
......@@ -16,28 +16,29 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
let operation = [
//[type , property , operation ] ,
["Call" , "blur" , w => w.blur() ] ,
["Call" , "foo" , w => w.foo() ] ,
["Call" , "location" , w => w.location() ] ,
["Call" , "opener" , w => w.opener() ] ,
["Call" , "postMessage" , w => w.postMessage() ] ,
["Call" , "window" , w => w.window() ] ,
["Read" , "blur" , w => w.blur ] ,
["Read" , "foo" , w => w.foo ] ,
["Read" , "location" , w => w.location ] ,
["Read" , "opener" , w => w.opener ] ,
["Read" , "postMessage" , w => w.postMessage ] ,
["Read" , "window" , w => w.window ] ,
["Write" , "blur" , w => w.blur = "test" ] ,
["Write" , "foo" , w => w.foo = "test" ] ,
["Write" , "location" , w => w.location = "test" ] ,
["Write" , "opener" , w => w.opener = "test" ] ,
["Write" , "postMessage" , w => w.postMessage = "test" ] ,
["Write" , "window" , w => w.window = "test" ] ,
//[property , operation ] ,
["blur" , w => w.blur() ] ,
["close" , w => w.close() ] ,
["closed" , w => w.closed ] ,
["focus" , w => w.focus() ] ,
["frames" , w => w.frames ] ,
["indexed" , w => w[0] ] ,
["indexed" , w => w[0] = "" ] ,
["length" , w => w.length ] ,
["location" , w => w.location ] ,
["location" , w => w.location = "#" ] ,
["named" , w => w["test"] ] ,
["named" , w => w["test"] = "" ] ,
["opener" , w => w.opener ] ,
["opener" , w => w.opener = "" ] ,
["postMessage" , w => w.postMessage("") ] ,
["postMessage" , w => w.postMessage("", "")] ,
["self" , w => w.self ] ,
["top" , w => w.top ] ,
["window" , w => w.window ] ,
];
operation.forEach(([type, property, op]) => {
operation.forEach(([property, op]) => {
promise_test(async t => {
const report_token = token();
const executor_token = token();
......@@ -59,7 +60,8 @@ operation.forEach(([type, property, op]) => {
// 2. Skip the first report about the opener breakage.
let report_1 = await receive(report_token);
assert_not_equals(report_1, "timeout");
assert_not_equals(report_1, "timeout",
"Receive navigation-to-document report");
report_1 = JSON.parse(report_1);
assert_equals(report_1.length, 1);
assert_equals(report_1[0].type, "coop");
......@@ -71,11 +73,11 @@ operation.forEach(([type, property, op]) => {
// 4. A COOP access reports must be sent as a result of (3).
let report_2 = await receive(report_token);
assert_not_equals(report_2, "timeout");
assert_not_equals(report_2, "timeout", "Receive access report");
report_2 = JSON.parse(report_2);
assert_equals(report_2.length, 1);
assert_equals(report_2[0].type, "coop");
assert_equals(report_2[0].url, openee_url);
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
assert_equals(report_2[0].body["violation-type"], "access-to-coop-page");
assert_equals(report_2[0].body["disposition"], "enforce");
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
......@@ -85,7 +87,7 @@ operation.forEach(([type, property, op]) => {
assert_equals(report_2[0].body["colno"], undefined);
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
}, `${type} ${property}`);
}, `${op}`);
});
</script>
This is a testharness.js-based test.
FAIL Call blur assert_not_equals: got disallowed value "timeout"
FAIL Call foo assert_not_equals: got disallowed value "timeout"
FAIL Call location assert_not_equals: got disallowed value "timeout"
FAIL Call opener assert_not_equals: got disallowed value "timeout"
FAIL Call postMessage assert_not_equals: got disallowed value "timeout"
FAIL Call window assert_not_equals: got disallowed value "timeout"
FAIL Read blur assert_not_equals: got disallowed value "timeout"
FAIL Read foo assert_not_equals: got disallowed value "timeout"
FAIL Read location assert_not_equals: got disallowed value "timeout"
FAIL Read opener assert_not_equals: got disallowed value "timeout"
FAIL Read postMessage assert_not_equals: got disallowed value "timeout"
FAIL Read window assert_not_equals: got disallowed value "timeout"
FAIL Write blur assert_not_equals: got disallowed value "timeout"
FAIL Write foo assert_not_equals: got disallowed value "timeout"
FAIL Write location assert_not_equals: got disallowed value "timeout"
FAIL Write opener assert_not_equals: got disallowed value "timeout"
FAIL Write postMessage assert_not_equals: got disallowed value "timeout"
FAIL Write window assert_not_equals: got disallowed value "timeout"
FAIL opener.blur()) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.close()) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.closed) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.focus()) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.frames) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener[0]) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener[0] = "") assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.length) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.location) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.location = "#") assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener["test"]) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener["test"] = "") assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.opener) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.opener = "") assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.postMessage("")) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.postMessage("", "")) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.self) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.top) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
FAIL opener.window) assert_not_equals: Receive navigation-to-document report got disallowed value "timeout"
Harness: the test ran to completion.
......@@ -16,28 +16,29 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
let operation = [
//[type , property , operation ] ,
["Call" , "blur" , "opener.blur()" ] ,
["Call" , "foo" , "opener.foo()" ] ,
["Call" , "location" , "opener.location()" ] ,
["Call" , "opener" , "opener.opener()" ] ,
["Call" , "postMessage" , "opener.postMessage()" ] ,
["Call" , "window" , "opener.window()" ] ,
["Read" , "blur" , "opener.blur" ] ,
["Read" , "foo" , "opener.foo" ] ,
["Read" , "location" , "opener.location" ] ,
["Read" , "opener" , "opener.opener" ] ,
["Read" , "postMessage" , "opener.postMessage" ] ,
["Read" , "window" , "opener.window" ] ,
["Write" , "blur" , "opener.blur = 'test'" ] ,
["Write" , "foo" , "opener.foo = 'test'" ] ,
["Write" , "location" , "opener.location = 'test'" ] ,
["Write" , "opener" , "opener.opener = 'test'" ] ,
["Write" , "postMessage" , "opener.postMessage = 'test'" ] ,
["Write" , "window" , "opener.window = 'test'" ] ,
//[property , operation ] ,
["blur" , 'opener.blur()' ] ,
["close" , 'opener.close()' ] ,
["closed" , 'opener.closed' ] ,
["focus" , 'opener.focus()' ] ,
["frames" , 'opener.frames' ] ,
["indexed" , 'opener[0]' ] ,
["indexed" , 'opener[0] = ""' ] ,
["length" , 'opener.length' ] ,
["location" , 'opener.location' ] ,
["location" , 'opener.location = "#"' ] ,
["named" , 'opener["test"]' ] ,
["named" , 'opener["test"] = ""' ] ,
["opener" , 'opener.opener' ] ,
["opener" , 'opener.opener = ""' ] ,
["postMessage" , 'opener.postMessage("")' ] ,
["postMessage" , 'opener.postMessage("", "")'] ,
["self" , 'opener.self' ] ,
["top" , 'opener.top' ] ,
["window" , 'opener.window' ] ,
];
operation.forEach(([type, property, op]) => {
operation.forEach(([property, op]) => {
promise_test(async t => {
const report_token = token();
const executor_token = token();
......@@ -52,7 +53,8 @@ operation.forEach(([type, property, op]) => {
// 1. Skip the first report about the opener breakage.
let report_1 = await receive(report_token);
assert_not_equals(report_1, "timeout");
assert_not_equals(report_1, "timeout",
"Receive navigation-to-document report");
report_1 = JSON.parse(report_1);
assert_equals(report_1.length, 1);
assert_equals(report_1[0].type, "coop");
......@@ -69,11 +71,12 @@ operation.forEach(([type, property, op]) => {
// 4. A COOP access reports must be sent as a result of (3).
let report_2 = await receive(report_token);
assert_not_equals(report_2, "timeout");
assert_not_equals(report_2, "timeout", "Receive access report");
report_2 = JSON.parse(report_2);
assert_equals(report_2.length, 1);
assert_equals(report_2[0].type, "coop");
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
assert_equals(report_2[0].body["violation-type"], "access-from-coop-page");
assert_equals(report_2[0].body["disposition"], "reporting");
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
......@@ -81,7 +84,7 @@ operation.forEach(([type, property, op]) => {
assert_equals(report_2[0].body["source-file"], undefined);
assert_equals(report_2[0].body["lineno"], undefined);
assert_equals(report_2[0].body["colno"], undefined);
}, `${type} ${property}`);
}, `${op})`);
});
</script>
This is a testharness.js-based test.
FAIL Call blur assert_not_equals: got disallowed value "timeout"
FAIL Call foo assert_not_equals: got disallowed value "timeout"
FAIL Call location assert_not_equals: got disallowed value "timeout"
FAIL Call opener assert_not_equals: got disallowed value "timeout"
FAIL Call postMessage assert_not_equals: got disallowed value "timeout"
FAIL Call window assert_not_equals: got disallowed value "timeout"
FAIL Read blur assert_not_equals: got disallowed value "timeout"
FAIL Read foo assert_not_equals: got disallowed value "timeout"
FAIL Read location assert_not_equals: got disallowed value "timeout"
FAIL Read opener assert_not_equals: got disallowed value "timeout"
FAIL Read postMessage assert_not_equals: got disallowed value "timeout"
FAIL Read window assert_not_equals: got disallowed value "timeout"
FAIL Write blur assert_not_equals: got disallowed value "timeout"
FAIL Write foo assert_not_equals: got disallowed value "timeout"
FAIL Write location assert_not_equals: got disallowed value "timeout"
FAIL Write opener assert_not_equals: got disallowed value "timeout"
FAIL Write postMessage assert_not_equals: got disallowed value "timeout"
FAIL Write window assert_not_equals: got disallowed value "timeout"
FAIL opener.blur() assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.close() assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.closed assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.focus() assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.frames assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener[0] assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener[0] = "" assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.length assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.location assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.location = "#" assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener["test"] assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener["test"] = "" assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.opener assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.opener = "" assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.postMessage("") assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.postMessage("", "") assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.self assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.top assert_not_equals: Received access report got disallowed value "timeout"
FAIL opener.window assert_not_equals: Received access report got disallowed value "timeout"
Harness: the test ran to completion.
......@@ -16,28 +16,29 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
let operation = [
//[type , property , operation ] ,
["Call" , "blur" , "opener.blur()" ] ,
["Call" , "foo" , "opener.foo()" ] ,
["Call" , "location" , "opener.location()" ] ,
["Call" , "opener" , "opener.opener()" ] ,
["Call" , "postMessage" , "opener.postMessage()" ] ,
["Call" , "window" , "opener.window()" ] ,
["Read" , "blur" , "opener.blur" ] ,
["Read" , "foo" , "opener.foo" ] ,
["Read" , "location" , "opener.location" ] ,
["Read" , "opener" , "opener.opener" ] ,
["Read" , "postMessage" , "opener.postMessage" ] ,
["Read" , "window" , "opener.window" ] ,
["Write" , "blur" , "opener.blur = 'test'" ] ,
["Write" , "foo" , "opener.foo = 'test'" ] ,
["Write" , "location" , "opener.location = 'test'" ] ,
["Write" , "opener" , "opener.opener = 'test'" ] ,
["Write" , "postMessage" , "opener.postMessage = 'test'" ] ,
["Write" , "window" , "opener.window = 'test'" ] ,
//[property , operation ] ,
["blur" , 'opener.blur()' ] ,
["close" , 'opener.close()' ] ,
["closed" , 'opener.closed' ] ,
["focus" , 'opener.focus()' ] ,
["frames" , 'opener.frames' ] ,
["indexed" , 'opener[0]' ] ,
["indexed" , 'opener[0] = ""' ] ,
["length" , 'opener.length' ] ,
["location" , 'opener.location' ] ,
["location" , 'opener.location = "#"' ] ,
["named" , 'opener["test"]' ] ,
["named" , 'opener["test"] = ""' ] ,
["opener" , 'opener.opener' ] ,
["opener" , 'opener.opener = ""' ] ,
["postMessage" , 'opener.postMessage("")' ] ,
["postMessage" , 'opener.postMessage("", "")'] ,
["self" , 'opener.self' ] ,
["top" , 'opener.top' ] ,
["window" , 'opener.window' ] ,
];
operation.forEach(([type, property, op]) => {
operation.forEach(([property, op]) => {
promise_test(async t => {
const report_token = token();
const executor_token = token();
......@@ -52,7 +53,8 @@ operation.forEach(([type, property, op]) => {
// 1. Skip the first report about the opener breakage.
let report_1 = await receive(report_token);
assert_not_equals(report_1, "timeout");
assert_not_equals(report_1, "timeout",
"Receive navigation-to-document report");
report_1 = JSON.parse(report_1);
assert_equals(report_1.length, 1);
assert_equals(report_1[0].type, "coop");
......@@ -69,11 +71,12 @@ operation.forEach(([type, property, op]) => {
// 4. A COOP access reports must be sent as a result of (3).
let report_2 = await receive(report_token);
assert_not_equals(report_2, "timeout");
assert_not_equals(report_2, "timeout", "Received access report");
report_2 = JSON.parse(report_2);
assert_equals(report_2.length, 1);
assert_equals(report_2[0].type, "coop");
assert_equals(report_2[0].url, openee_url.replace(/"/g, '%22'));
assert_equals(report_2[0].body["violation-type"], "access-from-coop-page");
assert_equals(report_2[0].body["disposition"], "enforce");
assert_equals(report_2[0].body["effective-policy"], "same-origin-plus-coep");
......@@ -81,7 +84,7 @@ operation.forEach(([type, property, op]) => {
assert_equals(report_2[0].body["source-file"], undefined);
assert_equals(report_2[0].body["lineno"], undefined);
assert_equals(report_2[0].body["colno"], undefined);
}, `${type} ${property}`);
}, `${op}`);
});
</script>
......@@ -49,7 +49,7 @@ const reportToHeaders = function(uuid) {
return {
header: `|header(report-to,${reportToJSON})`,
coopSameOriginHeader: `|header(Cross-Origin-Opener-Policy, same-origin%3Breport-to="${uuid}")`,
coopReportOnlySameOriginHeader: `|header(Cross-Origin-Opener-Policy-Report-Only, same-origin%3Breport-to="${uuid}")`,
coopSameOriginHeader: `|header(Cross-Origin-Opener-Policy,same-origin%3Breport-to="${uuid}")`,
coopReportOnlySameOriginHeader: `|header(Cross-Origin-Opener-Policy-Report-Only,same-origin%3Breport-to="${uuid}")`,
};
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment