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

Unified Diff: third_party/WebKit/LayoutTests/http/tests/payments/chromium/resources/payment-app.js

Issue 2646313002: PaymentApp: Implement invokePaymentApp() in renderer side. (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
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();
+ }
+ }));
+});

Powered by Google App Engine
This is Rietveld 408576698