| Index: chrome/browser/ui/views/payments/payment_request_views_util.cc
|
| diff --git a/chrome/browser/ui/views/payments/payment_request_views_util.cc b/chrome/browser/ui/views/payments/payment_request_views_util.cc
|
| index 12f398de86602ca2eecf59578b10c412bf3ed8a2..8e5ab480146f3ddbf16c7024133978478c76e2f6 100644
|
| --- a/chrome/browser/ui/views/payments/payment_request_views_util.cc
|
| +++ b/chrome/browser/ui/views/payments/payment_request_views_util.cc
|
| @@ -66,14 +66,13 @@ base::string16 GetAddressFromProfile(const autofill::AutofillProfile& profile,
|
| }
|
|
|
| // |s1|, |s2|, and |s3| are lines identifying the profile. |s1| is the
|
| -// "headline" which may be emphasized depending on |type|. |error| is a
|
| -// message indicating errors that need to be resolved before using this
|
| -// profile.
|
| -std::unique_ptr<views::View> GetProfileLabel(AddressStyleType type,
|
| - const base::string16& s1,
|
| - const base::string16& s2,
|
| - const base::string16& s3,
|
| - const base::string16& error) {
|
| +// "headline" which may be emphasized depending on |type|. If |disabled_state|
|
| +// is true, the labels will look disabled.
|
| +std::unique_ptr<views::View> GetBaseProfileLabel(AddressStyleType type,
|
| + const base::string16& s1,
|
| + const base::string16& s2,
|
| + const base::string16& s3,
|
| + bool disabled_state = false) {
|
| std::unique_ptr<views::View> container = base::MakeUnique<views::View>();
|
| std::unique_ptr<views::BoxLayout> layout =
|
| base::MakeUnique<views::BoxLayout>(views::BoxLayout::kVertical, 0, 0, 0);
|
| @@ -89,6 +88,10 @@ std::unique_ptr<views::View> GetProfileLabel(AddressStyleType type,
|
| }
|
| label->set_id(static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_1));
|
| label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + if (disabled_state) {
|
| + label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
|
| + ui::NativeTheme::kColorId_LabelDisabledColor));
|
| + }
|
| container->AddChildView(label.release());
|
| }
|
|
|
| @@ -96,6 +99,10 @@ std::unique_ptr<views::View> GetProfileLabel(AddressStyleType type,
|
| std::unique_ptr<views::Label> label = base::MakeUnique<views::Label>(s2);
|
| label->set_id(static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_2));
|
| label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + if (disabled_state) {
|
| + label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
|
| + ui::NativeTheme::kColorId_LabelDisabledColor));
|
| + }
|
| container->AddChildView(label.release());
|
| }
|
|
|
| @@ -103,19 +110,43 @@ std::unique_ptr<views::View> GetProfileLabel(AddressStyleType type,
|
| std::unique_ptr<views::Label> label = base::MakeUnique<views::Label>(s3);
|
| label->set_id(static_cast<int>(DialogViewID::PROFILE_LABEL_LINE_3));
|
| label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + if (disabled_state) {
|
| + label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
|
| + ui::NativeTheme::kColorId_LabelDisabledColor));
|
| + }
|
| container->AddChildView(label.release());
|
| }
|
| + return container;
|
| +}
|
|
|
| - if (!error.empty()) {
|
| - std::unique_ptr<views::Label> label = base::MakeUnique<views::Label>(error);
|
| - label->set_id(static_cast<int>(DialogViewID::PROFILE_LABEL_ERROR));
|
| - label->SetFontList(label->GetDefaultFontList().DeriveWithSizeDelta(-1));
|
| - label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
|
| - ui::NativeTheme::kColorId_LinkEnabled));
|
| - container->AddChildView(label.release());
|
| - }
|
| +// Returns a label representing the |profile| as a shipping address. See
|
| +// GetBaseProfileLabel() for more documentation.
|
| +std::unique_ptr<views::View> GetShippingAddressLabel(
|
| + AddressStyleType type,
|
| + const std::string& locale,
|
| + const autofill::AutofillProfile& profile,
|
| + bool disabled_state) {
|
| + base::string16 name =
|
| + profile.GetInfo(autofill::AutofillType(autofill::NAME_FULL), locale);
|
|
|
| - return container;
|
| + base::string16 address = GetAddressFromProfile(profile, locale);
|
| +
|
| + base::string16 phone = profile.GetInfo(
|
| + autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), locale);
|
| +
|
| + return GetBaseProfileLabel(type, name, address, phone, disabled_state);
|
| +}
|
| +
|
| +std::unique_ptr<views::Label> GetLabelForMissingInformation(
|
| + const base::string16& missing_info) {
|
| + std::unique_ptr<views::Label> label =
|
| + base::MakeUnique<views::Label>(missing_info);
|
| + label->set_id(static_cast<int>(DialogViewID::PROFILE_LABEL_ERROR));
|
| + label->SetFontList(label->GetDefaultFontList().DeriveWithSizeDelta(-1));
|
| + // Missing information typically has a nice shade of blue.
|
| + label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
|
| + ui::NativeTheme::kColorId_LinkEnabled));
|
| + return label;
|
| }
|
|
|
| // Paints the gray horizontal line that doesn't span the entire width of the
|
| @@ -243,23 +274,39 @@ std::unique_ptr<views::View> CreateProductLogoFooterView() {
|
| return content_view;
|
| }
|
|
|
| -std::unique_ptr<views::View> GetShippingAddressLabel(
|
| +std::unique_ptr<views::View> GetShippingAddressLabelWithError(
|
| AddressStyleType type,
|
| const std::string& locale,
|
| const autofill::AutofillProfile& profile,
|
| - const PaymentOptionsProvider& options,
|
| - const PaymentsProfileComparator& comp) {
|
| - base::string16 name =
|
| - profile.GetInfo(autofill::AutofillType(autofill::NAME_FULL), locale);
|
| -
|
| - base::string16 address = GetAddressFromProfile(profile, locale);
|
| + const base::string16& error,
|
| + bool disabled_state) {
|
| + std::unique_ptr<views::View> base_label =
|
| + GetShippingAddressLabel(type, locale, profile, disabled_state);
|
|
|
| - base::string16 phone = profile.GetInfo(
|
| - autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), locale);
|
| + if (!error.empty()) {
|
| + std::unique_ptr<views::Label> label = base::MakeUnique<views::Label>(error);
|
| + label->set_id(static_cast<int>(DialogViewID::PROFILE_LABEL_ERROR));
|
| + label->SetFontList(label->GetDefaultFontList().DeriveWithSizeDelta(-1));
|
| + // Error information is typically in red.
|
| + label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
|
| + ui::NativeTheme::kColorId_AlertSeverityHigh));
|
| + base_label->AddChildView(label.release());
|
| + }
|
| + return base_label;
|
| +}
|
|
|
| - base::string16 error = comp.GetStringForMissingShippingFields(profile);
|
| +std::unique_ptr<views::View> GetShippingAddressLabelWithMissingInfo(
|
| + AddressStyleType type,
|
| + const std::string& locale,
|
| + const autofill::AutofillProfile& profile,
|
| + const PaymentsProfileComparator& comp) {
|
| + std::unique_ptr<views::View> base_label =
|
| + GetShippingAddressLabel(type, locale, profile, /*disabled_state=*/false);
|
|
|
| - return GetProfileLabel(type, name, address, phone, error);
|
| + base_label->AddChildView(GetLabelForMissingInformation(
|
| + comp.GetStringForMissingShippingFields(profile))
|
| + .release());
|
| + return base_label;
|
| }
|
|
|
| // TODO(anthonyvd): unit test the label layout.
|
| @@ -287,9 +334,13 @@ std::unique_ptr<views::View> GetContactInfoLabel(
|
| locale)
|
| : base::string16();
|
|
|
| - base::string16 error = comp.GetStringForMissingContactFields(profile);
|
| + std::unique_ptr<views::View> base_label =
|
| + GetBaseProfileLabel(type, name, phone, email);
|
|
|
| - return GetProfileLabel(type, name, phone, email, error);
|
| + base_label->AddChildView(GetLabelForMissingInformation(
|
| + comp.GetStringForMissingContactFields(profile))
|
| + .release());
|
| + return base_label;
|
| }
|
|
|
| std::unique_ptr<views::Border> CreatePaymentRequestRowBorder() {
|
|
|