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

Unified Diff: chrome/browser/ui/views/desktop_media_picker_views.cc

Issue 319013002: Reland Fix Views web-modal dialog widget creation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Revert MediaGalleriesScanResultDialogViews::AcceptDialogForTesting. Created 6 years, 6 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/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;

Powered by Google App Engine
This is Rietveld 408576698