Index: chrome/browser/ui/views/chrome_cleaner_dialog_win.cc |
diff --git a/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc b/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc |
index 6f82660b6b0ce6a3caddab32702b6b2f1c665bff..c876a5b7ffa74b5a3373f3351d07cda5db36310a 100644 |
--- a/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc |
+++ b/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc |
@@ -19,9 +19,11 @@ |
#include "ui/gfx/geometry/insets.h" |
#include "ui/gfx/native_widget_types.h" |
#include "ui/gfx/text_constants.h" |
+#include "ui/views/controls/button/checkbox.h" |
#include "ui/views/controls/button/md_text_button.h" |
#include "ui/views/controls/label.h" |
#include "ui/views/layout/box_layout.h" |
+#include "ui/views/layout/layout_provider.h" |
#include "ui/views/widget/widget.h" |
namespace chrome { |
@@ -45,7 +47,10 @@ constexpr int kDialogWidth = 448; |
ChromeCleanerDialog::ChromeCleanerDialog( |
safe_browsing::ChromeCleanerDialogController* controller) |
- : browser_(nullptr), controller_(controller) { |
+ : browser_(nullptr), |
+ controller_(controller), |
+ details_button_(nullptr), |
+ logs_permission_checkbox_(nullptr) { |
DCHECK(controller_); |
SetLayoutManager( |
@@ -92,6 +97,22 @@ base::string16 ChromeCleanerDialog::GetWindowTitle() const { |
// DialogDelegate overrides. |
+views::View* ChromeCleanerDialog::CreateFootnoteView() { |
+ DCHECK(!logs_permission_checkbox_); |
+ DCHECK(controller_); |
+ |
+ views::View* footnote_view = new views::View(); |
+ footnote_view->SetLayoutManager(new views::BoxLayout( |
+ views::BoxLayout::kVertical, ChromeLayoutProvider::Get()->GetInsetsMetric( |
+ views::INSETS_DIALOG_CONTENTS))); |
+ logs_permission_checkbox_ = new views::Checkbox( |
+ l10n_util::GetStringUTF16(IDS_CHROME_CLEANUP_LOGS_PERMISSION)); |
+ logs_permission_checkbox_->SetChecked(controller_->LogsEnabled()); |
+ logs_permission_checkbox_->set_listener(this); |
+ footnote_view->AddChildView(logs_permission_checkbox_); |
+ return footnote_view; |
+} |
+ |
base::string16 ChromeCleanerDialog::GetDialogButtonLabel( |
ui::DialogButton button) const { |
DCHECK(button == ui::DIALOG_BUTTON_OK || button == ui::DIALOG_BUTTON_CANCEL); |
@@ -104,14 +125,17 @@ base::string16 ChromeCleanerDialog::GetDialogButtonLabel( |
} |
views::View* ChromeCleanerDialog::CreateExtraView() { |
- return views::MdTextButton::CreateSecondaryUiButton( |
+ DCHECK(!details_button_); |
+ |
+ details_button_ = views::MdTextButton::CreateSecondaryUiButton( |
this, l10n_util::GetStringUTF16( |
IDS_CHROME_CLEANUP_PROMPT_DETAILS_BUTTON_LABEL)); |
+ return details_button_; |
} |
bool ChromeCleanerDialog::Accept() { |
if (controller_) { |
- controller_->Accept(); |
+ controller_->Accept(/*logs_enabled=*/logs_permission_checkbox_->checked()); |
controller_ = nullptr; |
} |
return true; |
@@ -145,11 +169,18 @@ void ChromeCleanerDialog::ButtonPressed(views::Button* sender, |
const ui::Event& event) { |
DCHECK(browser_); |
- // TODO(alito): Navigate to the webui version of the Chrome Cleaner UI when |
- // that is implemented. |
- if (controller_) { |
- controller_->DetailsButtonClicked(); |
- controller_ = nullptr; |
+ if (sender == details_button_) { |
+ if (controller_) { |
+ controller_->DetailsButtonClicked( |
+ /*logs_enabled=*/logs_permission_checkbox_->checked()); |
+ controller_ = nullptr; |
+ } |
+ GetWidget()->Close(); |
+ return; |
} |
- GetWidget()->Close(); |
+ |
+ DCHECK_EQ(logs_permission_checkbox_, sender); |
+ |
+ if (controller_) |
+ controller_->SetLogsEnabled(logs_permission_checkbox_->checked()); |
} |