Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(565)

Unified Diff: chrome/browser/ui/ash/multi_user/user_switch_util.cc

Issue 2441403003: Use a standard message box for DesktopCastingWarningView. (Closed)
Patch Set: warn unused Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/ash/multi_user/user_switch_util.cc
diff --git a/chrome/browser/ui/ash/multi_user/user_switch_util.cc b/chrome/browser/ui/ash/multi_user/user_switch_util.cc
index 6a80b5ef145268df15cffbd738187223e26fa6b6..99058327c1231fc8f7dfa810721a5156f6a9cee4 100644
--- a/chrome/browser/ui/ash/multi_user/user_switch_util.cc
+++ b/chrome/browser/ui/ash/multi_user/user_switch_util.cc
@@ -10,163 +10,8 @@
#include "ash/common/wm/overview/window_selector_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/shell.h"
+#include "chrome/browser/ui/simple_message_box.h"
#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/layout/grid_layout.h"
-#include "ui/views/widget/widget.h"
-#include "ui/views/window/dialog_delegate.h"
-
-namespace {
-
-// Default width/height of the dialog.
-const int kDefaultWidth = 500;
-const int kDefaultHeight = 150;
-
-const int kPaddingToMessage = 30;
-const int kInset = 40;
-const int kTopInset = 10;
-
-////////////////////////////////////////////////////////////////////////////////
-// Dialog for multi-profiles desktop casting warning.
-class DesktopCastingWarningView : public views::DialogDelegateView {
- public:
- explicit DesktopCastingWarningView(base::Callback<void()> on_accept);
- ~DesktopCastingWarningView() override;
-
- static void ShowDialog(const base::Callback<void()> on_accept);
-
- // views::DialogDelegate overrides.
- bool Accept() override;
- base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
- bool IsDialogButtonEnabled(ui::DialogButton button) const override;
- int GetDefaultDialogButton() const override;
-
- // views::WidgetDelegate overrides.
- ui::ModalType GetModalType() const override;
-
- // views::View overrides.
- gfx::Size GetPreferredSize() const override;
-
- private:
- void InitDialog();
-
- const base::Callback<void()> on_switch_;
-
- DISALLOW_COPY_AND_ASSIGN(DesktopCastingWarningView);
-};
-
-// The current instance of the running dialog - or NULL. This is used for
-// unittest related functions.
-static DesktopCastingWarningView* instance_for_test;
-
-////////////////////////////////////////////////////////////////////////////////
-// DesktopCastingWarningView implementation.
-
-DesktopCastingWarningView::DesktopCastingWarningView(
- const base::Callback<void()> on_switch)
- : on_switch_(on_switch) {
- DCHECK(!instance_for_test);
- instance_for_test = this;
-}
-
-DesktopCastingWarningView::~DesktopCastingWarningView() {
- DCHECK(instance_for_test);
- instance_for_test = NULL;
-}
-
-// static
-void DesktopCastingWarningView::ShowDialog(
- const base::Callback<void()> on_accept) {
- DesktopCastingWarningView* dialog_view =
- new DesktopCastingWarningView(on_accept);
- views::DialogDelegate::CreateDialogWidget(
- dialog_view, ash::Shell::GetTargetRootWindow(), NULL);
- dialog_view->InitDialog();
- views::Widget* widget = dialog_view->GetWidget();
- DCHECK(widget);
- widget->Show();
-}
-
-bool DesktopCastingWarningView::Accept() {
- // Stop screen sharing and capturing.
- ash::SystemTray* system_tray =
- ash::Shell::GetInstance()->GetPrimarySystemTray();
- if (system_tray->GetScreenShareItem()->is_started())
- system_tray->GetScreenShareItem()->Stop();
- if (system_tray->GetScreenCaptureItem()->is_started())
- system_tray->GetScreenCaptureItem()->Stop();
-
- on_switch_.Run();
- return true;
-}
-
-base::string16 DesktopCastingWarningView::GetDialogButtonLabel(
- ui::DialogButton button) const {
- return l10n_util::GetStringUTF16(
- button == ui::DIALOG_BUTTON_OK
- ? IDS_DESKTOP_CASTING_ACTIVE_BUTTON_SWITCH_USER
- : IDS_DESKTOP_CASTING_ACTIVE_BUTTON_ABORT_USER_SWITCH);
-}
-
-bool DesktopCastingWarningView::IsDialogButtonEnabled(
- ui::DialogButton button) const {
- return button == ui::DIALOG_BUTTON_OK || button == ui::DIALOG_BUTTON_CANCEL;
-}
-
-int DesktopCastingWarningView::GetDefaultDialogButton() const {
- // The default should turn off the casting.
- return ui::DIALOG_BUTTON_CANCEL;
-}
-
-ui::ModalType DesktopCastingWarningView::GetModalType() const {
- return ui::MODAL_TYPE_SYSTEM;
-}
-
-gfx::Size DesktopCastingWarningView::GetPreferredSize() const {
- return gfx::Size(kDefaultWidth, kDefaultHeight);
-}
-
-void DesktopCastingWarningView::InitDialog() {
- const gfx::Insets kDialogInsets(kTopInset, kInset, kInset, kInset);
-
- // Create the views and layout manager and set them up.
- views::GridLayout* grid_layout = views::GridLayout::CreatePanel(this);
- grid_layout->SetInsets(kDialogInsets);
-
- views::ColumnSet* column_set = grid_layout->AddColumnSet(0);
- column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
- views::GridLayout::USE_PREF, 0, 0);
-
- // Title
- views::Label* title_label_ = new views::Label(
- l10n_util::GetStringUTF16(IDS_DESKTOP_CASTING_ACTIVE_TITLE));
- title_label_->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
- ui::ResourceBundle::MediumBoldFont));
- title_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- grid_layout->StartRow(0, 0);
- grid_layout->AddView(title_label_);
- grid_layout->AddPaddingRow(0, kPaddingToMessage);
-
- // Explanation string
- views::Label* label = new views::Label(
- l10n_util::GetStringUTF16(IDS_DESKTOP_CASTING_ACTIVE_MESSAGE));
- label->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
- ui::ResourceBundle::MediumFont));
- label->SetMultiLine(true);
- label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- label->SetAllowCharacterBreak(true);
- grid_layout->StartRow(0, 0);
- grid_layout->AddView(label);
-
- SetLayoutManager(grid_layout);
- Layout();
-}
-
-} // namespace
-
-////////////////////////////////////////////////////////////////////////////////
-// Factory function.
void TrySwitchingActiveUser(const base::Callback<void()> on_switch) {
// Some unit tests do not have a shell. In that case simply execute.
@@ -190,15 +35,19 @@ void TrySwitchingActiveUser(const base::Callback<void()> on_switch) {
on_switch.Run();
return;
}
- DesktopCastingWarningView::ShowDialog(on_switch);
-}
+ if (chrome::ShowQuestionMessageBox(
msw 2016/10/27 21:46:44 aside: It's a little unfortunate that this adds a
Evan Stade 2016/10/28 17:31:55 Acknowledged.
+ nullptr,
+ l10n_util::GetStringUTF16(IDS_DESKTOP_CASTING_ACTIVE_MESSAGE),
msw 2016/10/27 21:46:44 Shouldn't this be IDS_DESKTOP_CASTING_ACTIVE_TITLE
Evan Stade 2016/10/28 17:31:54 yes, it should be, and yes I tested it. (I don't k
+ l10n_util::GetStringUTF16(IDS_DESKTOP_CASTING_ACTIVE_MESSAGE)) ==
+ chrome::MESSAGE_BOX_RESULT_YES) {
+ // Stop screen sharing and capturing.
+ ash::SystemTray* system_tray =
+ ash::Shell::GetInstance()->GetPrimarySystemTray();
+ if (system_tray->GetScreenShareItem()->is_started())
+ system_tray->GetScreenShareItem()->Stop();
+ if (system_tray->GetScreenCaptureItem()->is_started())
+ system_tray->GetScreenCaptureItem()->Stop();
-bool TestAndTerminateDesktopCastingWarningForTest(bool accept) {
- if (!instance_for_test)
- return false;
- if (accept)
- instance_for_test->Accept();
- delete instance_for_test->GetWidget()->GetNativeWindow();
- CHECK(!instance_for_test);
- return true;
+ on_switch.Run();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698