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 payment feature when enabled for self works in | 6 // This test ensures that payment feature when enabled for self works in |
7 // the same origin or when allowpaymentrequest is set. No cross-origin iframe | 7 // the same origin or when allowpaymentrequest is set. No cross-origin iframe |
8 // may call it when allowpaymentrequest is not set. | 8 // may call it when allowpaymentrequest is not set. |
9 | 9 |
10 Header("Feature-Policy: {\"payment\": [\"self\"]}"); | 10 Header("Feature-Policy: {\"payment\": [\"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 <script src="resources/helper.js"></script> |
| 17 <iframe></iframe> |
| 18 <iframe allowpaymentrequest></iframe> |
16 <script> | 19 <script> |
17 if (window.testRunner) { | 20 var srcs = [ |
18 testRunner.dumpAsText(); | 21 "resources/feature-policy-payment.html", |
19 testRunner.dumpChildFramesAsText(); | 22 "http://localhost:8000/feature-policy/resources/feature-policy-payment.html" |
20 } | 23 ]; |
| 24 |
| 25 function loadFrame(iframe, src) { |
| 26 var allowpaymentrequest = iframe.hasAttribute('allowpaymentrequest'); |
| 27 promise_test(function() { |
| 28 iframe.src = src; |
| 29 return new Promise(function(resolve, reject) { |
| 30 window.addEventListener('message', function(e) { |
| 31 resolve(e.data); |
| 32 }, { once: true }); |
| 33 }).then(function(data) { |
| 34 // paymentrequest is enabled if: |
| 35 // a. same origin; or |
| 36 // b. enabled by allowpaymentrequest. |
| 37 if (src === srcs[0] || allowpaymentrequest) { |
| 38 assert_true(data.enabled, 'Paymentrequest():'); |
| 39 } else { |
| 40 assert_false(data.enabled, 'Paymentrequest():'); |
| 41 assert_equals(data.name, 'SecurityError', 'Exception Name:'); |
| 42 assert_equals(data.message, "Failed to construct 'PaymentRequest': " + |
| 43 "Must be in a top-level browsing context or an iframe needs to " + |
| 44 "specify 'allowpaymentrequest' explicitly", 'Error Message:'); |
| 45 } |
| 46 }); |
| 47 }, 'Paymentrequest enabled for self on URL: ' + src + ' with '+ |
| 48 'allowpaymentrequest = ' + allowpaymentrequest); |
| 49 } |
| 50 |
| 51 window.onload = function() { |
| 52 loadIframes(srcs); |
| 53 } |
21 </script> | 54 </script> |
22 <iframe id="f1" src="resources/feature-policy-payment-enabled.html"></iframe> | |
23 <iframe id="f2" src="http://localhost:8000/feature-policy/resources/feature-poli
cy-payment-disabled.html"></iframe> | |
24 <iframe id="f3" src="resources/feature-policy-payment-enabled.html" allowpayment
request></iframe> | |
25 <iframe id="f4" src="http://localhost:8000/feature-policy/resources/feature-poli
cy-payment-enabled.html" allowpaymentrequest></iframe> | |
OLD | NEW |