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

Side by Side 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: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h" 5 #include "chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h"
6 6
7 #include <tuple> 7 #include <tuple>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( 69 bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
70 const std::vector<api::desktop_capture::DesktopCaptureSourceType>& sources, 70 const std::vector<api::desktop_capture::DesktopCaptureSourceType>& sources,
71 content::WebContents* web_contents, 71 content::WebContents* web_contents,
72 const GURL& origin, 72 const GURL& origin,
73 const base::string16 target_name) { 73 const base::string16 target_name) {
74 // Register to be notified when the tab is closed. 74 // Register to be notified when the tab is closed.
75 Observe(web_contents); 75 Observe(web_contents);
76 76
77 bool show_screens = false; 77 bool show_screens = false;
78 bool show_windows = false; 78 bool show_windows = false;
79 bool show_tabs = false;
Sergey Ulanov 2016/01/13 22:53:16 remove this. You don't need any changes in this fi
GeorgeZ 2016/01/13 23:15:53 Done.
79 80
80 for (auto source_type : sources) { 81 for (auto source_type : sources) {
81 switch (source_type) { 82 switch (source_type) {
82 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_NONE: 83 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_NONE:
83 error_ = kInvalidSourceNameError; 84 error_ = kInvalidSourceNameError;
84 return false; 85 return false;
85 86
86 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_SCREEN: 87 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_SCREEN:
87 show_screens = true; 88 show_screens = true;
88 break; 89 break;
89 90
90 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_WINDOW: 91 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_WINDOW:
91 show_windows = true; 92 show_windows = true;
92 break; 93 break;
93 94
94 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB: 95 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB:
95 error_ = kTabCaptureNotSupportedError; 96 error_ = kTabCaptureNotSupportedError;
96 return false; 97 return false;
98 break;
97 } 99 }
98 } 100 }
99 101
100 if (!show_screens && !show_windows) { 102 if (!show_screens && !show_windows && !show_tabs) {
101 error_ = kEmptySourcesListError; 103 error_ = kEmptySourcesListError;
102 return false; 104 return false;
103 } 105 }
104 106
105 const gfx::NativeWindow parent_window = 107 const gfx::NativeWindow parent_window =
106 web_contents->GetTopLevelNativeWindow(); 108 web_contents->GetTopLevelNativeWindow();
107 scoped_ptr<DesktopMediaList> media_list; 109 scoped_ptr<DesktopMediaList> media_list;
108 if (g_picker_factory) { 110 if (g_picker_factory) {
109 media_list = g_picker_factory->CreateModel( 111 media_list = g_picker_factory->CreateModel(
110 show_screens, show_windows); 112 show_screens, show_windows);
111 picker_ = g_picker_factory->CreatePicker(); 113 picker_ = g_picker_factory->CreatePicker();
112 } else { 114 } else {
113 #if defined(USE_ASH) 115 #if defined(USE_ASH)
114 if (chrome::IsNativeWindowInAsh(parent_window)) { 116 if (chrome::IsNativeWindowInAsh(parent_window)) {
115 media_list.reset(new DesktopMediaListAsh( 117 media_list.reset(new DesktopMediaListAsh(
116 (show_screens ? DesktopMediaListAsh::SCREENS : 0) | 118 (show_screens ? DesktopMediaListAsh::SCREENS : 0) |
117 (show_windows ? DesktopMediaListAsh::WINDOWS : 0))); 119 (show_windows ? DesktopMediaListAsh::WINDOWS : 0)));
118 } 120 }
119 #endif 121 #endif
120 if (!media_list) { 122 if (!media_list) {
121 webrtc::DesktopCaptureOptions options = 123 webrtc::DesktopCaptureOptions options =
122 webrtc::DesktopCaptureOptions::CreateDefault(); 124 webrtc::DesktopCaptureOptions::CreateDefault();
123 options.set_disable_effects(false); 125 options.set_disable_effects(false);
124 scoped_ptr<webrtc::ScreenCapturer> screen_capturer( 126 scoped_ptr<webrtc::ScreenCapturer> screen_capturer(
125 show_screens ? webrtc::ScreenCapturer::Create(options) : NULL); 127 show_screens ? webrtc::ScreenCapturer::Create(options) : NULL);
126 scoped_ptr<webrtc::WindowCapturer> window_capturer( 128 scoped_ptr<webrtc::WindowCapturer> window_capturer(
127 show_windows ? webrtc::WindowCapturer::Create(options) : NULL); 129 show_windows ? webrtc::WindowCapturer::Create(options) : NULL);
128
129 media_list.reset(new NativeDesktopMediaList(std::move(screen_capturer), 130 media_list.reset(new NativeDesktopMediaList(std::move(screen_capturer),
130 std::move(window_capturer))); 131 std::move(window_capturer)));
131 } 132 }
132 133
133 // DesktopMediaPicker is implemented only for Windows, OSX and 134 // DesktopMediaPicker is implemented only for Windows, OSX and
134 // Aura Linux builds. 135 // Aura Linux builds.
135 // TODO(bshe): Use ANDROID_JAVA_UI flag here after it landed. 136 // TODO(bshe): Use ANDROID_JAVA_UI flag here after it landed.
136 #if (defined(TOOLKIT_VIEWS) && !defined(OS_ANDROID)) || defined(OS_MACOSX) 137 #if (defined(TOOLKIT_VIEWS) && !defined(OS_ANDROID)) || defined(OS_MACOSX)
137 // TODO(bshe): This is called if chrome.desktopCapture.chooseDesktopMedia 138 // TODO(bshe): This is called if chrome.desktopCapture.chooseDesktopMedia
138 // or chrome.webrtcDesktopCapturePrivate.chooseDesktopMedia are called by 139 // or chrome.webrtcDesktopCapturePrivate.chooseDesktopMedia are called by
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 235
235 void DesktopCaptureRequestsRegistry::CancelRequest(int process_id, 236 void DesktopCaptureRequestsRegistry::CancelRequest(int process_id,
236 int request_id) { 237 int request_id) {
237 RequestsMap::iterator it = requests_.find(RequestId(process_id, request_id)); 238 RequestsMap::iterator it = requests_.find(RequestId(process_id, request_id));
238 if (it != requests_.end()) 239 if (it != requests_.end())
239 it->second->Cancel(); 240 it->second->Cancel();
240 } 241 }
241 242
242 243
243 } // namespace extensions 244 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698