Index: chrome/browser/ui/views/desktop_media_picker_views.cc |
diff --git a/chrome/browser/ui/views/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_media_picker_views.cc |
index f8badc4fbdd33f0c8fc4d7da493cac9fa67cf9fa..657f23ba17a95b9fa2191f9f36e14701ed9f78fb 100644 |
--- a/chrome/browser/ui/views/desktop_media_picker_views.cc |
+++ b/chrome/browser/ui/views/desktop_media_picker_views.cc |
@@ -8,9 +8,8 @@ |
#include "chrome/browser/media/desktop_media_list.h" |
#include "chrome/browser/media/desktop_media_list_observer.h" |
#include "chrome/browser/ui/ash/ash_util.h" |
-#include "components/web_modal/web_contents_modal_dialog_host.h" |
+#include "chrome/browser/ui/views/constrained_window_views.h" |
#include "components/web_modal/web_contents_modal_dialog_manager.h" |
-#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h" |
#include "content/public/browser/browser_thread.h" |
#include "grit/generated_resources.h" |
#include "ui/aura/window_tree_host.h" |
@@ -30,8 +29,6 @@ |
#include "ui/wm/core/shadow_types.h" |
using content::DesktopMediaID; |
-using web_modal::WebContentsModalDialogManager; |
-using web_modal::WebContentsModalDialogManagerDelegate; |
namespace { |
@@ -173,6 +170,7 @@ class DesktopMediaPickerDialogView : public views::DialogDelegateView { |
virtual void Layout() OVERRIDE; |
// views::DialogDelegateView overrides. |
+ virtual ui::ModalType GetModalType() const OVERRIDE; |
virtual base::string16 GetWindowTitle() const OVERRIDE; |
virtual bool IsDialogButtonEnabled(ui::DialogButton button) const OVERRIDE; |
virtual base::string16 GetDialogButtonLabel( |
@@ -523,45 +521,37 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView( |
// created for the picker. Note that |parent_window| may also be NULL if |
// parent web contents is not set. In this case the picker will be parented |
// by a root window. |
- WebContentsModalDialogManager* web_contents_modal_dialog_manager = NULL; |
- if (parent_web_contents) { |
- web_contents_modal_dialog_manager = |
- WebContentsModalDialogManager::FromWebContents(parent_web_contents); |
- DCHECK(web_contents_modal_dialog_manager); |
- WebContentsModalDialogManagerDelegate* delegate = |
- web_contents_modal_dialog_manager->delegate(); |
- DCHECK(delegate); |
- views::Widget::CreateWindowAsFramelessChild( |
- this, |
- delegate->GetWebContentsModalDialogHost()->GetHostView()); |
- } else { |
- DialogDelegate::CreateDialogWidget(this, context, parent_window); |
- } |
+ views::Widget* widget = NULL; |
+ if (parent_web_contents) |
+ widget = CreateWebModalDialogViews(this, parent_web_contents); |
+ else |
+ widget = DialogDelegate::CreateDialogWidget(this, context, parent_window); |
// DesktopMediaList needs to know the ID of the picker window which |
// matches the ID it gets from the OS. Depending on the OS and configuration |
// we get this ID differently. |
content::DesktopMediaID::Id dialog_window_id = 0; |
- |
#if defined(USE_ASH) |
- if (chrome::IsNativeWindowInAsh(GetWidget()->GetNativeWindow())) { |
+ if (chrome::IsNativeWindowInAsh(widget->GetNativeWindow())) { |
dialog_window_id = content::DesktopMediaID::RegisterAuraWindow( |
- GetWidget()->GetNativeWindow()).id; |
- } else |
+ widget->GetNativeWindow()).id; |
+ DCHECK_NE(dialog_window_id, 0); |
+ } |
#endif |
- { |
+ if (dialog_window_id == 0) { |
dialog_window_id = AcceleratedWidgetToDesktopMediaId( |
- GetWidget()->GetNativeWindow()->GetHost()-> |
- GetAcceleratedWidget()); |
+ widget->GetNativeWindow()->GetHost()->GetAcceleratedWidget()); |
} |
list_view_->StartUpdating(dialog_window_id); |
if (parent_web_contents) { |
- web_contents_modal_dialog_manager->ShowModalDialog( |
- GetWidget()->GetNativeView()); |
+ web_modal::WebContentsModalDialogManager* manager = |
+ web_modal::WebContentsModalDialogManager::FromWebContents( |
+ parent_web_contents); |
+ manager->ShowModalDialog(widget->GetNativeView()); |
} else { |
- GetWidget()->Show(); |
+ widget->Show(); |
} |
} |
@@ -589,6 +579,10 @@ void DesktopMediaPickerDialogView::Layout() { |
rect.width(), rect.height() - scroll_view_top); |
} |
+ui::ModalType DesktopMediaPickerDialogView::GetModalType() const { |
+ return ui::MODAL_TYPE_CHILD; |
+} |
+ |
base::string16 DesktopMediaPickerDialogView::GetWindowTitle() const { |
return l10n_util::GetStringFUTF16(IDS_DESKTOP_MEDIA_PICKER_TITLE, app_name_); |
} |
@@ -639,8 +633,7 @@ void DesktopMediaPickerDialogView::OnDoubleClick() { |
GetDialogClientView()->AcceptWindow(); |
} |
-DesktopMediaPickerViews::DesktopMediaPickerViews() |
- : dialog_(NULL) { |
+DesktopMediaPickerViews::DesktopMediaPickerViews() : dialog_(NULL) { |
} |
DesktopMediaPickerViews::~DesktopMediaPickerViews() { |
@@ -663,8 +656,7 @@ void DesktopMediaPickerViews::Show(content::WebContents* web_contents, |
media_list.Pass()); |
} |
-void DesktopMediaPickerViews::NotifyDialogResult( |
- DesktopMediaID source) { |
+void DesktopMediaPickerViews::NotifyDialogResult(DesktopMediaID source) { |
// Once this method is called the |dialog_| will close and destroy itself. |
dialog_->DetachParent(); |
dialog_ = NULL; |