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..34a283a34c199ad64a0d148628f5ade1097ba361 100644 |
| --- a/chrome/browser/ui/views/desktop_media_picker_views.cc |
| +++ b/chrome/browser/ui/views/desktop_media_picker_views.cc |
| @@ -13,11 +13,15 @@ |
| #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.h" |
| +#include "chrome/browser/ui/browser_list.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 +518,34 @@ 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( |
|
msw
2016/03/15 21:33:47
Is this really the best way to get the WebContents
GeorgeZ
2016/03/15 22:38:54
DesktopMediaID doesn't have a function to get webc
|
| + content::RenderFrameHost::FromID( |
| + source.web_contents_id.render_process_id, |
| + source.web_contents_id.main_render_frame_id)); |
| + if (tab) { |
| + for (auto* browser : *BrowserList::GetInstance()) { |
|
msw
2016/03/15 21:33:47
Use chrome::FindBrowserWithWebContents() instead.
GeorgeZ
2016/03/15 22:38:54
Done. Good suggestion.
|
| + TabStripModel* tab_strip_model = browser->tab_strip_model(); |
| + DCHECK(tab_strip_model); |
| + |
| + const int tab_index = tab_strip_model->GetIndexOfWebContents(tab); |
| + if (tab_index == TabStripModel::kNoTab) |
| + continue; |
| + |
| + if (tab_index != tab_strip_model->active_index()) |
| + tab_strip_model->ActivateTabAt(tab_index, true); |
|
msw
2016/03/15 21:33:47
Use Browser::ActivateContents() instead.
GeorgeZ
2016/03/15 22:38:54
ActivateTabAt() is a private member of browser, so
|
| + |
| + break; |
| + } |
| + } |
| + } |
| + |
| if (parent_) |
| parent_->NotifyDialogResult(source); |