Index: third_party/WebKit/LayoutTests/http/tests/payments/chromium/payment-app-invocation.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/payments/chromium/payment-app-invocation.html b/third_party/WebKit/LayoutTests/http/tests/payments/chromium/payment-app-invocation.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d075ace69912e261292418342127cb6175265249 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/payments/chromium/payment-app-invocation.html |
@@ -0,0 +1,61 @@ |
+<!doctype html> |
falken
2017/01/24 02:00:51
Can you put a comment here about why is this test
|
+<meta charset="utf-8"> |
+<title>Payment App: Test for invoking payment app</title> |
+<link rel="help" href="https://w3c.github.io/webpayments-payment-apps-api/#payment-app-invocation"> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<script src="../../serviceworker/resources/test-helpers.js"></script> |
+<script> |
+'use strict'; |
+ |
+promise_test(test => { |
+ const script_url = 'resources/payment-app.js'; |
+ const scope_url = 'resources/'; |
+ |
+ var registration; |
+ var service_worker; |
+ var port; |
+ |
+ return service_worker_unregister_and_register(test, script_url, scope_url) |
+ .then(r => { |
+ registration = r; |
+ service_worker = registration.installing; |
+ return wait_for_state(test, service_worker, 'activated'); |
+ }) |
+ .then(state => { |
+ assert_equals(state, 'activated'); |
falken
2017/01/24 02:00:51
This assert just tests that the helper function is
|
+ return registration.paymentAppManager.setManifest({ |
+ name: 'Payment App', |
+ icon: 'payment-app-icon', |
+ options: [{ |
+ name: 'Visa ****', |
+ icon: 'payment-app-icon', |
+ id: 'payment-app-id', |
+ enabledMethods: ['visa'] |
+ }] |
+ }); |
+ }) |
+ .then(result => { |
+ assert_equals(result, undefined); |
+ var channel = new MessageChannel(); |
+ port = channel.port1; |
+ service_worker.postMessage({port: channel.port2}, [channel.port2]); |
+ return new Promise(resolve => { port.onmessage = resolve; }); |
falken
2017/01/24 02:00:51
If you can, avoid MessageChannel. Just do service_
|
+ }) |
+ .then(e => { |
+ assert_equals(e.data, 'payment_app_ready'); |
+ return new Promise(resolve => { testRunner.getAllPaymentAppIDs(resolve); }); |
+ }) |
+ .then(ids => { |
+ assert_equals(ids.length, 1); |
+ testRunner.invokePaymentApp(ids[0]); |
+ return new Promise(resolve => { port.onmessage = resolve; }); |
+ }) |
+ .then(e => { |
+ assert_equals(e.data, 'payment_app_quit'); |
+ return service_worker_unregister_and_done(test, scope_url); |
+ }) |
+ .catch(unreached_rejection(test)); |
falken
2017/01/24 02:00:51
This catch isn't needed. Just return the entire pr
|
+ }, 'Payment App Invocation Test'); |
+ |
+</script> |