[COOP] Access reporting. Update the test.
The prototype: https://chromium-review.googlesource.com/c/chromium/src/+/2223934 will soon properly reports: report > url report > body > violation-type report > body > property report > body > source-file report > body > lineno report > body > colno This patch reflect this in the existing tests and fixes a few bugs. Bug: 1090273 Change-Id: I840a07ef98979ab7b36286124161ca165c228303 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2238114 Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org> Reviewed-by: Pâris Meuleman <pmeuleman@chromium.org> Cr-Commit-Position: refs/heads/master@{#776942}
This commit is contained in:

committed by
Commit Bot

parent
a2f41e9d91
commit
e106756f1b
third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/access-reporting
@ -16,28 +16,28 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
let operation = [
|
||||
//[test name , 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" ] ,
|
||||
//[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" ] ,
|
||||
];
|
||||
|
||||
operation.forEach(([test, op]) => {
|
||||
operation.forEach(([type, property, op]) => {
|
||||
promise_test(async t => {
|
||||
const report_token = token();
|
||||
const executor_token = token();
|
||||
@ -45,7 +45,7 @@ operation.forEach(([test, op]) => {
|
||||
|
||||
const reportTo = reportToHeaders(report_token);
|
||||
const openee_url = cross_origin + executor_path +
|
||||
reportTo.header + reportTo.coopReportOnlySameOrigin + coep_header +
|
||||
reportTo.header + reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${executor_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
t.add_cleanup(() => send(executor_token, "window.close()"))
|
||||
@ -75,10 +75,16 @@ operation.forEach(([test, op]) => {
|
||||
report_2 = JSON.parse(report_2);
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].body["violation-type"], "access");
|
||||
assert_equals(report_2[0].url, openee_url);
|
||||
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");
|
||||
}, `${test}`);
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
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);
|
||||
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
|
||||
}, `${type} ${property}`);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
@ -16,28 +16,28 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
let operation = [
|
||||
//[test name , 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" ] ,
|
||||
//[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" ] ,
|
||||
];
|
||||
|
||||
operation.forEach(([test, op]) => {
|
||||
operation.forEach(([type, property, op]) => {
|
||||
promise_test(async t => {
|
||||
const report_token = token();
|
||||
const executor_token = token();
|
||||
@ -45,7 +45,7 @@ operation.forEach(([test, op]) => {
|
||||
|
||||
const reportTo = reportToHeaders(report_token);
|
||||
const openee_url = cross_origin + executor_path +
|
||||
reportTo.header + reportTo.coopSameOrigin + coep_header +
|
||||
reportTo.header + reportTo.coopSameOriginHeader + coep_header +
|
||||
`&uuid=${executor_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
t.add_cleanup(() => send(executor_token, "window.close()"))
|
||||
@ -75,10 +75,17 @@ operation.forEach(([test, op]) => {
|
||||
report_2 = JSON.parse(report_2);
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].body["violation-type"], "access");
|
||||
assert_equals(report_2[0].url, openee_url);
|
||||
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");
|
||||
}, `${test}`);
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
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);
|
||||
// TODO(arthursonzogni): Add check for report > body > blocked-window-url
|
||||
|
||||
}, `${type} ${test}`);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
@ -16,28 +16,28 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
let operation = [
|
||||
//[test name , 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'" ] ,
|
||||
//[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'" ] ,
|
||||
];
|
||||
|
||||
operation.forEach(([test, op]) => {
|
||||
operation.forEach(([type, property, op]) => {
|
||||
promise_test(async t => {
|
||||
const report_token = token();
|
||||
const executor_token = token();
|
||||
@ -45,7 +45,7 @@ operation.forEach(([test, op]) => {
|
||||
|
||||
const reportTo = reportToHeaders(report_token);
|
||||
const openee_url = cross_origin + executor_path +
|
||||
reportTo.header + reportTo.coopReportOnlySameOrigin + coep_header +
|
||||
reportTo.header + reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${executor_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
t.add_cleanup(() => send(executor_token, "window.close()"))
|
||||
@ -74,10 +74,14 @@ operation.forEach(([test, op]) => {
|
||||
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].body["violation-type"], "access");
|
||||
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");
|
||||
}, `${test}`);
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
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}`);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
@ -16,28 +16,28 @@ const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
|
||||
let operation = [
|
||||
//[test name , 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'" ] ,
|
||||
//[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'" ] ,
|
||||
];
|
||||
|
||||
operation.forEach(([test, op]) => {
|
||||
operation.forEach(([type, property, op]) => {
|
||||
promise_test(async t => {
|
||||
const report_token = token();
|
||||
const executor_token = token();
|
||||
@ -45,7 +45,7 @@ operation.forEach(([test, op]) => {
|
||||
|
||||
const reportTo = reportToHeaders(report_token);
|
||||
const openee_url = cross_origin + executor_path +
|
||||
reportTo.header + reportTo.coopSameOrigin + coep_header +
|
||||
reportTo.header + reportTo.coopSameOriginHeader + coep_header +
|
||||
`&uuid=${executor_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
t.add_cleanup(() => send(executor_token, "window.close()"));
|
||||
@ -59,7 +59,7 @@ operation.forEach(([test, op]) => {
|
||||
assert_equals(report_1[0].body["violation-type"], "navigation-to-document");
|
||||
assert_equals(report_1[0].body["disposition"], "enforce");
|
||||
|
||||
// 3. Try to access the opener. A report is sent, because of COOP-RO+COEP.
|
||||
// 3. Try to access the opener. A report is sent, because of COOP+COEP.
|
||||
send(executor_token, `
|
||||
try {${op}} catch(e) {}
|
||||
send("${callback_token}", "Done");
|
||||
@ -74,10 +74,14 @@ operation.forEach(([test, op]) => {
|
||||
|
||||
assert_equals(report_2.length, 1);
|
||||
assert_equals(report_2[0].type, "coop");
|
||||
assert_equals(report_2[0].body["violation-type"], "access");
|
||||
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");
|
||||
}, `${test}`);
|
||||
assert_equals(report_2[0].body["property"], property);
|
||||
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}`);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
@ -49,7 +49,7 @@ const reportToHeaders = function(uuid) {
|
||||
|
||||
return {
|
||||
header: `|header(report-to,${reportToJSON})`,
|
||||
coopSameOrigin: `|header(Cross-Origin-Opener-Policy, same-origin%3Breport-to="${uuid}")`,
|
||||
coopReportOnlySameOrigin: `|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}")`,
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user