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