OLD | NEW |
1 <?php | 1 <?php |
2 // Copyright 2016 The Chromium Authors. All rights reserved. | 2 // Copyright 2016 The Chromium Authors. All rights reserved. |
3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
5 | 5 |
6 // This test ensures that fullscreen feature when enabled for self only works | 6 // This test ensures that fullscreen feature when enabled for self only works |
7 // in the same orgin but not cross origins when allowfullscreen is set. No | 7 // in the same orgin but not cross origins when allowfullscreen is set. No |
8 // iframe may call it when allowfullscreen is not set. | 8 // iframe may call it when allowfullscreen is not set. |
9 | 9 |
10 Header("Feature-Policy: {\"fullscreen\": [\"self\"]}"); | 10 Header("Feature-Policy: {\"fullscreen\": [\"self\"]}"); |
11 ?> | 11 ?> |
12 | 12 |
13 <!DOCTYPE html> | 13 <!DOCTYPE html> |
14 <script src="../../resources/testharness.js"></script> | 14 <script src="../../resources/testharness.js"></script> |
15 <script src="../../resources/testharnessreport.js"></script> | 15 <script src="../../resources/testharnessreport.js"></script> |
16 <iframe id="f1"></iframe> | 16 <iframe></iframe> |
17 <iframe id="f2" allowfullscreen></iframe> | 17 <iframe allowfullscreen></iframe> |
18 <script> | 18 <script> |
19 var srcs = [ | 19 var srcs = [ |
20 "resources/feature-policy-fullscreen.html", | 20 "resources/feature-policy-fullscreen.html", |
21 "http://localhost:8000/feature-policy/resources/feature-policy-fullscreen.html
" | 21 "http://localhost:8000/feature-policy/resources/feature-policy-fullscreen.html
" |
22 ]; | 22 ]; |
23 var f1 = document.getElementById('f1'); | |
24 var f2 = document.getElementById('f2'); | |
25 | 23 |
26 function loadFrames(iframe) { | 24 function loadFrame(iframe, src) { |
27 for (var src of srcs) { | 25 var allowfullscreen = iframe.allowFullscreen; |
28 promise_test(function(t) { | 26 promise_test(function() { |
29 iframe.src = src; | 27 iframe.src = src; |
30 return new Promise(function(resolve, reject) { | 28 return new Promise(function(resolve, reject) { |
31 window.addEventListener('message', function(e) { | 29 window.addEventListener('message', function(e) { |
32 resolve(e.data); | 30 resolve(e.data); |
33 }, { once: true }); | 31 }, { once: true }); |
34 }).then(function(data) { | 32 }).then(function(data) { |
35 if (src === srcs[0] || iframe.id === "f2") { | 33 // fullscreen is enabled if: |
36 assert_true(data.enabled, 'Document.fullscreenEnabled:'); | 34 // a. same origin; or |
37 assert_equals(data.type, 'change', 'Document.requestFullscreen():'); | 35 // b. enabled by allowfullscreen. |
38 } else { | 36 if (src === srcs[0] || allowfullscreen) { |
39 assert_false(data.enabled, 'Document.fullscreenEnabled:'); | 37 assert_true(data.enabled, 'Document.fullscreenEnabled:'); |
40 assert_equals(data.type, 'error', 'Document.requestFullscreen():'); | 38 assert_equals(data.type, 'change', 'Document.requestFullscreen():'); |
41 } | 39 } else { |
42 }); | 40 assert_false(data.enabled, 'Document.fullscreenEnabled:'); |
43 }, 'Fullscreen enabled for self on URL: ' + src + ' with allowfullscreen = '
+ iframe.allowFullscreen); | 41 assert_equals(data.type, 'error', 'Document.requestFullscreen():'); |
| 42 } |
| 43 }); |
| 44 }, 'Fullscreen enabled for self on URL: ' + src + ' with allowfullscreen = ' + |
| 45 allowfullscreen); |
| 46 } |
| 47 |
| 48 window.onload = function() { |
| 49 var iframes = document.getElementsByTagName('iframe'); |
| 50 for (var iframe of iframes) { |
| 51 for (var src of srcs) { |
| 52 loadFrame(iframe, src); |
| 53 } |
44 } | 54 } |
45 } | 55 } |
46 | |
47 loadFrames(f1); | |
48 loadFrames(f2); | |
49 </script> | 56 </script> |
OLD | NEW |