Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/payments/chromium/resources/payment-app.js |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/payments/chromium/resources/payment-app.js b/third_party/WebKit/LayoutTests/http/tests/payments/chromium/resources/payment-app.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f5114e564accee4d1cf04c3628ff15abf6d4f573 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/payments/chromium/resources/payment-app.js |
| @@ -0,0 +1,48 @@ |
| +var testerResolver; |
| +var port; |
| + |
| +self.addEventListener('message', e => { |
| + if (e.data.port) { |
| + port = e.data.port; |
| + port.postMessage('payment_app_ready'); |
| + } else { |
| + // If the message event is initiated from tester, ignores this event. |
|
falken
2017/01/24 02:00:51
What is "tester", and why is it sending a message
|
| + return; |
| + } |
| + e.waitUntil(new Promise((resolve) => { |
| + testerResolver = resolve; |
| + }) |
| + .then(() => { |
| + port.postMessage('payment_app_quit'); |
| + })); |
| +}); |
| + |
| +function getMessageFromPaymentAppWindow() { |
| + return new Promise((resolve, reject) => { |
| + var listener = self.addEventListener('message', e => { |
| + resolve(e.data); |
| + self.removeEventListener(listener); |
|
falken
2017/01/24 02:00:51
nit: Having multiple message handlers seems more c
|
| + }); |
| + }); |
| +} |
| + |
| +self.addEventListener('paymentrequest', e => { |
| + var paymentAppWindow; |
| + |
| + e.waitUntil(clients.openWindow('payment-app-window.html') |
| + .then(windowClient => { |
| + paymentAppWindow = windowClient; |
| + return getMessageFromPaymentAppWindow(); |
| + }) |
| + .then(message => { |
| + if (message == 'payment_app_window_ready') |
|
falken
2017/01/24 02:00:51
What other message could arrive here? Could this b
|
| + paymentAppWindow.postMessage('payment_app_request'); |
| + return getMessageFromPaymentAppWindow(); |
| + }) |
| + .then(message => { |
| + if (message == 'payment_app_response') { |
|
falken
2017/01/24 02:00:51
Same.
|
| + // Disconnect tester. |
| + testerResolver(); |
| + } |
| + })); |
| +}); |