mirror of
https://github.com/servo/servo.git
synced 2025-08-23 14:25:33 +01:00
Update web-platform-tests to revision e87f38097902e16348d4e17f4fe3bc2d0112bff1
This commit is contained in:
parent
2f8fa32e91
commit
db5631a086
381 changed files with 11610 additions and 4232 deletions
|
@ -0,0 +1,84 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/feature-policy/resources/featurepolicy.js></script>
|
||||
<!-- Feature-Policy: fullscreen *; -->
|
||||
<script>
|
||||
'use strict';
|
||||
var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}';
|
||||
var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}';
|
||||
var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html';
|
||||
var cross_origin_src = cross_origin + same_origin_src;
|
||||
var policies = [
|
||||
{allow: "*", sameOriginTestExpect: true, crossOriginTestExpect: true},
|
||||
{allow: "'self'", sameOriginTestExpect: true, crossOriginTestExpect: false},
|
||||
{allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false},
|
||||
{allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: true, crossOriginTestExpect: true}];
|
||||
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, true);
|
||||
}, 'Test frame policy on same origin iframe inherit from header policy.');
|
||||
test(function() {
|
||||
test_frame_policy('fullscreen', cross_origin_src, true);
|
||||
}, 'Test frame policy on 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, 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, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';');
|
||||
}, 'Test frame policy on 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,
|
||||
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,
|
||||
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 that the allow attribute overrides allowfullscreen.
|
||||
for (var i = 0; i < policies.length; i++) {
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
}
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1 @@
|
|||
Feature-Policy: fullscreen *;
|
|
@ -0,0 +1,84 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/feature-policy/resources/featurepolicy.js></script>
|
||||
<!-- Feature-Policy: fullscreen 'self'; -->
|
||||
<script>
|
||||
'use strict';
|
||||
var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}';
|
||||
var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}';
|
||||
var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html';
|
||||
var cross_origin_src = cross_origin + same_origin_src;
|
||||
var policies = [
|
||||
{allow: "*", sameOriginTestExpect: true, crossOriginTestExpect: true},
|
||||
{allow: "'self'", sameOriginTestExpect: true, crossOriginTestExpect: false},
|
||||
{allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false},
|
||||
{allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: true, crossOriginTestExpect: true}];
|
||||
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, true);
|
||||
}, 'Test frame policy on same origin iframe inherit from header policy.');
|
||||
test(function() {
|
||||
test_frame_policy('fullscreen', cross_origin_src, false);
|
||||
}, 'Test frame policy on 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, 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, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';');
|
||||
}, 'Test frame policy on 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,
|
||||
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,
|
||||
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 that the allow attribute overrides allowfullscreen.
|
||||
for (var i = 0; i < policies.length; i++) {
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
}
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1 @@
|
|||
Feature-Policy: fullscreen 'self';
|
|
@ -0,0 +1,109 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<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;
|
||||
// Test feature policy with same_origin_src and cross_origin_src.
|
||||
var policies = [
|
||||
{allow: "*", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: true},
|
||||
{allow: "'self'", sameOriginTestExpect: true, crossOriginTestExpect: false, crossOrigin1TestExpect: false},
|
||||
{allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false, crossOrigin1TestExpect: false},
|
||||
{allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: 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, true);
|
||||
}, 'Test frame policy on same origin iframe inherit from header policy.');
|
||||
test(function() {
|
||||
test_frame_policy('fullscreen', cross_origin_src, true);
|
||||
}, 'Test frame policy on cross origin iframe inherit from header policy.');
|
||||
test(function() {
|
||||
test_frame_policy('fullscreen', cross_origin_src1, false);
|
||||
}, 'Test frame policy on another 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, 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, 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, policies[i].crossOrigin1TestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';');
|
||||
}, 'Test frame policy on another 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,
|
||||
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,
|
||||
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,
|
||||
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] + ';".');
|
||||
}
|
||||
}
|
||||
|
||||
// Test that the allow attribute overrides allowfullscreen.
|
||||
for (var i = 0; i < policies.length; i++) {
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src1, policies[i].crossOrigin1TestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
}
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1 @@
|
|||
Feature-Policy: fullscreen 'self' https://{{domains[www]}}:{{ports[https][0]}} https://www.example.com;
|
|
@ -0,0 +1,84 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/feature-policy/resources/featurepolicy.js></script>
|
||||
<!-- Feature-Policy: fullscreen 'none'; -->
|
||||
<script>
|
||||
'use strict';
|
||||
var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}';
|
||||
var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}';
|
||||
var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html';
|
||||
var cross_origin_src = cross_origin + same_origin_src;
|
||||
var policies = [
|
||||
{allow: "*", sameOriginTestExpect: false, crossOriginTestExpect: false},
|
||||
{allow: "'self'", sameOriginTestExpect: false, crossOriginTestExpect: false},
|
||||
{allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false},
|
||||
{allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: false, crossOriginTestExpect: 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, false);
|
||||
}, 'Test frame policy on same origin iframe inherit from header policy.');
|
||||
test(function() {
|
||||
test_frame_policy('fullscreen', cross_origin_src, false);
|
||||
}, 'Test frame policy on 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, 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, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';');
|
||||
}, 'Test frame policy on 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,
|
||||
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,
|
||||
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 that the allow attribute overrides allowfullscreen.
|
||||
for (var i = 0; i < policies.length; i++) {
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
}
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1 @@
|
|||
Feature-Policy: fullscreen 'none';
|
|
@ -0,0 +1,23 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
"use strict";
|
||||
|
||||
// https://wicg.github.io/feature-policy/
|
||||
|
||||
var idlArray = new IdlArray();
|
||||
|
||||
function doTest(idl) {
|
||||
idlArray.add_untested_idls("interface HTMLIFrameElement {};");
|
||||
idlArray.add_idls(idl);
|
||||
idlArray.add_objects({
|
||||
HTMLIframeElement: ['document.createElement("iframe")'],
|
||||
})
|
||||
idlArray.test();
|
||||
done();
|
||||
}
|
||||
|
||||
promise_test(function () {
|
||||
return fetch("/interfaces/feature-policy.idl").then(response => response.text())
|
||||
.then(doTest);
|
||||
}, "Test interfaces");
|
|
@ -383,3 +383,33 @@ function test_subframe_header_policy(
|
|||
});
|
||||
}, test_name);
|
||||
}
|
||||
|
||||
// This function tests that frame policy allows a given feature correctly. A
|
||||
// feature is allowed in a frame either through inherited policy or specified
|
||||
// by iframe allow attribute.
|
||||
// Arguments:
|
||||
// feature: feature name.
|
||||
// src: the URL to load in the frame.
|
||||
// test_expect: boolean value of whether the feature should be allowed.
|
||||
// allow: optional, the allow attribute (container policy) of the iframe.
|
||||
// allowfullscreen: optional, boolean value of allowfullscreen attribute.
|
||||
function test_frame_policy(
|
||||
feature, src, test_expect, allow, allowfullscreen) {
|
||||
let frame = document.createElement('iframe');
|
||||
document.body.appendChild(frame);
|
||||
// frame_policy should be dynamically updated as allow and allowfullscreen is
|
||||
// updated.
|
||||
var frame_policy = frame.policy;
|
||||
if (typeof allow !== 'undefined') {
|
||||
frame.setAttribute('allow', allow);
|
||||
}
|
||||
if (!!allowfullscreen) {
|
||||
frame.setAttribute('allowfullscreen', true);
|
||||
}
|
||||
frame.src = src;
|
||||
if (test_expect) {
|
||||
assert_true(frame_policy.allowedFeatures().includes(feature));
|
||||
} else {
|
||||
assert_false(frame_policy.allowedFeatures().includes(feature));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue