Index: remoting/host/chromeos/message_box.cc |
diff --git a/remoting/host/chromeos/message_box.cc b/remoting/host/chromeos/message_box.cc |
deleted file mode 100644 |
index e4f8da5274420c6eb2721b7712ab52bc1081b85f..0000000000000000000000000000000000000000 |
--- a/remoting/host/chromeos/message_box.cc |
+++ /dev/null |
@@ -1,194 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "remoting/host/chromeos/message_box.h" |
- |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/views/controls/message_box_view.h" |
-#include "ui/views/widget/widget.h" |
-#include "ui/views/window/dialog_delegate.h" |
- |
-namespace remoting { |
- |
-// MessageBox::Core creates the dialog using the views::DialogWidget. The |
-// DialogWidget is created by the caller but its lifetime is managed by the |
-// NativeWidget. The DialogWidget communicates with the caller using the |
-//.DialogDelegateView interface, which must remain valid until DeleteDelegate() |
-// is called, at which the DialogDelegateView deletes itself. |
-// |
-// The Core class is introduced to abstract this awkward ownership model. The |
-// Core and the MessageBox hold a raw references to each other, which is |
-// invalidated when either side are destroyed. |
-class MessageBox::Core : public views::DialogDelegateView { |
- public: |
- Core(const base::string16& title_label, |
- const base::string16& message_label, |
- const base::string16& ok_label, |
- const base::string16& cancel_label, |
- ResultCallback result_callback, |
- MessageBox* message_box); |
- |
- // Mirrors the public MessageBox interface. |
- void Show(); |
- void Hide(); |
- |
- // views::DialogDelegateView interface. |
- bool Accept() override; |
- bool Cancel() override; |
- ui::ModalType GetModalType() const override; |
- base::string16 GetWindowTitle() const override; |
- base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; |
- |
- // views::WidgetDelegate interface. |
- views::View* GetContentsView() override; |
- views::Widget* GetWidget() override; |
- const views::Widget* GetWidget() const override; |
- void DeleteDelegate() override; |
- |
- // Called by MessageBox::Core when it is destroyed. |
- void OnMessageBoxDestroyed(); |
- |
- private: |
- const base::string16 title_label_; |
- const base::string16 ok_label_; |
- const base::string16 cancel_label_; |
- ResultCallback result_callback_; |
- MessageBox* message_box_; |
- |
- // Owned by the native widget hierarchy. |
- views::MessageBoxView* message_box_view_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Core); |
-}; |
- |
-MessageBox::Core::Core(const base::string16& title_label, |
- const base::string16& message_label, |
- const base::string16& ok_label, |
- const base::string16& cancel_label, |
- ResultCallback result_callback, |
- MessageBox* message_box) |
- : title_label_(title_label), |
- ok_label_(ok_label), |
- cancel_label_(cancel_label), |
- result_callback_(result_callback), |
- message_box_(message_box), |
- message_box_view_(new views::MessageBoxView( |
- views::MessageBoxView::InitParams(message_label))) { |
- DCHECK(message_box_); |
-} |
- |
-void MessageBox::Core::Show() { |
- // The widget is owned by the NativeWidget. See comments in widget.h. |
- views::Widget* widget = |
- CreateDialogWidget(this, /* delegate */ |
- nullptr /* parent window*/, |
- nullptr /* parent view */); |
- |
- if (widget) { |
- widget->Show(); |
- } |
-} |
- |
-void MessageBox::Core::Hide() { |
- if (GetWidget()) { |
- GetWidget()->Close(); |
- } |
-} |
- |
-bool MessageBox::Core::Accept() { |
- if (!result_callback_.is_null()) { |
- base::ResetAndReturn(&result_callback_).Run(OK); |
- } |
- return true /* close the window*/; |
-} |
- |
-bool MessageBox::Core::Cancel() { |
- if (!result_callback_.is_null()) { |
- base::ResetAndReturn(&result_callback_).Run(CANCEL); |
- } |
- return true /* close the window*/; |
-} |
- |
-ui::ModalType MessageBox::Core::GetModalType() const { |
- return ui::MODAL_TYPE_SYSTEM; |
-} |
- |
-base::string16 MessageBox::Core::GetWindowTitle() const { |
- return title_label_; |
-} |
- |
-base::string16 MessageBox::Core::GetDialogButtonLabel( |
- ui::DialogButton button) const { |
- switch (button) { |
- case ui::DIALOG_BUTTON_OK: |
- return ok_label_; |
- case ui::DIALOG_BUTTON_CANCEL: |
- return cancel_label_; |
- default: |
- NOTREACHED(); |
- return base::string16(); |
- } |
-} |
- |
-views::View* MessageBox::Core::GetContentsView() { |
- return message_box_view_; |
-} |
- |
-views::Widget* MessageBox::Core::GetWidget() { |
- return message_box_view_->GetWidget(); |
-} |
- |
-const views::Widget* MessageBox::Core::GetWidget() const { |
- return message_box_view_->GetWidget(); |
-} |
- |
-void MessageBox::Core::DeleteDelegate() { |
- if (message_box_) { |
- message_box_->core_ = nullptr; |
- } |
- delete this; |
-} |
- |
-void MessageBox::Core::OnMessageBoxDestroyed() { |
- DCHECK(message_box_); |
- message_box_ = nullptr; |
- // The callback should not be invoked after MessageBox is destroyed. |
- result_callback_.Reset(); |
-} |
- |
-MessageBox::MessageBox(const base::string16& title_label, |
- const base::string16& message_label, |
- const base::string16& ok_label, |
- const base::string16& cancel_label, |
- ResultCallback result_callback) |
- : core_(new Core(title_label, |
- message_label, |
- ok_label, |
- cancel_label, |
- result_callback, |
- this)) { |
- thread_checker_.DetachFromThread(); |
-} |
- |
-MessageBox::~MessageBox() { |
- if (core_) { |
- core_->OnMessageBoxDestroyed(); |
- core_->Hide(); |
- core_ = nullptr; |
- } |
-} |
- |
-void MessageBox::Show() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- core_->Show(); |
-} |
- |
-void MessageBox::Hide() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- if (core_) { |
- core_->Hide(); |
- } |
-} |
- |
-} // namespace remoting |