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