Chromium Code Reviews| Index: content/test/data/payments/payment_app.js |
| diff --git a/content/test/data/payments/payment_app.js b/content/test/data/payments/payment_app.js |
| index 8d6068bf7a65239f8b2f4d0bcd784a1977e89bc7..ce0246420a7d16d230adb2c358fdc5a69ff162b9 100644 |
| --- a/content/test/data/payments/payment_app.js |
| +++ b/content/test/data/payments/payment_app.js |
| @@ -2,44 +2,38 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -function sendResultToTest(data) { |
|
arthursonzogni
2017/03/30 15:15:50
I removed this function. I don't think it is calle
|
| - clients.matchAll({includeUncontrolled: true}).then(clients => { |
| - clients.forEach(client => { |
| - if (client.url.indexOf('payment_app_invocation.html') != -1) { |
| - client.postMessage(data); |
| - } |
| - }); |
| - }); |
| -} |
| - |
| -function getMessageFromPaymentAppWindow() { |
| - return new Promise((resolve, reject) => { |
| - var listener = self.addEventListener('message', e => { |
| - resolve(e.data); |
| - self.removeEventListener(listener); |
| - }); |
| - }); |
| -} |
| - |
| self.addEventListener('paymentrequest', e => { |
| - var payment_app_window; |
| - |
| // SW -------------------- openWindow() ------------------> payment_app_window |
| // SW <----- postMessage('payment_app_window_ready') ------ payment_app_window |
| // SW -------- postMessage('payment_app_request') --------> payment_app_window |
| // SW <-- postMessage({methodName: 'test', details: {}}) -- payment_app_window |
| e.respondWith(new Promise(resolve => { |
| + let payment_app_window = undefined; |
| + let window_ready = false; |
| + |
| + let maybeSendPaymentRequest = function() { |
| + if (payment_app_window && window_ready) |
| + payment_app_window.postMessage('payment_app_request'); |
| + }; |
| + |
| + self.addEventListener('message', e => { |
| + if (e.data == "payment_app_window_ready") { |
| + window_ready = true; |
| + maybeSendPaymentRequest(); |
| + return; |
| + } |
| + |
| + if (e.data.methodName) { |
| + resolve(e.data); |
| + return; |
| + } |
| + }); |
| + |
| + // Open a window |
| clients.openWindow('payment_app_window.html') |
| - .then(window_client => { |
| - payment_app_window = window_client; |
| - return getMessageFromPaymentAppWindow(); |
| - }) |
| - .then(message => { |
| - payment_app_window.postMessage('payment_app_request'); |
| - return getMessageFromPaymentAppWindow(); |
| - }) |
| - .then(message => { |
| - resolve(message); |
| - }); |
| + .then(window_client => { |
| + payment_app_window = window_client; |
| + maybeSendPaymentRequest(); |
| + }) |
| })); |
| }); |