Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4418)

Unified Diff: chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc

Issue 1503563004: Desktop chrome tab capture-chooseDesktopMedia() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review patch 5 Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698