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

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

Issue 1622733002: Add CombinedDesktopMediaList class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed for android build Created 4 years, 11 months 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 fccf615c9eecd33b6737ad7439b3405340281109..c8ff00752cca7be8b476f619ba255f722fa42bcf 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
@@ -10,10 +10,12 @@
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/media/combined_desktop_media_list.h"
#include "chrome/browser/media/desktop_media_list_ash.h"
#include "chrome/browser/media/desktop_streams_registry.h"
#include "chrome/browser/media/media_capture_devices_dispatcher.h"
#include "chrome/browser/media/native_desktop_media_list.h"
+#include "chrome/browser/media/tab_desktop_media_list.h"
#include "chrome/browser/ui/ash/ash_util.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
@@ -76,6 +78,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,32 +95,38 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
break;
case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB:
+ // TODO(gyzhou) replace next two lines with line show_tabs = true after
+ // a flag for tab capture permission are added.
error_ = kTabCaptureNotSupportedError;
return false;
+ break;
qiangchen 2016/01/26 01:01:50 No need to break after return;
GeorgeZ 2016/01/27 00:17:37 Done.
}
}
- if (!show_screens && !show_windows) {
+ if (!show_screens && !show_windows && !show_tabs) {
error_ = kEmptySourcesListError;
return false;
}
const gfx::NativeWindow parent_window =
web_contents->GetTopLevelNativeWindow();
- scoped_ptr<DesktopMediaList> media_list;
+
+ std::vector<scoped_ptr<DesktopMediaList>> media_lists;
if (g_picker_factory) {
- media_list = g_picker_factory->CreateModel(
- show_screens, show_windows);
+ scoped_ptr<DesktopMediaList> media_list =
+ g_picker_factory->CreateModel(show_screens, show_windows);
+ media_lists.push_back(std::move(media_list));
picker_ = g_picker_factory->CreatePicker();
} else {
+ scoped_ptr<DesktopMediaList> screen_window_list;
#if defined(USE_ASH)
if (chrome::IsNativeWindowInAsh(parent_window)) {
- media_list.reset(new DesktopMediaListAsh(
+ screen_window_list.reset(new DesktopMediaListAsh(
(show_screens ? DesktopMediaListAsh::SCREENS : 0) |
(show_windows ? DesktopMediaListAsh::WINDOWS : 0)));
}
#endif
- if (!media_list) {
+ if (!screen_window_list) {
qiangchen 2016/01/26 01:01:50 Not your fault. But I think it would be better to
GeorgeZ 2016/01/27 00:17:37 I am not sure whether USE_ASH case will never use
webrtc::DesktopCaptureOptions options =
webrtc::DesktopCaptureOptions::CreateDefault();
options.set_disable_effects(false);
@@ -126,8 +135,14 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
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)));
+ screen_window_list.reset(new NativeDesktopMediaList(
+ std::move(screen_capturer), std::move(window_capturer)));
+ }
+
+ media_lists.push_back(std::move(screen_window_list));
+ if (show_tabs) {
+ scoped_ptr<DesktopMediaList> tab_list(new TabDesktopMediaList());
+ media_lists.push_back(std::move(tab_list));
}
// DesktopMediaPicker is implemented only for Windows, OSX and
@@ -139,13 +154,16 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
return false;
#endif
}
+
+ scoped_ptr<CombinedDesktopMediaList> combined_list(
+ new CombinedDesktopMediaList(media_lists));
DesktopMediaPicker::DoneCallback callback = base::Bind(
&DesktopCaptureChooseDesktopMediaFunctionBase::OnPickerDialogResults,
this);
picker_->Show(web_contents, parent_window, parent_window,
base::UTF8ToUTF16(extension()->name()), target_name,
- std::move(media_list), callback);
+ std::move(combined_list), callback);
origin_ = origin;
return true;
}
« no previous file with comments | « no previous file | chrome/browser/media/combined_desktop_media_list.h » ('j') | chrome/browser/media/combined_desktop_media_list.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698