| OLD | NEW |
| (Empty) |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/guid.h" | |
| 6 #include "base/strings/utf_string_conversions.h" | |
| 7 #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" | |
| 8 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" | |
| 9 #include "components/autofill/core/browser/autofill_profile.h" | |
| 10 #include "components/autofill/core/browser/autofill_test_utils.h" | |
| 11 #include "components/autofill/core/browser/field_types.h" | |
| 12 #include "components/autofill/core/browser/personal_data_manager.h" | |
| 13 #include "ui/views/controls/label.h" | |
| 14 | |
| 15 namespace payments { | |
| 16 | |
| 17 autofill::AutofillProfile CreateProfileWithPartialAddress() { | |
| 18 autofill::AutofillProfile profile = autofill::test::GetFullProfile2(); | |
| 19 profile.SetRawInfo(autofill::ADDRESS_HOME_LINE1, base::ASCIIToUTF16("")); | |
| 20 profile.SetRawInfo(autofill::ADDRESS_HOME_LINE2, base::ASCIIToUTF16("")); | |
| 21 profile.SetRawInfo(autofill::ADDRESS_HOME_CITY, base::ASCIIToUTF16("")); | |
| 22 profile.SetRawInfo(autofill::ADDRESS_HOME_STATE, base::ASCIIToUTF16("")); | |
| 23 return profile; | |
| 24 } | |
| 25 | |
| 26 class PaymentRequestProfileListTest : public PaymentRequestBrowserTestBase { | |
| 27 protected: | |
| 28 PaymentRequestProfileListTest() | |
| 29 : PaymentRequestBrowserTestBase( | |
| 30 "/payment_request_free_shipping_test.html") {} | |
| 31 }; | |
| 32 | |
| 33 IN_PROC_BROWSER_TEST_F(PaymentRequestProfileListTest, PrioritizeCompleteness) { | |
| 34 autofill::AutofillProfile complete = autofill::test::GetFullProfile(); | |
| 35 autofill::AutofillProfile partial = CreateProfileWithPartialAddress(); | |
| 36 partial.set_use_count(1000); | |
| 37 | |
| 38 AddAutofillProfile(complete); | |
| 39 AddAutofillProfile(partial); | |
| 40 | |
| 41 // In the Personal Data Manager, the partial address is more frecent. | |
| 42 autofill::PersonalDataManager* personal_data_manager = GetDataManager(); | |
| 43 std::vector<autofill::AutofillProfile*> profiles = | |
| 44 personal_data_manager->GetProfiles(); | |
| 45 ASSERT_EQ(2UL, profiles.size()); | |
| 46 EXPECT_EQ(partial, *profiles[0]); | |
| 47 EXPECT_EQ(complete, *profiles[1]); | |
| 48 | |
| 49 InvokePaymentRequestUI(); | |
| 50 | |
| 51 PaymentRequest* request = GetPaymentRequests(GetActiveWebContents()).front(); | |
| 52 | |
| 53 // The complete profile should be selected. | |
| 54 ASSERT_TRUE(request->state()->selected_shipping_profile()); | |
| 55 EXPECT_EQ(complete, *request->state()->selected_shipping_profile()); | |
| 56 | |
| 57 // It should appear first in the shipping profiles. | |
| 58 ASSERT_EQ(2UL, request->state()->shipping_profiles().size()); | |
| 59 EXPECT_EQ(complete, *request->state()->shipping_profiles()[0]); | |
| 60 EXPECT_EQ(partial, *request->state()->shipping_profiles()[1]); | |
| 61 | |
| 62 // And both should appear in the UI. | |
| 63 OpenShippingAddressSectionScreen(); | |
| 64 views::View* sheet = dialog_view()->GetViewByID( | |
| 65 static_cast<int>(DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW)); | |
| 66 ASSERT_EQ(2, sheet->child_count()); | |
| 67 views::View* first_label = sheet->child_at(0)->GetViewByID( | |
| 68 static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_1)); | |
| 69 views::View* second_label = sheet->child_at(1)->GetViewByID( | |
| 70 static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_1)); | |
| 71 | |
| 72 EXPECT_EQ(base::ASCIIToUTF16("John H. Doe"), | |
| 73 static_cast<views::Label*>(first_label)->text()); | |
| 74 EXPECT_EQ(base::ASCIIToUTF16("Jane A. Smith"), | |
| 75 static_cast<views::Label*>(second_label)->text()); | |
| 76 } | |
| 77 | |
| 78 } // namespace payments | |
| OLD | NEW |