Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: content/test/data/payments/payment_app.js

Issue 2893823004: [Payments] Implement openWindow for service worker based payment handler (Closed)
Patch Set: rename ipc messages Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 self.addEventListener('paymentrequest', e => { 5 self.addEventListener('paymentrequest', e => {
6 e.waitUntil(clients.matchAll({includeUncontrolled: true}).then(clients => { 6 e.waitUntil(clients.matchAll({includeUncontrolled: true}).then(clients => {
7 clients.forEach(client => { 7 clients.forEach(client => {
8 if (client.url.indexOf('payment_app_invocation.html') != -1) { 8 if (client.url.indexOf('payment_app_invocation.html') != -1) {
9 client.postMessage(e.topLevelOrigin); 9 client.postMessage(e.topLevelOrigin);
10 client.postMessage(e.paymentRequestOrigin); 10 client.postMessage(e.paymentRequestOrigin);
11 client.postMessage(e.paymentRequestId); 11 client.postMessage(e.paymentRequestId);
12 client.postMessage(JSON.stringify(e.methodData)); 12 client.postMessage(JSON.stringify(e.methodData));
13 client.postMessage(JSON.stringify(e.total)); 13 client.postMessage(JSON.stringify(e.total));
14 client.postMessage(JSON.stringify(e.modifiers)); 14 client.postMessage(JSON.stringify(e.modifiers));
15 client.postMessage(e.instrumentKey); 15 client.postMessage(e.instrumentKey);
16 } 16 }
17 }); 17 });
18 })); 18 }));
19 19
20 // SW -------------------- openWindow() ------------------> payment_app_window 20 // SW -------------------- openWindow() ------------------> payment_app_window
21 // SW <----- postMessage('payment_app_window_ready') ------ payment_app_window 21 // SW <----- postMessage('payment_app_window_ready') ------ payment_app_window
22 // SW -------- postMessage('payment_app_request') --------> payment_app_window 22 // SW -------- postMessage('payment_app_request') --------> payment_app_window
23 // SW <-- postMessage({methodName: 'test', details: {}}) -- payment_app_window 23 // SW <-- postMessage({methodName: 'test', details: {}}) -- payment_app_window
24 e.respondWith(new Promise(resolve => { 24 e.respondWith(new Promise((resolve, reject) => {
25 let payment_app_window = undefined; 25 let payment_app_window = undefined;
26 let window_ready = false; 26 let window_ready = false;
27 27
28 let maybeSendPaymentRequest = function() { 28 let maybeSendPaymentRequest = function() {
29 if (payment_app_window && window_ready) 29 if (payment_app_window && window_ready)
30 payment_app_window.postMessage('payment_app_request'); 30 payment_app_window.postMessage('payment_app_request');
31 }; 31 };
32 32
33 self.addEventListener('message', e => { 33 self.addEventListener('message', e => {
34 if (e.data == "payment_app_window_ready") { 34 if (e.data == "payment_app_window_ready") {
35 window_ready = true; 35 window_ready = true;
36 maybeSendPaymentRequest(); 36 maybeSendPaymentRequest();
37 return; 37 return;
38 } 38 }
39 39
40 if (e.data.methodName) { 40 if (e.data.methodName) {
41 resolve(e.data); 41 resolve(e.data);
42 return; 42 return;
43 } 43 }
44 }); 44 });
45 45
46 // Open a window 46 // Open a window for the payment instrument.
47 clients.openWindow('payment_app_window.html') 47 var payment_app_web_page = 'payment_app_window.html';
48 if(e.instrumentKey == 'bobpay-payment-app-id') {
49 payment_app_web_page = 'https://bobpay.com';
50 }
51 e.openWindow(payment_app_web_page)
48 .then(window_client => { 52 .then(window_client => {
49 payment_app_window = window_client; 53 payment_app_window = window_client;
50 maybeSendPaymentRequest(); 54 maybeSendPaymentRequest();
51 }) 55 })
56 .catch(error => {
57 reject(error);
58 });
52 })); 59 }));
53 }); 60 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698