Commit 09d2eea3 authored by Sahel Sharify's avatar Sahel Sharify Committed by Commit Bot

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

This is a reland of 352154b4

Original change's description:
> [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: Rouslan Solomakhin <rouslan@chromium.org>
> Reviewed-by: Ken Buchanan <kenrb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#752597}

TBR=kenrb@chromium.org,rouslan@chromium.org

Bug: 1026667
Change-Id: I2d7eb6016a51060ae10d6d9aed73eba841aea68c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2120963Reviewed-by: default avatarSahel Sharify <sahel@chromium.org>
Commit-Queue: Sahel Sharify <sahel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753322}
parent 14cf257c
...@@ -1292,6 +1292,7 @@ chrome_java_sources = [ ...@@ -1292,6 +1292,7 @@ chrome_java_sources = [
"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/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;
......
...@@ -4,32 +4,7 @@ ...@@ -4,32 +4,7 @@
package org.chromium.chrome.browser.payments; package org.chromium.chrome.browser.payments;
import org.chromium.payments.mojom.PaymentAddress;
/** /**
* A class used to bundle the payer data received from payment handlers. * A stub class to be removed once clank dependencies are resolved.
*/ */
public class PayerData { public class PayerData {}
public final String payerName;
public final String payerPhone;
public final String payerEmail;
public final PaymentAddress shippingAddress;
public final String selectedShippingOptionId;
public PayerData(String payerName, String payerPhone, String payerEmail,
PaymentAddress shippingAddress, String selectedShippingOptionId) {
this.payerName = payerName;
this.payerPhone = payerPhone;
this.payerEmail = payerEmail;
this.shippingAddress = shippingAddress;
this.selectedShippingOptionId = selectedShippingOptionId;
}
public PayerData() {
payerName = null;
payerPhone = null;
payerEmail = null;
shippingAddress = null;
selectedShippingOptionId = null;
}
}
// 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;
......
...@@ -61,6 +61,7 @@ import org.chromium.components.payments.ErrorMessageUtil; ...@@ -61,6 +61,7 @@ import org.chromium.components.payments.ErrorMessageUtil;
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;
......
...@@ -54,9 +54,11 @@ generate_jni("jni_headers") { ...@@ -54,9 +54,11 @@ 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/ErrorMessageUtil.java", "java/src/org/chromium/components/payments/ErrorMessageUtil.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 dependentLocalitly 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;
}
}
// Copyright 2019 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 used to bundle the payer data received from payment handlers.
*/
public class PayerData {
public final String payerName;
public final String payerPhone;
public final String payerEmail;
public final Address shippingAddress;
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,
Address shippingAddress, String selectedShippingOptionId) {
this.payerName = payerName;
this.payerPhone = payerPhone;
this.payerEmail = payerEmail;
this.shippingAddress = shippingAddress;
this.selectedShippingOptionId = selectedShippingOptionId;
}
public PayerData() {
payerName = null;
payerPhone = null;
payerEmail = null;
shippingAddress = null;
selectedShippingOptionId = null;
}
}
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