| <!DOCTYPE html> | |
| <meta charset=utf-8> | |
| <link rel="help" href="https://w3c.github.io/web-based-payment-handler/"> | |
| <title>Test for untrusted event</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> | |
| <script> | |
| async function getResultFromSW(serviceWorkerContainer) { | |
| return new Promise((resolve, reject) => { | |
| serviceWorkerContainer.addEventListener('message', listener = e => { | |
| serviceWorkerContainer.removeEventListener('message', listener); | |
| if (e.data) { | |
| resolve(e.data); | |
| } else { | |
| reject(); | |
| } | |
| }); | |
| }); | |
| } | |
| promise_test(async t => { | |
| const registration = await service_worker_unregister_and_register( | |
| t, 'untrusted-event.js', 'payment-app/'); | |
| await wait_for_state(t, registration.installing, 'activated'); | |
| const controlled_window = (await with_iframe('payment-app/payment.html')).contentWindow; | |
| // Test for untrusted PaymentRequestEvent | |
| { | |
| const result = getResultFromSW(controlled_window.navigator.serviceWorker); | |
| controlled_window.navigator.serviceWorker.controller.postMessage('paymentrequest'); | |
| const expected = [ | |
| "InvalidStateError", /* respondWith */ | |
| "InvalidStateError" /* openWindow */ | |
| ]; | |
| assert_array_equals(await result, expected); | |
| } | |
| // Test for untrusted CanMakePaymentEvent | |
| { | |
| const result = getResultFromSW(controlled_window.navigator.serviceWorker); | |
| controlled_window.navigator.serviceWorker.controller.postMessage('canmakepayment'); | |
| const expected = [ | |
| "InvalidStateError", /* respondWith */ | |
| ]; | |
| assert_array_equals(await result, expected); | |
| } | |
| }); | |
| </script> |