[go: up one dir, main page]

[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.