mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
8c762db568
Automatic update from web-platform-tests Split feature-policy-frame-policy-allowed-for-some.https.sub.html The wpt test was flaky because it has too much content: all 108 subtests live in a single test file, which causes the test sometimes exceed the timeout limit(30s). The solution to resolve this flakiness is to split this big test file into smaller ones, so that each of them can have less content. Bug: 1067391 Change-Id: Ib6ed1469895a76cff43c7e33dd24809242859044 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2169757 Reviewed-by: Ian Clelland <iclelland@chromium.org> Commit-Queue: Charlie Hu <chenleihu@google.com> Cr-Commit-Position: refs/heads/master@{#764788} -- wpt-commits: 795e198205d20d865622e35f59c9e7d93e85601b wpt-pr: 23344
137 lines
6.9 KiB
HTML
137 lines
6.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta name="timeout" content="long">
|
|
<script src=/resources/testharness.js></script>
|
|
<script src=/resources/testharnessreport.js></script>
|
|
</head>
|
|
<body>
|
|
<script src=/feature-policy/resources/featurepolicy.js></script>
|
|
<!-- Feature-Policy: fullscreen 'self' cross_origin https://www.example.com; -->
|
|
<script>
|
|
'use strict';
|
|
var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}';
|
|
var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}';
|
|
var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}';
|
|
var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html';
|
|
var cross_origin_src = cross_origin + same_origin_src;
|
|
var cross_origin_src1 = cross_origin1 + same_origin_src;
|
|
var data_src = 'data:text/html,<h1>data: URL</h1>';
|
|
// Test feature policy with same_origin_src and cross_origin_src.
|
|
var policies = [
|
|
{allow: "*", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: true, dataOriginTestExpect: false},
|
|
{allow: "'self'", sameOriginTestExpect: true, crossOriginTestExpect: false, crossOrigin1TestExpect: false, dataOriginTestExpect: false},
|
|
{allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false, crossOrigin1TestExpect: false, dataOriginTestExpect: false},
|
|
{allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: false, dataOriginTestExpect: false}];
|
|
var pipe_front = '?pipe=sub|header(Feature-Policy,fullscreen ';
|
|
var pipe_end = ';)';
|
|
var header_policies = ["*", "'self'", "'none'"];
|
|
|
|
// Test that frame.policy inherits from parent's header policy when allow
|
|
// attribute is not specified.
|
|
test(function() {
|
|
test_frame_policy('fullscreen', same_origin_src, undefined, true);
|
|
}, 'Test frame policy on same origin iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', cross_origin_src, undefined, true);
|
|
}, 'Test frame policy on cross origin iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', cross_origin_src1, undefined, false);
|
|
}, 'Test frame policy on another cross origin iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', undefined, true, true);
|
|
}, 'Test frame policy on srcdoc iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', same_origin_src, true, true);
|
|
}, 'Test frame policy on srcdoc + same origin iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', cross_origin_src, true, true);
|
|
}, 'Test frame policy on srcdoc + cross origin iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', cross_origin_src1, true, true);
|
|
}, 'Test frame policy on srcdoc + another cross origin iframe inherit from header policy.');
|
|
test(function() {
|
|
test_frame_policy('fullscreen', data_src, undefined, false);
|
|
}, 'Test frame policy on data: URL cross origin iframe inherit from header policy.');
|
|
|
|
// Test frame policy with allow attribute set to be one of the policies above.
|
|
for (var i = 0; i < policies.length; i++) {
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', same_origin_src, undefined,
|
|
policies[i].sameOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', cross_origin_src, undefined,
|
|
policies[i].crossOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', cross_origin_src1, undefined,
|
|
policies[i].crossOrigin1TestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', undefined, true, policies[i].sameOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on srcdoc iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', same_origin_src, true, policies[i].sameOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on srcdoc + same origin iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', cross_origin_src, true, policies[i].sameOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on srcdoc + cross origin iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', cross_origin_src1, true, policies[i].sameOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on srcdoc + another cross origin iframe with allow = "' + policies[i].allow + '".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen', data_src, undefined, policies[i].dataOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on data: URL cross origin iframe with allow = "' + policies[i].allow + '".');
|
|
}
|
|
|
|
// Test that the header policy of the iframe document does not change the
|
|
// frame policy.
|
|
for (var i = 0; i < policies.length; i++) {
|
|
for (var j = 0; j < header_policies.length; j++) {
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen',
|
|
same_origin_src + pipe_front + header_policies[j] + pipe_end,
|
|
undefined, policies[i].sameOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
|
'" and header policy = "Feature-Policy: fullscreen ' + header_policies[j] + ';".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen',
|
|
cross_origin_src + pipe_front + header_policies[j] + pipe_end,
|
|
undefined, policies[i].crossOriginTestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
|
'" and header policy = "Feature-Policy: fullscreen ' + header_policies[j] + ';".');
|
|
test(function() {
|
|
test_frame_policy(
|
|
'fullscreen',
|
|
cross_origin_src1 + pipe_front + header_policies[j] + pipe_end,
|
|
undefined, policies[i].crossOrigin1TestExpect,
|
|
'fullscreen ' + policies[i].allow + ';');
|
|
}, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow +
|
|
'" and header policy = "Feature-Policy: fullscreen ' + header_policies[j] + ';".');
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|