| 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 "chrome/browser/ui/views/chrome_cleaner_dialog.h" | |
| 6 | |
| 7 #include "base/strings/string16.h" | |
| 8 #include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_dialog_cont
roller.h" | |
| 9 #include "chrome/browser/ui/browser.h" | |
| 10 #include "chrome/browser/ui/browser_dialogs.h" | |
| 11 #include "chrome/browser/ui/browser_window.h" | |
| 12 #include "components/constrained_window/constrained_window_views.h" | |
| 13 #include "ui/base/ui_base_types.h" | |
| 14 #include "ui/events/event.h" | |
| 15 #include "ui/gfx/native_widget_types.h" | |
| 16 #include "ui/gfx/text_constants.h" | |
| 17 #include "ui/views/controls/button/md_text_button.h" | |
| 18 #include "ui/views/controls/label.h" | |
| 19 #include "ui/views/layout/box_layout.h" | |
| 20 #include "ui/views/layout/layout_constants.h" | |
| 21 #include "ui/views/widget/widget.h" | |
| 22 | |
| 23 namespace chrome { | |
| 24 | |
| 25 void ShowChromeCleanerPrompt( | |
| 26 Browser* browser, | |
| 27 safe_browsing::ChromeCleanerDialogController* controller) { | |
| 28 ChromeCleanerDialog* dialog = new ChromeCleanerDialog(controller); | |
| 29 dialog->Show(browser); | |
| 30 } | |
| 31 | |
| 32 } // namespace chrome | |
| 33 | |
| 34 namespace { | |
| 35 constexpr int kDialogWidth = 448; | |
| 36 } // namespace | |
| 37 | |
| 38 //////////////////////////////////////////////////////////////////////////////// | |
| 39 // ChromeCleanerDialog | |
| 40 | |
| 41 ChromeCleanerDialog::ChromeCleanerDialog( | |
| 42 safe_browsing::ChromeCleanerDialogController* controller) | |
| 43 : browser_(nullptr), controller_(controller) { | |
| 44 DCHECK(controller_); | |
| 45 | |
| 46 SetLayoutManager(new views::BoxLayout( | |
| 47 /*orientation=*/views::BoxLayout::kVertical, | |
| 48 /*inside_border_horizontal_spacing=*/views::kButtonHEdgeMarginNew, | |
| 49 /*inside_border_vertical_spacing=*/views::kPanelVertMargin, | |
| 50 /*between_child_spacing=*/0)); | |
| 51 views::Label* label = new views::Label(controller_->GetMainText()); | |
| 52 label->SetMultiLine(true); | |
| 53 label->SetHorizontalAlignment(gfx::ALIGN_LEFT); | |
| 54 AddChildView(label); | |
| 55 } | |
| 56 | |
| 57 ChromeCleanerDialog::~ChromeCleanerDialog() { | |
| 58 // Make sure the controller is correctly notified in case the dialog widget is | |
| 59 // closed by some other means than the dialog buttons. | |
| 60 if (controller_) | |
| 61 controller_->Cancel(); | |
| 62 } | |
| 63 | |
| 64 void ChromeCleanerDialog::Show(Browser* browser) { | |
| 65 DCHECK(browser); | |
| 66 DCHECK(!browser_); | |
| 67 DCHECK(controller_); | |
| 68 | |
| 69 browser_ = browser; | |
| 70 constrained_window::CreateBrowserModalDialogViews( | |
| 71 this, browser_->window()->GetNativeWindow()) | |
| 72 ->Show(); | |
| 73 controller_->DialogShown(); | |
| 74 } | |
| 75 | |
| 76 // DialogModel overrides. | |
| 77 | |
| 78 bool ChromeCleanerDialog::ShouldDefaultButtonBeBlue() const { | |
| 79 return true; | |
| 80 } | |
| 81 | |
| 82 // WidgetDelegate overrides. | |
| 83 | |
| 84 ui::ModalType ChromeCleanerDialog::GetModalType() const { | |
| 85 return ui::MODAL_TYPE_WINDOW; | |
| 86 } | |
| 87 | |
| 88 base::string16 ChromeCleanerDialog::GetWindowTitle() const { | |
| 89 DCHECK(controller_); | |
| 90 return controller_->GetWindowTitle(); | |
| 91 } | |
| 92 | |
| 93 // DialogDelegate overrides. | |
| 94 | |
| 95 base::string16 ChromeCleanerDialog::GetDialogButtonLabel( | |
| 96 ui::DialogButton button) const { | |
| 97 DCHECK(button == ui::DIALOG_BUTTON_OK || button == ui::DIALOG_BUTTON_CANCEL); | |
| 98 DCHECK(controller_); | |
| 99 | |
| 100 return button == ui::DIALOG_BUTTON_OK | |
| 101 ? controller_->GetAcceptButtonLabel() | |
| 102 : DialogDelegate::GetDialogButtonLabel(button); | |
| 103 } | |
| 104 | |
| 105 views::View* ChromeCleanerDialog::CreateExtraView() { | |
| 106 return views::MdTextButton::CreateSecondaryUiButton( | |
| 107 this, controller_->GetAdvancedButtonLabel()); | |
| 108 } | |
| 109 | |
| 110 bool ChromeCleanerDialog::Accept() { | |
| 111 if (controller_) { | |
| 112 controller_->Accept(); | |
| 113 controller_ = nullptr; | |
| 114 } | |
| 115 return true; | |
| 116 } | |
| 117 | |
| 118 bool ChromeCleanerDialog::Cancel() { | |
| 119 if (controller_) { | |
| 120 controller_->Cancel(); | |
| 121 controller_ = nullptr; | |
| 122 } | |
| 123 return true; | |
| 124 } | |
| 125 | |
| 126 bool ChromeCleanerDialog::Close() { | |
| 127 if (controller_) { | |
| 128 controller_->Close(); | |
| 129 controller_ = nullptr; | |
| 130 } | |
| 131 return true; | |
| 132 } | |
| 133 | |
| 134 // View overrides. | |
| 135 | |
| 136 gfx::Size ChromeCleanerDialog::GetPreferredSize() const { | |
| 137 return gfx::Size(kDialogWidth, GetHeightForWidth(kDialogWidth)); | |
| 138 } | |
| 139 | |
| 140 // views::ButtonListener overrides. | |
| 141 | |
| 142 void ChromeCleanerDialog::ButtonPressed(views::Button* sender, | |
| 143 const ui::Event& event) { | |
| 144 DCHECK(browser_); | |
| 145 | |
| 146 // TODO(alito): Navigate to the webui version of the Chrome Cleaner UI when | |
| 147 // that is implemented. | |
| 148 if (controller_) { | |
| 149 controller_->AdvancedButtonClicked(); | |
| 150 controller_ = nullptr; | |
| 151 } | |
| 152 GetWidget()->Close(); | |
| 153 } | |
| OLD | NEW |