Index: chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc |
diff --git a/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ba4165a4383376ee08bca43eebdddf6f2d1a89b3 |
--- /dev/null |
+++ b/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc |
@@ -0,0 +1,78 @@ |
+// Copyright 2017 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. |
+ |
+#include "base/guid.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" |
+#include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" |
+#include "components/autofill/core/browser/autofill_profile.h" |
+#include "components/autofill/core/browser/autofill_test_utils.h" |
+#include "components/autofill/core/browser/field_types.h" |
+#include "components/autofill/core/browser/personal_data_manager.h" |
+#include "ui/views/controls/label.h" |
+ |
+namespace payments { |
+ |
+autofill::AutofillProfile CreateProfileWithPartialAddress() { |
+ autofill::AutofillProfile profile = autofill::test::GetFullProfile2(); |
+ profile.SetRawInfo(autofill::ADDRESS_HOME_LINE1, base::ASCIIToUTF16("")); |
+ profile.SetRawInfo(autofill::ADDRESS_HOME_LINE2, base::ASCIIToUTF16("")); |
+ profile.SetRawInfo(autofill::ADDRESS_HOME_CITY, base::ASCIIToUTF16("")); |
+ profile.SetRawInfo(autofill::ADDRESS_HOME_STATE, base::ASCIIToUTF16("")); |
+ return profile; |
+} |
+ |
+class PaymentRequestProfileListTest : public PaymentRequestBrowserTestBase { |
+ protected: |
+ PaymentRequestProfileListTest() |
+ : PaymentRequestBrowserTestBase( |
+ "/payment_request_free_shipping_test.html") {} |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(PaymentRequestProfileListTest, PrioritizeCompleteness) { |
+ autofill::AutofillProfile complete = autofill::test::GetFullProfile(); |
+ autofill::AutofillProfile partial = CreateProfileWithPartialAddress(); |
+ partial.set_use_count(1000); |
+ |
+ AddAutofillProfile(complete); |
+ AddAutofillProfile(partial); |
+ |
+ // In the Personal Data Manager, the partial address is more frecent. |
+ autofill::PersonalDataManager* personal_data_manager = GetDataManager(); |
+ std::vector<autofill::AutofillProfile*> profiles = |
+ personal_data_manager->GetProfilesToSuggest(); |
+ ASSERT_EQ(2UL, profiles.size()); |
+ EXPECT_EQ(partial, *profiles[0]); |
+ EXPECT_EQ(complete, *profiles[1]); |
+ |
+ InvokePaymentRequestUI(); |
+ |
+ PaymentRequest* request = GetPaymentRequests(GetActiveWebContents()).front(); |
+ |
+ // The complete profile should be selected. |
+ ASSERT_TRUE(request->state()->selected_shipping_profile()); |
+ EXPECT_EQ(complete, *request->state()->selected_shipping_profile()); |
+ |
+ // It should appear first in the shipping profiles. |
+ ASSERT_EQ(2UL, request->state()->shipping_profiles().size()); |
+ EXPECT_EQ(complete, *request->state()->shipping_profiles()[0]); |
+ EXPECT_EQ(partial, *request->state()->shipping_profiles()[1]); |
+ |
+ // And both should appear in the UI. |
+ OpenShippingAddressSectionScreen(); |
+ views::View* sheet = dialog_view()->GetViewByID( |
+ static_cast<int>(DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW)); |
+ ASSERT_EQ(2, sheet->child_count()); |
+ views::View* first_label = sheet->child_at(0)->GetViewByID( |
+ static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_1)); |
+ views::View* second_label = sheet->child_at(1)->GetViewByID( |
+ static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_1)); |
+ |
+ EXPECT_EQ(base::ASCIIToUTF16("John H. Doe"), |
+ static_cast<views::Label*>(first_label)->text()); |
+ EXPECT_EQ(base::ASCIIToUTF16("Jane A. Smith"), |
+ static_cast<views::Label*>(second_label)->text()); |
+} |
+ |
+} // namespace payments |