| Index: chrome/browser/ui/views/simple_message_box_views.cc
|
| diff --git a/chrome/browser/ui/views/simple_message_box_views.cc b/chrome/browser/ui/views/simple_message_box_views.cc
|
| index fc3f02623d4a22f854ba671ddae77ae4cb1c83fe..9703da7b801cfb4f1adacb988f8cf4376ffa0207 100644
|
| --- a/chrome/browser/ui/views/simple_message_box_views.cc
|
| +++ b/chrome/browser/ui/views/simple_message_box_views.cc
|
| @@ -37,6 +37,7 @@ class SimpleMessageBoxViews : public views::DialogDelegate {
|
| MessageBoxType type,
|
| const base::string16& yes_text,
|
| const base::string16& no_text,
|
| + const base::string16& checkbox_text,
|
| bool is_system_modal);
|
| ~SimpleMessageBoxViews() override;
|
|
|
| @@ -65,9 +66,9 @@ class SimpleMessageBoxViews : public views::DialogDelegate {
|
| base::string16 yes_text_;
|
| base::string16 no_text_;
|
| MessageBoxResult* result_;
|
| - bool is_system_modal_;
|
| views::MessageBoxView* message_box_view_;
|
| base::Closure quit_runloop_;
|
| + bool is_system_modal_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SimpleMessageBoxViews);
|
| };
|
| @@ -75,20 +76,22 @@ class SimpleMessageBoxViews : public views::DialogDelegate {
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // SimpleMessageBoxViews, public:
|
|
|
| -SimpleMessageBoxViews::SimpleMessageBoxViews(const base::string16& title,
|
| - const base::string16& message,
|
| - MessageBoxType type,
|
| - const base::string16& yes_text,
|
| - const base::string16& no_text,
|
| - bool is_system_modal)
|
| +SimpleMessageBoxViews::SimpleMessageBoxViews(
|
| + const base::string16& title,
|
| + const base::string16& message,
|
| + MessageBoxType type,
|
| + const base::string16& yes_text,
|
| + const base::string16& no_text,
|
| + const base::string16& checkbox_text,
|
| + bool is_system_modal)
|
| : window_title_(title),
|
| type_(type),
|
| yes_text_(yes_text),
|
| no_text_(no_text),
|
| result_(NULL),
|
| - is_system_modal_(is_system_modal),
|
| message_box_view_(new views::MessageBoxView(
|
| - views::MessageBoxView::InitParams(message))) {
|
| + views::MessageBoxView::InitParams(message))),
|
| + is_system_modal_(is_system_modal) {
|
| if (yes_text_.empty()) {
|
| yes_text_ =
|
| type_ == MESSAGE_BOX_TYPE_QUESTION
|
| @@ -98,6 +101,11 @@ SimpleMessageBoxViews::SimpleMessageBoxViews(const base::string16& title,
|
|
|
| if (no_text_.empty() && type_ == MESSAGE_BOX_TYPE_QUESTION)
|
| no_text_ = l10n_util::GetStringUTF16(IDS_CANCEL);
|
| +
|
| + if (!checkbox_text.empty()) {
|
| + message_box_view_->SetCheckBoxLabel(checkbox_text);
|
| + message_box_view_->SetCheckBoxSelected(true);
|
| + }
|
| }
|
|
|
| SimpleMessageBoxViews::~SimpleMessageBoxViews() {
|
| @@ -137,7 +145,13 @@ bool SimpleMessageBoxViews::Cancel() {
|
| }
|
|
|
| bool SimpleMessageBoxViews::Accept() {
|
| - *result_ = MESSAGE_BOX_RESULT_YES;
|
| + if (!message_box_view_->HasCheckBox() ||
|
| + message_box_view_->IsCheckBoxSelected()) {
|
| + *result_ = MESSAGE_BOX_RESULT_YES;
|
| + } else {
|
| + *result_ = MESSAGE_BOX_RESULT_NO;
|
| + }
|
| +
|
| Done();
|
| return true;
|
| }
|
| @@ -193,7 +207,8 @@ MessageBoxResult ShowMessageBoxImpl(gfx::NativeWindow parent,
|
| const base::string16& message,
|
| MessageBoxType type,
|
| const base::string16& yes_text,
|
| - const base::string16& no_text) {
|
| + const base::string16& no_text,
|
| + const base::string16& checkbox_text) {
|
| startup_metric_utils::SetNonBrowserUIDisplayed();
|
| if (internal::g_should_skip_message_box_for_test)
|
| return MESSAGE_BOX_RESULT_YES;
|
| @@ -205,6 +220,7 @@ MessageBoxResult ShowMessageBoxImpl(gfx::NativeWindow parent,
|
| if (!base::MessageLoopForUI::IsCurrent() ||
|
| !base::MessageLoopForUI::current()->is_running() ||
|
| !ResourceBundle::HasSharedInstance()) {
|
| + LOG_IF(ERROR, !checkbox_text.empty()) << "Dialog checkbox won't be shown";
|
| int result = ui::MessageBox(views::HWNDForNativeWindow(parent), message,
|
| title, GetMessageBoxFlagsFromType(type));
|
| return (result == IDYES || result == IDOK) ?
|
| @@ -220,13 +236,8 @@ MessageBoxResult ShowMessageBoxImpl(gfx::NativeWindow parent,
|
| #endif
|
|
|
| SimpleMessageBoxViews* dialog =
|
| - new SimpleMessageBoxViews(title,
|
| - message,
|
| - type,
|
| - yes_text,
|
| - no_text,
|
| - parent == NULL // is_system_modal
|
| - );
|
| + new SimpleMessageBoxViews(title, message, type, yes_text, no_text,
|
| + checkbox_text, !parent /* is_system_modal */);
|
| constrained_window::CreateBrowserModalDialogViews(dialog, parent)->Show();
|
|
|
| // NOTE: |dialog| may have been deleted by the time |RunDialogAndGetResult()|
|
| @@ -240,14 +251,24 @@ void ShowWarningMessageBox(gfx::NativeWindow parent,
|
| const base::string16& title,
|
| const base::string16& message) {
|
| ShowMessageBoxImpl(parent, title, message, MESSAGE_BOX_TYPE_WARNING,
|
| - base::string16(), base::string16());
|
| + base::string16(), base::string16(), base::string16());
|
| +}
|
| +
|
| +bool ShowWarningMessageBoxWithCheckbox(gfx::NativeWindow parent,
|
| + const base::string16& title,
|
| + const base::string16& message,
|
| + const base::string16& checkbox_text) {
|
| + return ShowMessageBoxImpl(parent, title, message, MESSAGE_BOX_TYPE_WARNING,
|
| + base::string16(), base::string16(),
|
| + checkbox_text) == MESSAGE_BOX_RESULT_YES;
|
| }
|
|
|
| MessageBoxResult ShowQuestionMessageBox(gfx::NativeWindow parent,
|
| const base::string16& title,
|
| const base::string16& message) {
|
| return ShowMessageBoxImpl(parent, title, message, MESSAGE_BOX_TYPE_QUESTION,
|
| - base::string16(), base::string16());
|
| + base::string16(), base::string16(),
|
| + base::string16());
|
| }
|
|
|
| MessageBoxResult ShowMessageBoxWithButtonText(gfx::NativeWindow parent,
|
| @@ -255,8 +276,8 @@ MessageBoxResult ShowMessageBoxWithButtonText(gfx::NativeWindow parent,
|
| const base::string16& message,
|
| const base::string16& yes_text,
|
| const base::string16& no_text) {
|
| - return ShowMessageBoxImpl(
|
| - parent, title, message, MESSAGE_BOX_TYPE_QUESTION, yes_text, no_text);
|
| + return ShowMessageBoxImpl(parent, title, message, MESSAGE_BOX_TYPE_QUESTION,
|
| + yes_text, no_text, base::string16());
|
| }
|
|
|
| } // namespace chrome
|
|
|