[AA] Hideable terms section.
Before this patch the terms section was always shown. There are
occasions where that section does not make sense. This patch introduces
a new flag to hide the T&C section altogether.
This is the M-76 merge for http://crrev/c/1640991.
(cherry picked from commit da20bb471b2c8d3381228ce6fa58e1fe06abb172)
Bug: 973026
Bug: b/134096141
Change-Id: I83dd88f35151934ad4c8c4b8e276582024294441
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1640991
Commit-Queue: Mathias Carlen <mcarlen@chromium.org>
Reviewed-by: Clemens Arbesser <arbesser@google.com>
Cr-Original-Commit-Position: refs/heads/master@{#665841}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1658020
Reviewed-by: Mathias Carlen <mcarlen@chromium.org>
Cr-Commit-Position: refs/branch-heads/3809@{#284}
Cr-Branched-From: d82dec1a818f378c464ba307ddd9c92133eac355-refs/heads/master@{#665002}
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestBinder.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestBinder.java
index 20463f3..668a546 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestBinder.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestBinder.java
@@ -231,6 +231,10 @@
view.mPaymentMethodSection.setVisible(
(model.get(AssistantPaymentRequestModel.REQUEST_PAYMENT)));
return true;
+ } else if (propertyKey == AssistantPaymentRequestModel.REQUEST_TERMS_AND_CONDITIONS) {
+ view.mTermsSection.setTermsListVisible(
+ model.get(AssistantPaymentRequestModel.REQUEST_TERMS_AND_CONDITIONS));
+ return true;
}
return false;
}
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestModel.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestModel.java
index 425b079..ccd4613 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestModel.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestModel.java
@@ -57,6 +57,8 @@
new WritableBooleanPropertyKey();
public static final WritableBooleanPropertyKey REQUEST_PAYMENT =
new WritableBooleanPropertyKey();
+ public static final WritableBooleanPropertyKey REQUEST_TERMS_AND_CONDITIONS =
+ new WritableBooleanPropertyKey();
public static final WritableObjectPropertyKey<List<PersonalDataManager.AutofillProfile>>
AVAILABLE_PROFILES = new WritableObjectPropertyKey<>();
@@ -78,8 +80,9 @@
public AssistantPaymentRequestModel() {
super(DELEGATE, WEB_CONTENTS, VISIBLE, SHIPPING_ADDRESS, PAYMENT_METHOD, CONTACT_DETAILS,
TERMS_STATUS, REQUEST_NAME, REQUEST_EMAIL, REQUEST_PHONE, REQUEST_SHIPPING_ADDRESS,
- REQUEST_PAYMENT, AVAILABLE_PROFILES, AVAILABLE_AUTOFILL_PAYMENT_METHODS,
- SUPPORTED_BASIC_CARD_NETWORKS, SUPPORTED_PAYMENT_METHODS, EXPANDED_SECTION);
+ REQUEST_PAYMENT, REQUEST_TERMS_AND_CONDITIONS, AVAILABLE_PROFILES,
+ AVAILABLE_AUTOFILL_PAYMENT_METHODS, SUPPORTED_BASIC_CARD_NETWORKS,
+ SUPPORTED_PAYMENT_METHODS, EXPANDED_SECTION);
}
@CalledByNative
@@ -108,6 +111,11 @@
}
@CalledByNative
+ private void setRequestTermsAndConditions(boolean requestTermsAndConditions) {
+ set(REQUEST_TERMS_AND_CONDITIONS, requestTermsAndConditions);
+ }
+
+ @CalledByNative
private void setSupportedBasicCardNetworks(String[] supportedBasicCardNetworks) {
set(SUPPORTED_BASIC_CARD_NETWORKS, Arrays.asList(supportedBasicCardNetworks));
}
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestTermsSection.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestTermsSection.java
index 9ff33cc..5810381 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestTermsSection.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestTermsSection.java
@@ -97,7 +97,11 @@
mListener = listener;
}
+ public void setTermsListVisible(boolean visible) {
+ mTermsList.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+
View getView() {
return mView;
}
-}
\ No newline at end of file
+}
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
index 906088e..94ca49e 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -653,6 +653,8 @@
env, jmodel, payment_options->request_shipping);
Java_AssistantPaymentRequestModel_setRequestPayment(
env, jmodel, payment_options->request_payment_method);
+ Java_AssistantPaymentRequestModel_setRequestTermsAndConditions(
+ env, jmodel, payment_options->request_terms_and_conditions);
Java_AssistantPaymentRequestModel_setSupportedBasicCardNetworks(
env, jmodel,
base::android::ToJavaArrayOfStrings(
diff --git a/components/autofill_assistant/browser/actions/get_payment_information_action.cc b/components/autofill_assistant/browser/actions/get_payment_information_action.cc
index ce2b808..c4db06d 100644
--- a/components/autofill_assistant/browser/actions/get_payment_information_action.cc
+++ b/components/autofill_assistant/browser/actions/get_payment_information_action.cc
@@ -36,6 +36,8 @@
proto_.get_payment_information();
auto payment_options = std::make_unique<PaymentRequestOptions>();
+ payment_options->request_terms_and_conditions =
+ get_payment_information.request_terms_and_conditions();
if (get_payment_information.has_contact_details()) {
auto contact_details = get_payment_information.contact_details();
payment_options->request_payer_email =
diff --git a/components/autofill_assistant/browser/controller.cc b/components/autofill_assistant/browser/controller.cc
index 45e6217a7..619aea1 100644
--- a/components/autofill_assistant/browser/controller.cc
+++ b/components/autofill_assistant/browser/controller.cc
@@ -918,7 +918,8 @@
bool payment_method_ok = !payment_request_options_->request_payment_method ||
payment_request_info_->card;
- bool terms_ok = payment_request_info_->terms_and_conditions != NOT_SELECTED;
+ bool terms_ok = payment_request_info_->terms_and_conditions != NOT_SELECTED ||
+ !payment_request_options_->request_terms_and_conditions;
bool continue_button_enabled =
contact_info_ok && shipping_address_ok && payment_method_ok && terms_ok;
diff --git a/components/autofill_assistant/browser/payment_request.h b/components/autofill_assistant/browser/payment_request.h
index 1323f89..fa8b56b 100644
--- a/components/autofill_assistant/browser/payment_request.h
+++ b/components/autofill_assistant/browser/payment_request.h
@@ -53,6 +53,7 @@
bool request_payer_phone = false;
bool request_shipping = false;
bool request_payment_method = false;
+ bool request_terms_and_conditions = true;
std::vector<std::string> supported_basic_card_networks;
std::string default_email;
std::string confirm_button_text;
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto
index 1ac036ca1..87df20f2 100644
--- a/components/autofill_assistant/browser/service.proto
+++ b/components/autofill_assistant/browser/service.proto
@@ -1014,6 +1014,8 @@
optional ContactDetailsProto contact_details = 5;
// Override for the text of the confirm button in the payment request.
optional string confirm_button_text = 7;
+ // When 'false', hide the terms and conditions box in the UI.
+ optional bool request_terms_and_conditions = 9 [default = true];
}
// Resets Autofill Assistant: clears any state and server payload.