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

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

Issue 1880693002: Desktop Capture Picker New UI: Preliminary Refactor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit Created 4 years, 8 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 8c0c170fcfc5b1eee93fc74fd6a99f82d414ad11..dbdec766d8fb24647ca4fd9c5571ced64c325a0f 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
@@ -12,7 +12,6 @@
#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"
@@ -127,46 +126,62 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
const gfx::NativeWindow parent_window =
web_contents->GetTopLevelNativeWindow();
- std::unique_ptr<DesktopMediaList> media_list;
+ std::unique_ptr<DesktopMediaList> screen_list;
+ std::unique_ptr<DesktopMediaList> window_list;
+ std::unique_ptr<DesktopMediaList> tab_list;
if (g_picker_factory) {
- media_list = g_picker_factory->CreateModel(show_screens, show_windows,
- show_tabs, request_audio);
+ PickerFactory::MediaListArray media_lists =
+ g_picker_factory->CreateModel(show_screens, show_windows, show_tabs,
+ request_audio);
+ screen_list = std::move(media_lists[0]);
+ window_list = std::move(media_lists[1]);
+ tab_list = std::move(media_lists[2]);
picker_ = g_picker_factory->CreatePicker();
} else {
- std::vector<std::unique_ptr<DesktopMediaList>> media_lists;
- // Create a screens/windows list and push it into media_lists.
- if (show_screens || show_windows) {
+ // Create a screens list.
+ if (show_screens) {
#if defined(USE_ASH)
if (chrome::IsNativeWindowInAsh(parent_window)) {
- media_lists.push_back(base::WrapUnique(new DesktopMediaListAsh(
- (show_screens ? DesktopMediaListAsh::SCREENS : 0) |
- (show_windows ? DesktopMediaListAsh::WINDOWS : 0))));
+ screen_list = base::WrapUnique(
+ new DesktopMediaListAsh(DesktopMediaListAsh::SCREENS));
}
#endif
- if (media_lists.empty()) {
+ if (!screen_list) {
webrtc::DesktopCaptureOptions options =
webrtc::DesktopCaptureOptions::CreateDefault();
options.set_disable_effects(false);
std::unique_ptr<webrtc::ScreenCapturer> screen_capturer(
- show_screens ? webrtc::ScreenCapturer::Create(options) : NULL);
+ webrtc::ScreenCapturer::Create(options));
+
+ screen_list = base::WrapUnique(
+ new NativeDesktopMediaList(std::move(screen_capturer), nullptr));
+ }
+ }
+
+ // Create a windows list.
+ if (show_windows) {
+#if defined(USE_ASH)
+ if (chrome::IsNativeWindowInAsh(parent_window)) {
+ window_list = base::WrapUnique(
+ new DesktopMediaListAsh(DesktopMediaListAsh::WINDOWS));
+ }
+#endif
+ if (!window_list) {
+ webrtc::DesktopCaptureOptions options =
+ webrtc::DesktopCaptureOptions::CreateDefault();
+ options.set_disable_effects(false);
std::unique_ptr<webrtc::WindowCapturer> window_capturer(
- show_windows ? webrtc::WindowCapturer::Create(options) : NULL);
+ webrtc::WindowCapturer::Create(options));
- media_lists.push_back(base::WrapUnique(new NativeDesktopMediaList(
- std::move(screen_capturer), std::move(window_capturer))));
+ window_list = base::WrapUnique(
+ new NativeDesktopMediaList(nullptr, std::move(window_capturer)));
}
}
if (show_tabs)
- media_lists.push_back(base::WrapUnique(new TabDesktopMediaList()));
-
- DCHECK(!media_lists.empty());
+ tab_list = base::WrapUnique(new TabDesktopMediaList());
- if (media_lists.size() == 1) {
- media_list = std::move(media_lists[0]);
- } else {
- media_list.reset(new CombinedDesktopMediaList(media_lists));
- }
+ DCHECK(screen_list || window_list || tab_list);
// DesktopMediaPicker is implemented only for Windows, OSX and
// Aura Linux builds.
@@ -184,7 +199,8 @@ bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
picker_->Show(web_contents, parent_window, parent_window,
base::UTF8ToUTF16(extension()->name()), target_name,
- std::move(media_list), request_audio, callback);
+ std::move(screen_list), std::move(window_list),
+ std::move(tab_list), request_audio, callback);
origin_ = origin;
return true;
}
« no previous file with comments | « chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h ('k') | chrome/browser/media/desktop_media_picker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698