Chromium Code Reviews| 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 2b16808a357909576408c927cd6fedbdd048d409..8de123b6e708ee5c16595fcac9448a6ecf6b511c 100644 |
| --- a/chrome/browser/ui/views/desktop_media_picker_views.cc |
| +++ b/chrome/browser/ui/views/desktop_media_picker_views.cc |
| @@ -15,6 +15,7 @@ |
| #include "components/web_modal/popup_manager.h" |
| #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/web_contents_delegate.h" |
| #include "ui/aura/window_tree_host.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/events/event_constants.h" |
| @@ -407,26 +408,26 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView( |
| GetMediaListViewHeightForRows(1), GetMediaListViewHeightForRows(2)); |
| AddChildView(scroll_view_); |
| - // If |parent_web_contents| is set, the picker will be shown modal to the |
| - // web contents. Otherwise, a new dialog widget inside |parent_window| will be |
| - // 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. |
| + // If |parent_web_contents| is set and it's not a background page then the |
| + // picker will be shown modal to the web contents. Otherwise the picker is |
| + // shown in a separate window. |
| views::Widget* widget = NULL; |
| - if (parent_web_contents) |
| + bool modal_dialog = |
|
Wez
2014/08/23 21:51:21
nit: Suggest has_visible_parent
Sergey Ulanov
2014/08/25 17:07:45
IMO |modal_dialog| makes code below more readable.
|
| + parent_web_contents && |
| + !parent_web_contents->GetDelegate()->IsNeverVisible(parent_web_contents); |
| + if (modal_dialog) { |
| widget = CreateWebModalDialogViews(this, parent_web_contents); |
| - else |
| - widget = DialogDelegate::CreateDialogWidget(this, context, parent_window); |
| + } else { |
| + widget = DialogDelegate::CreateDialogWidget(this, context, NULL); |
|
Wez
2014/08/23 21:51:20
Why do we also want to change the no-parent_web_co
Sergey Ulanov
2014/08/25 17:07:46
Currently this code is always called with parent_w
|
| + } |
| // 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. |
| DesktopMediaID::Id dialog_window_id = 0; |
| - // If there is |parent_window| or |parent_web_contents|, the picker window |
| - // is embedded in the parent and does not have its own native window id, so we |
| - // do not filter in that case. |
| - if (!parent_window && !parent_web_contents) { |
| + // If the picker is not modal then the picker window needs to be filtered. |
|
Wez
2014/08/23 21:51:21
nit: Clarify what it means to be filtered/why? Wha
Sergey Ulanov
2014/08/25 17:07:45
Removed this comment and updated the comment above
|
| + if (!modal_dialog) { |
| #if defined(USE_ASH) |
| if (chrome::IsNativeWindowInAsh(widget->GetNativeWindow())) { |
| dialog_window_id = |
| @@ -443,7 +444,7 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView( |
| list_view_->StartUpdating(dialog_window_id); |
| - if (parent_web_contents) { |
| + if (modal_dialog) { |
| web_modal::PopupManager* popup_manager = |
| web_modal::PopupManager::FromWebContents(parent_web_contents); |
| popup_manager->ShowModalDialog(GetWidget()->GetNativeView(), |