Chromium Code Reviews| 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(); |
| + } |
| } |