| 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
|
|
|