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 04c3685110401a8a43a598b0e45f69ea92f522df..b88e0a8b199a256eb74fb24d764a33f9330ac9ff 100644 |
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc |
@@ -29,7 +29,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; |
@@ -76,6 +75,7 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
bool show_screens = false; |
bool show_windows = false; |
+ bool show_tabs = false; |
for (auto source_type : sources) { |
switch (source_type) { |
@@ -92,12 +92,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; |
} |
@@ -111,10 +111,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) { |
@@ -125,9 +126,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(std::move(screen_capturer), |
- std::move(window_capturer))); |
+ media_list.reset(new NativeDesktopMediaList( |
+ std::move(screen_capturer), std::move(window_capturer), show_tabs)); |
} |
// DesktopMediaPicker is implemented only for Windows, OSX and |