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

Unified Diff: chrome/test/data/android/payments/dynamic_shipping.js

Issue 2018203002: PaymentRequest integration test for dynamic shipping (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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: chrome/test/data/android/payments/dynamic_shipping.js
diff --git a/chrome/test/data/android/payments/dynamic_shipping.js b/chrome/test/data/android/payments/dynamic_shipping.js
new file mode 100644
index 0000000000000000000000000000000000000000..3fafa26eb67e377acdac74f0a2bedabf36c45edf
--- /dev/null
+++ b/chrome/test/data/android/payments/dynamic_shipping.js
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2016 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* global PaymentRequest:false */
+/* global toDictionary:false */
+
+/**
+ * Launches the PaymentRequest UI that offers free shipping in California and
+ * $5.00 shipping in US. Does not allow shipping outside of US.
+ */
+function buy() { // eslint-disable-line no-unused-vars
+ try {
+ var details = {
+ items: [
+ {
+ id: 'sub',
+ label: 'Subtotal',
+ amount: {currency: 'USD', value: '5.00'}
+ },
+ {
+ id: 'total',
+ label: 'Total',
+ amount: {currency: 'USD', value: '5.00'}
+ }
+ ]
+ };
+
+ var request =
+ new PaymentRequest(['visa'], details, {requestShipping: true});
+
+ request.addEventListener('shippingaddresschange', function(evt) {
+ evt.updateWith(new Promise(function(resolve) {
+ resolve(updateDetails(details, request.shippingAddress));
+ }));
+ });
+
+ request.show()
+ .then(function(resp) {
+ resp.complete(true)
+ .then(function() {
+ print(request.shippingOption + '<br>' +
+ JSON.stringify(
+ toDictionary(request.shippingAddress), undefined, 2) +
+ '<br>' + resp.methodName + '<br>' +
+ JSON.stringify(resp.details, undefined, 2));
+ })
+ .catch(function(error) {
+ print(error.message);
+ });
+ })
+ .catch(function(error) {
+ print(error.message);
+ });
+ } catch (error) {
+ print(error.message);
+ }
+}
+
+/**
+ * Updates the shopping cart with the appropriate shipping prices according to
+ * the shipping address.
+ * @param {object} details - The shopping cart.
+ * @param {ShippingAddress} addr - The shipping address.
+ * @return {object} The updated shopping cart.
+ */
+function updateDetails(details, addr) {
+ if (addr.regionCode === 'US') {
+ var shippingOption = {
+ id: '',
+ label: '',
+ amount: {currency: 'USD', value: '0.00'}
+ };
+ if (addr.administrativeArea === 'CA') {
+ shippingOption.id = 'ca';
+ shippingOption.label = 'Free shipping in California';
+ details.items[details.items.length - 1].amount.value = '5.00';
+ } else {
+ shippingOption.id = 'us';
+ shippingOption.label = 'Standard shipping in US';
+ shippingOption.amount.value = '5.00';
+ details.items[details.items.length - 1].amount.value = '10.00';
+ }
+ if (details.items.length === 3) {
+ details.items.splice(-1, 0, shippingOption);
+ } else {
+ details.items.splice(-2, 1, shippingOption);
+ }
+ details.shippingOptions = [shippingOption];
+ } else {
+ delete details.shippingOptions;
+ }
+ return details;
+}

Powered by Google App Engine
This is Rietveld 408576698