Commit 352154b4 authored by Sahel Sharify's avatar Sahel Sharify Committed by Commit Bot

[Payments][Android] Move PayerData.java into components/payments/..

This cl moves PayerData.java class into components/payments so that
the WebPaymentIntentHelper.java class can use it without depending on
chrome/browser. It also introduces a new Address class and its
converter utility class so that PayerData.java does not depend on
mojom.PaymentAddress.

Change-Id: Idb737bc2697212af7542d3abbd1488461a7d3074
Bug: 1026667
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2110678
Commit-Queue: Sahel Sharify <sahel@chromium.org>
Reviewed-by: default avatarRouslan Solomakhin <rouslan@chromium.org>
Reviewed-by: default avatarKen Buchanan <kenrb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#752597}
parent 3105d8a8
...@@ -1290,7 +1290,7 @@ chrome_java_sources = [ ...@@ -1290,7 +1290,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/payments/ContactEditor.java", "java/src/org/chromium/chrome/browser/payments/ContactEditor.java",
"java/src/org/chromium/chrome/browser/payments/JourneyLogger.java", "java/src/org/chromium/chrome/browser/payments/JourneyLogger.java",
"java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java", "java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java",
"java/src/org/chromium/chrome/browser/payments/PayerData.java", "java/src/org/chromium/chrome/browser/payments/PaymentAddressTypeConverter.java",
"java/src/org/chromium/chrome/browser/payments/PaymentApp.java", "java/src/org/chromium/chrome/browser/payments/PaymentApp.java",
"java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryDelegate.java", "java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryDelegate.java",
"java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryInterface.java", "java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryInterface.java",
......
...@@ -18,6 +18,7 @@ import org.chromium.base.task.PostTask; ...@@ -18,6 +18,7 @@ import org.chromium.base.task.PostTask;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.components.payments.ErrorStrings; import org.chromium.components.payments.ErrorStrings;
import org.chromium.components.payments.PayerData;
import org.chromium.components.payments.intent.IsReadyToPayServiceHelper; import org.chromium.components.payments.intent.IsReadyToPayServiceHelper;
import org.chromium.components.payments.intent.WebPaymentIntentHelper; import org.chromium.components.payments.intent.WebPaymentIntentHelper;
import org.chromium.components.url_formatter.SchemeDisplay; import org.chromium.components.url_formatter.SchemeDisplay;
......
...@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager.FullCardRequestD ...@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager.FullCardRequestD
import org.chromium.chrome.browser.autofill.PersonalDataManager.NormalizedAddressRequestDelegate; import org.chromium.chrome.browser.autofill.PersonalDataManager.NormalizedAddressRequestDelegate;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.components.payments.ErrorStrings; import org.chromium.components.payments.ErrorStrings;
import org.chromium.components.payments.PayerData;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.payments.mojom.PaymentDetailsModifier; import org.chromium.payments.mojom.PaymentDetailsModifier;
import org.chromium.payments.mojom.PaymentItem; import org.chromium.payments.mojom.PaymentItem;
......
// Copyright 2020 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.
package org.chromium.chrome.browser.payments;
import androidx.annotation.Nullable;
import org.chromium.components.payments.Address;
import org.chromium.payments.mojom.PaymentAddress;
/**
* A Utility class that converts org.chromium.components.payments.Address type to
* org.chromium.payments.mojom.PaymentAddress and vice versa.
*/
public final class PaymentAddressTypeConverter {
/**
* @param address The org.chromium.payments.mojom.PaymentAddress to be converted.
* @return The converted address with type org.chromium.components.payments.Address.
*/
@Nullable
public static Address convertPaymentAddressFromMojo(PaymentAddress address) {
if (address == null) return null;
return new Address(address.country, address.addressLine, address.region, address.city,
address.dependentLocality, address.postalCode, address.sortingCode,
address.organization, address.recipient, address.phone);
}
/**
* @param address The org.chromium.components.payments.Address address to be converted.
* @return The converted address with type org.chromium.payments.mojom.PaymentAddress.
*/
@Nullable
public static PaymentAddress convertAddressToMojoPaymentAddress(Address address) {
if (address == null) return null;
PaymentAddress result = new PaymentAddress();
result.country = address.country;
result.addressLine = address.addressLine;
result.region = address.region;
result.city = address.city;
result.dependentLocality = address.dependentLocality;
result.postalCode = address.postalCode;
result.sortingCode = address.sortingCode;
result.organization = address.organization;
result.recipient = address.recipient;
result.phone = address.phone;
return result;
}
}
...@@ -10,6 +10,7 @@ import androidx.annotation.Nullable; ...@@ -10,6 +10,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.autofill.prefeditor.EditableOption; import org.chromium.chrome.browser.autofill.prefeditor.EditableOption;
import org.chromium.components.payments.PayerData;
import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.payments.mojom.PaymentAddress; import org.chromium.payments.mojom.PaymentAddress;
import org.chromium.payments.mojom.PaymentDetailsModifier; import org.chromium.payments.mojom.PaymentDetailsModifier;
......
...@@ -60,6 +60,7 @@ import org.chromium.components.payments.CurrencyFormatter; ...@@ -60,6 +60,7 @@ import org.chromium.components.payments.CurrencyFormatter;
import org.chromium.components.payments.ErrorStrings; import org.chromium.components.payments.ErrorStrings;
import org.chromium.components.payments.MethodStrings; import org.chromium.components.payments.MethodStrings;
import org.chromium.components.payments.OriginSecurityChecker; import org.chromium.components.payments.OriginSecurityChecker;
import org.chromium.components.payments.PayerData;
import org.chromium.components.payments.PaymentDetailsConverter; import org.chromium.components.payments.PaymentDetailsConverter;
import org.chromium.components.payments.PaymentHandlerHost; import org.chromium.components.payments.PaymentHandlerHost;
import org.chromium.components.payments.PaymentHandlerHost.PaymentHandlerHostDelegate; import org.chromium.components.payments.PaymentHandlerHost.PaymentHandlerHostDelegate;
......
...@@ -9,6 +9,7 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; ...@@ -9,6 +9,7 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
import org.chromium.chrome.browser.autofill.PersonalDataManager.NormalizedAddressRequestDelegate; import org.chromium.chrome.browser.autofill.PersonalDataManager.NormalizedAddressRequestDelegate;
import org.chromium.chrome.browser.autofill.PhoneNumberUtil; import org.chromium.chrome.browser.autofill.PhoneNumberUtil;
import org.chromium.chrome.browser.autofill.prefeditor.EditableOption; import org.chromium.chrome.browser.autofill.prefeditor.EditableOption;
import org.chromium.components.payments.PayerData;
import org.chromium.payments.mojom.PayerDetail; import org.chromium.payments.mojom.PayerDetail;
import org.chromium.payments.mojom.PaymentOptions; import org.chromium.payments.mojom.PaymentOptions;
import org.chromium.payments.mojom.PaymentResponse; import org.chromium.payments.mojom.PaymentResponse;
...@@ -150,7 +151,9 @@ public class PaymentResponseHelper implements NormalizedAddressRequestDelegate { ...@@ -150,7 +151,9 @@ public class PaymentResponseHelper implements NormalizedAddressRequestDelegate {
// Set up the shipping section of the response when it comes from payment app. // Set up the shipping section of the response when it comes from payment app.
if (mPaymentOptions.requestShipping && mSelectedPaymentApp.handlesShippingAddress()) { if (mPaymentOptions.requestShipping && mSelectedPaymentApp.handlesShippingAddress()) {
mPaymentResponse.shippingAddress = mPayerDataFromPaymentApp.shippingAddress; mPaymentResponse.shippingAddress =
PaymentAddressTypeConverter.convertAddressToMojoPaymentAddress(
mPayerDataFromPaymentApp.shippingAddress);
mPaymentResponse.shippingOption = mPayerDataFromPaymentApp.selectedShippingOptionId; mPaymentResponse.shippingOption = mPayerDataFromPaymentApp.selectedShippingOptionId;
} }
......
...@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; ...@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.components.payments.MethodStrings; import org.chromium.components.payments.MethodStrings;
import org.chromium.components.payments.PayerData;
import org.chromium.components.payments.PaymentHandlerHost; import org.chromium.components.payments.PaymentHandlerHost;
import org.chromium.content_public.browser.NavigationHandle; import org.chromium.content_public.browser.NavigationHandle;
import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content_public.browser.RenderFrameHost;
...@@ -605,7 +606,9 @@ public class ServiceWorkerPaymentAppBridge implements PaymentAppFactoryInterface ...@@ -605,7 +606,9 @@ public class ServiceWorkerPaymentAppBridge implements PaymentAppFactoryInterface
@CalledByNative @CalledByNative
private static Object createPayerData(String payerName, String payerPhone, String payerEmail, private static Object createPayerData(String payerName, String payerPhone, String payerEmail,
Object shippingAddress, String selectedShippingOptionId) { Object shippingAddress, String selectedShippingOptionId) {
return new PayerData(payerName, payerPhone, payerEmail, (PaymentAddress) shippingAddress, return new PayerData(payerName, payerPhone, payerEmail,
PaymentAddressTypeConverter.convertPaymentAddressFromMojo(
(PaymentAddress) shippingAddress),
selectedShippingOptionId); selectedShippingOptionId);
} }
......
...@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.payments.ui.PaymentRequestSection.OptionSecti ...@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.payments.ui.PaymentRequestSection.OptionSecti
import org.chromium.chrome.browser.payments.ui.PaymentRequestUI; import org.chromium.chrome.browser.payments.ui.PaymentRequestUI;
import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestObserverForTest; import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestObserverForTest;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.components.payments.PayerData;
import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.test.util.Criteria; import org.chromium.content_public.browser.test.util.Criteria;
......
...@@ -52,8 +52,10 @@ generate_jni("jni_headers") { ...@@ -52,8 +52,10 @@ generate_jni("jni_headers") {
android_library("java") { android_library("java") {
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
sources = [ sources = [
"java/src/org/chromium/components/payments/Address.java",
"java/src/org/chromium/components/payments/CurrencyFormatter.java", "java/src/org/chromium/components/payments/CurrencyFormatter.java",
"java/src/org/chromium/components/payments/OriginSecurityChecker.java", "java/src/org/chromium/components/payments/OriginSecurityChecker.java",
"java/src/org/chromium/components/payments/PayerData.java",
"java/src/org/chromium/components/payments/PaymentDetailsConverter.java", "java/src/org/chromium/components/payments/PaymentDetailsConverter.java",
"java/src/org/chromium/components/payments/PaymentHandlerHost.java", "java/src/org/chromium/components/payments/PaymentHandlerHost.java",
"java/src/org/chromium/components/payments/PaymentManifestDownloader.java", "java/src/org/chromium/components/payments/PaymentManifestDownloader.java",
......
// Copyright 2020 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.
package org.chromium.components.payments;
/**
* An immutable class that mirrors org.chromium.payments.mojom.PaymentAddress.
* https://w3c.github.io/payment-request/#paymentaddress-interface
*/
public class Address {
public final String country;
public final String[] addressLine;
public final String region;
public final String city;
public final String dependentLocality;
public final String postalCode;
public final String sortingCode;
public final String organization;
public final String recipient;
public final String phone;
public Address() {
country = null;
addressLine = null;
region = null;
city = null;
dependentLocality = null;
postalCode = null;
sortingCode = null;
organization = null;
recipient = null;
phone = null;
}
/**
* @param country The country corresponding to the address.
* @param addressLine The most specific part of the address. It can include, for example, a
* street name, a house number, apartment number, a rural delivery route, descriptive
* instructions, or a post office box number.
* @param region The top level administrative subdivision of the country. For example, this can
* be a state, a province, an oblast, or a prefecture.
* @param city The city/town portion of the address.
* @param dependantLocalitly The dependent locality or sublocality within a city. For example,
* neighborhoods, boroughs, districts, or UK dependent localities.
* @param postalCode The postal code or ZIP code, also known as PIN code in India.
* @param sortingCode The sorting code as used in, for example, France.
* @param organization The organization, firm, company, or institution at the address.
* @param recipient The name of the recipient or contact person at the address.
* @param phone The phone number of the recipient or contact person at the address.
*/
public Address(String country, String[] addressLine, String region, String city,
String dependentLocality, String postalCode, String sortingCode, String organization,
String recipient, String phone) {
this.country = country;
this.addressLine = addressLine;
this.region = region;
this.city = city;
this.dependentLocality = dependentLocality;
this.postalCode = postalCode;
this.sortingCode = sortingCode;
this.organization = organization;
this.recipient = recipient;
this.phone = phone;
}
}
...@@ -2,22 +2,27 @@ ...@@ -2,22 +2,27 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.payments; package org.chromium.components.payments;
import org.chromium.payments.mojom.PaymentAddress;
/** /**
* A class used to bundle the payer data received from payment handlers. * An immutable class used to bundle the payer data received from payment handlers.
*/ */
public class PayerData { public class PayerData {
public final String payerName; public final String payerName;
public final String payerPhone; public final String payerPhone;
public final String payerEmail; public final String payerEmail;
public final PaymentAddress shippingAddress; public final Address shippingAddress;
public final String selectedShippingOptionId; public final String selectedShippingOptionId;
/**
* @param payerName The payer's name.
* @param payerPhone The payer's phone number.
* @param payerEmail The payer's email address.
* @param shippingAddress The user selected shippingAddress.
* @param selectedShippingOptionId The user selected shipping option's identifier.
*/
public PayerData(String payerName, String payerPhone, String payerEmail, public PayerData(String payerName, String payerPhone, String payerEmail,
PaymentAddress shippingAddress, String selectedShippingOptionId) { Address shippingAddress, String selectedShippingOptionId) {
this.payerName = payerName; this.payerName = payerName;
this.payerPhone = payerPhone; this.payerPhone = payerPhone;
this.payerEmail = payerEmail; this.payerEmail = payerEmail;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment