| <!doctype html> |
| <title>PaymentRequest setting allowpaymentrequest after load and then navigating</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <div id="log"></div> |
| <script> |
| async_test((t) => { |
| const iframe = document.createElement('iframe'); |
| // no allowpaymentrequest attribute |
| |
| let i = 0; |
| |
| const path = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1); |
| iframe.src = "https://{{domains[www1]}}:{{ports[https][0]}}" + path + "echo-PaymentRequest.html"; |
| iframe.onload = t.step_func(() => { |
| if (i === 1) { |
| iframe.allowPaymentRequest = true; |
| } |
| iframe.contentWindow.postMessage('What is the result of new PaymentRequest(...)?', '*'); |
| }); |
| |
| window.onmessage = t.step_func((e) => { |
| i++; |
| if (i === 1) { |
| assert_equals(e.data.message, 'Exception', 'before navigation'); |
| assert_array_equals(e.data.details, [true /* ex instanceof DOMException*/, 18 /* ex.code */, 'SecurityError' /* ex.name */], 'before navigation'); |
| |
| // Navigate the iframe. This will fire a second 'load' event on the iframe. |
| iframe.contentWindow.location.href = iframe.src + '?2'; |
| } else { |
| assert_equals(e.data.message, 'Success', 'after navigation'); |
| t.done(); |
| } |
| }); |
| |
| document.body.appendChild(iframe); |
| }); |
| </script> |