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 cfa7b0ffbbe4a85ea0d2552298547c8f7894edab..0b6cf5ae848e3885c6d50822dab178923ff1e96b 100644 |
| --- a/chrome/browser/ui/views/desktop_media_picker_views.cc |
| +++ b/chrome/browser/ui/views/desktop_media_picker_views.cc |
| @@ -13,11 +13,14 @@ |
| #include "build/build_config.h" |
| #include "chrome/browser/media/desktop_media_list.h" |
| #include "chrome/browser/ui/ash/ash_util.h" |
| +#include "chrome/browser/ui/browser_finder.h" |
| +#include "chrome/browser/ui/tabs/tab_strip_model.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "components/constrained_window/constrained_window_views.h" |
| #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/render_frame_host.h" |
| #include "content/public/browser/web_contents_delegate.h" |
| #include "grit/components_strings.h" |
| #include "ui/aura/window_tree_host.h" |
| @@ -514,15 +517,30 @@ bool DesktopMediaPickerDialogView::Accept() { |
| // Ok button should only be enabled when a source is selected. |
| DCHECK(selection); |
| - |
| - DesktopMediaID source; |
| - if (selection) |
| - source = selection->source_id(); |
| - |
| + DesktopMediaID source = selection->source_id(); |
| source.audio_share = audio_share_checkbox_ && |
| audio_share_checkbox_->enabled() && |
| audio_share_checkbox_->checked(); |
| + // If the media source is an inactive tab, activate it. |
| + if (source.type == DesktopMediaID::TYPE_WEB_CONTENTS) { |
| + content::WebContents* tab = content::WebContents::FromRenderFrameHost( |
| + content::RenderFrameHost::FromID( |
| + source.web_contents_id.render_process_id, |
| + source.web_contents_id.main_render_frame_id)); |
| + if (tab) { |
| + Browser* browser = chrome::FindBrowserWithWebContents(tab); |
| + if (browser) { |
|
msw
2016/03/15 23:58:19
When would browser be null? Do we need to check th
GeorgeZ
2016/03/16 00:32:32
You are right, as long as tab is valid, browser sh
|
| + TabStripModel* tab_strip_model = browser->tab_strip_model(); |
| + DCHECK(tab_strip_model); |
|
msw
2016/03/15 23:58:19
nit: dcheck before dereference is unnecessary.
GeorgeZ
2016/03/16 00:32:32
Done.
|
| + |
| + const int tab_index = tab_strip_model->GetIndexOfWebContents(tab); |
| + if (tab_index != tab_strip_model->active_index()) |
|
msw
2016/03/15 23:58:19
Must we check if the tab is inactive? Otherwise, t
GeorgeZ
2016/03/16 00:32:32
A check probably is not necessary.
|
| + tab->GetDelegate()->ActivateContents(tab); |
| + } |
| + } |
| + } |
| + |
| if (parent_) |
| parent_->NotifyDialogResult(source); |