Index: chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
index fccf615c9eecd33b6737ad7439b3405340281109..c6f33d3df62f23dc7d0db457e5943b8ae7478cd1 100644 |
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
@@ -10,6 +10,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "chrome/browser/extensions/extension_tab_util.h" |
+#include "chrome/browser/media/combined_desktop_media_list.h" |
#include "chrome/browser/media/desktop_media_list_ash.h" |
#include "chrome/browser/media/desktop_streams_registry.h" |
#include "chrome/browser/media/media_capture_devices_dispatcher.h" |
@@ -104,20 +105,23 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
const gfx::NativeWindow parent_window = |
web_contents->GetTopLevelNativeWindow(); |
- scoped_ptr<DesktopMediaList> media_list; |
+ |
+ std::vector<scoped_ptr<DesktopMediaList>> media_lists; |
if (g_picker_factory) { |
- media_list = g_picker_factory->CreateModel( |
- show_screens, show_windows); |
+ scoped_ptr<DesktopMediaList> media_list = |
+ g_picker_factory->CreateModel(show_screens, show_windows); |
+ media_lists.push_back(std::move(media_list)); |
picker_ = g_picker_factory->CreatePicker(); |
} else { |
+ scoped_ptr<DesktopMediaList> screen_window_list; |
#if defined(USE_ASH) |
if (chrome::IsNativeWindowInAsh(parent_window)) { |
- media_list.reset(new DesktopMediaListAsh( |
+ screen_window_list.reset(new DesktopMediaListAsh( |
(show_screens ? DesktopMediaListAsh::SCREENS : 0) | |
(show_windows ? DesktopMediaListAsh::WINDOWS : 0))); |
} |
#endif |
- if (!media_list) { |
+ if (!screen_window_list) { |
webrtc::DesktopCaptureOptions options = |
webrtc::DesktopCaptureOptions::CreateDefault(); |
options.set_disable_effects(false); |
@@ -126,10 +130,12 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
scoped_ptr<webrtc::WindowCapturer> window_capturer( |
show_windows ? webrtc::WindowCapturer::Create(options) : NULL); |
- media_list.reset(new NativeDesktopMediaList(std::move(screen_capturer), |
- std::move(window_capturer))); |
+ screen_window_list.reset(new NativeDesktopMediaList( |
+ std::move(screen_capturer), std::move(window_capturer))); |
} |
+ media_lists.push_back(std::move(screen_window_list)); |
+ |
// DesktopMediaPicker is implemented only for Windows, OSX and |
// Aura Linux builds. |
#if defined(TOOLKIT_VIEWS) || defined(OS_MACOSX) |
@@ -139,13 +145,16 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
return false; |
#endif |
} |
+ |
+ scoped_ptr<CombinedDesktopMediaList> combined_list( |
+ new CombinedDesktopMediaList(media_lists)); |
Sergey Ulanov
2016/01/27 00:36:31
Does this need to be part of this CL? media_lists
GeorgeZ
2016/01/27 22:57:16
This makes CombinedDesktopMediaList be part of liv
|
DesktopMediaPicker::DoneCallback callback = base::Bind( |
&DesktopCaptureChooseDesktopMediaFunctionBase::OnPickerDialogResults, |
this); |
picker_->Show(web_contents, parent_window, parent_window, |
base::UTF8ToUTF16(extension()->name()), target_name, |
- std::move(media_list), callback); |
+ std::move(combined_list), callback); |
origin_ = origin; |
return true; |
} |