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 "chrome/browser/ui/views/payments/error_message_view_controller.h"
6
7 #include <memory>
8
9 #include "chrome/browser/ui/views/payments/payment_request_views_util.h"
10 #include "components/strings/grit/components_strings.h"
11 #include "ui/base/l10n/l10n_util.h"
12 #include "ui/gfx/geometry/insets.h"
13 #include "ui/native_theme/native_theme.h"
14 #include "ui/views/controls/button/md_text_button.h"
15 #include "ui/views/controls/label.h"
16 #include "ui/views/layout/box_layout.h"
17
18 namespace payments {
19
ErrorMessageViewController(base::WeakPtr<PaymentRequestSpec> spec,base::WeakPtr<PaymentRequestState> state,base::WeakPtr<PaymentRequestDialogView> dialog)20 ErrorMessageViewController::ErrorMessageViewController(
21 base::WeakPtr<PaymentRequestSpec> spec,
22 base::WeakPtr<PaymentRequestState> state,
23 base::WeakPtr<PaymentRequestDialogView> dialog)
24 : PaymentRequestSheetController(spec, state, dialog) {}
25
~ErrorMessageViewController()26 ErrorMessageViewController::~ErrorMessageViewController() {}
27
GetPrimaryButtonLabel()28 base::string16 ErrorMessageViewController::GetPrimaryButtonLabel() {
29 return l10n_util::GetStringUTF16(IDS_CLOSE);
30 }
31
32 views::Button::PressedCallback
GetPrimaryButtonCallback()33 ErrorMessageViewController::GetPrimaryButtonCallback() {
34 return base::BindRepeating(&ErrorMessageViewController::CloseButtonPressed,
35 base::Unretained(this));
36 }
37
GetPrimaryButtonId()38 int ErrorMessageViewController::GetPrimaryButtonId() {
39 return static_cast<int>(DialogViewID::CANCEL_BUTTON);
40 }
41
GetPrimaryButtonEnabled()42 bool ErrorMessageViewController::GetPrimaryButtonEnabled() {
43 return true;
44 }
45
ShouldShowHeaderBackArrow()46 bool ErrorMessageViewController::ShouldShowHeaderBackArrow() {
47 return false;
48 }
49
ShouldShowSecondaryButton()50 bool ErrorMessageViewController::ShouldShowSecondaryButton() {
51 return false;
52 }
53
GetSheetTitle()54 base::string16 ErrorMessageViewController::GetSheetTitle() {
55 return l10n_util::GetStringUTF16(IDS_PAYMENTS_ERROR_MESSAGE_DIALOG_TITLE);
56 }
57
FillContentView(views::View * content_view)58 void ErrorMessageViewController::FillContentView(views::View* content_view) {
59 auto layout = std::make_unique<views::BoxLayout>(
60 views::BoxLayout::Orientation::kVertical,
61 gfx::Insets(0, kPaymentRequestRowHorizontalInsets), 0);
62 layout->set_main_axis_alignment(views::BoxLayout::MainAxisAlignment::kStart);
63 layout->set_cross_axis_alignment(
64 views::BoxLayout::CrossAxisAlignment::kStart);
65 content_view->SetLayoutManager(std::move(layout));
66
67 std::unique_ptr<views::Label> label = std::make_unique<views::Label>(
68 l10n_util::GetStringUTF16(IDS_PAYMENTS_ERROR_MESSAGE));
69 label->SetEnabledColor(label->GetNativeTheme()->GetSystemColor(
70 ui::NativeTheme::kColorId_AlertSeverityHigh));
71 label->SetMultiLine(true);
72 label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
73
74 content_view->AddChildView(label.release());
75 }
76
77 } // namespace payments
78