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 a15e8fb5d339a0db3b65c6deedb610313b3e0fa9..c9d38a64738fbaa7ead406a1ba44793ee8c921b9 100644 |
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
@@ -27,7 +27,6 @@ namespace { |
const char kInvalidSourceNameError[] = "Invalid source type specified."; |
const char kEmptySourcesListError[] = |
"At least one source type must be specified."; |
-const char kTabCaptureNotSupportedError[] = "Tab capture is not supported yet."; |
DesktopCaptureChooseDesktopMediaFunctionBase::PickerFactory* g_picker_factory = |
NULL; |
@@ -74,6 +73,7 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
bool show_screens = false; |
bool show_windows = false; |
+ bool show_tabs = false; |
for (auto source_type : sources) { |
switch (source_type) { |
@@ -90,12 +90,12 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
break; |
case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB: |
- error_ = kTabCaptureNotSupportedError; |
- return false; |
+ show_tabs = true; |
+ break; |
} |
} |
- if (!show_screens && !show_windows) { |
+ if (!show_screens && !show_windows && !show_tabs) { |
error_ = kEmptySourcesListError; |
return false; |
} |
@@ -109,10 +109,11 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
picker_ = g_picker_factory->CreatePicker(); |
} else { |
#if defined(USE_ASH) |
+ const int source_types = (show_screens ? DesktopMediaListAsh::SCREENS : 0) | |
+ (show_windows ? DesktopMediaListAsh::WINDOWS : 0) | |
+ (show_tabs ? DesktopMediaListAsh::TABS : 0); |
if (chrome::IsNativeWindowInAsh(parent_window)) { |
- media_list.reset(new DesktopMediaListAsh( |
- (show_screens ? DesktopMediaListAsh::SCREENS : 0) | |
- (show_windows ? DesktopMediaListAsh::WINDOWS : 0))); |
+ media_list.reset(new DesktopMediaListAsh(source_types)); |
} |
#endif |
if (!media_list) { |
@@ -123,9 +124,8 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
show_screens ? webrtc::ScreenCapturer::Create(options) : NULL); |
scoped_ptr<webrtc::WindowCapturer> window_capturer( |
show_windows ? webrtc::WindowCapturer::Create(options) : NULL); |
- |
media_list.reset(new NativeDesktopMediaList( |
- screen_capturer.Pass(), window_capturer.Pass())); |
+ screen_capturer.Pass(), window_capturer.Pass(), show_tabs)); |
} |
// DesktopMediaPicker is implemented only for Windows, OSX and |