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

Side by Side Diff: content/browser/renderer_host/media/media_stream_ui_proxy.cc

Issue 2869733005: Convert some audio code to OnceCallback. (Closed)
Patch Set: Fix BindToCurrentLoop issues Created 3 years, 7 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/renderer_host/media/media_stream_ui_proxy.h" 5 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 112
113 void MediaStreamUIProxy::Core::ProcessAccessRequestResponse( 113 void MediaStreamUIProxy::Core::ProcessAccessRequestResponse(
114 const MediaStreamDevices& devices, 114 const MediaStreamDevices& devices,
115 content::MediaStreamRequestResult result, 115 content::MediaStreamRequestResult result,
116 std::unique_ptr<MediaStreamUI> stream_ui) { 116 std::unique_ptr<MediaStreamUI> stream_ui) {
117 DCHECK_CURRENTLY_ON(BrowserThread::UI); 117 DCHECK_CURRENTLY_ON(BrowserThread::UI);
118 118
119 ui_ = std::move(stream_ui); 119 ui_ = std::move(stream_ui);
120 BrowserThread::PostTask( 120 BrowserThread::PostTask(
121 BrowserThread::IO, FROM_HERE, 121 BrowserThread::IO, FROM_HERE,
122 base::Bind(&MediaStreamUIProxy::ProcessAccessRequestResponse, 122 base::BindOnce(&MediaStreamUIProxy::ProcessAccessRequestResponse, proxy_,
123 proxy_, devices, result)); 123 devices, result));
124 } 124 }
125 125
126 void MediaStreamUIProxy::Core::ProcessStopRequestFromUI() { 126 void MediaStreamUIProxy::Core::ProcessStopRequestFromUI() {
127 DCHECK_CURRENTLY_ON(BrowserThread::UI); 127 DCHECK_CURRENTLY_ON(BrowserThread::UI);
128 128
129 BrowserThread::PostTask( 129 BrowserThread::PostTask(
130 BrowserThread::IO, FROM_HERE, 130 BrowserThread::IO, FROM_HERE,
131 base::Bind(&MediaStreamUIProxy::ProcessStopRequestFromUI, proxy_)); 131 base::BindOnce(&MediaStreamUIProxy::ProcessStopRequestFromUI, proxy_));
132 } 132 }
133 133
134 RenderFrameHostDelegate* MediaStreamUIProxy::Core::GetRenderFrameHostDelegate( 134 RenderFrameHostDelegate* MediaStreamUIProxy::Core::GetRenderFrameHostDelegate(
135 int render_process_id, 135 int render_process_id,
136 int render_frame_id) { 136 int render_frame_id) {
137 if (test_render_delegate_) 137 if (test_render_delegate_)
138 return test_render_delegate_; 138 return test_render_delegate_;
139 RenderFrameHostImpl* host = 139 RenderFrameHostImpl* host =
140 RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 140 RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
141 return host ? host->delegate() : NULL; 141 return host ? host->delegate() : NULL;
(...skipping 17 matching lines...) Expand all
159 DCHECK_CURRENTLY_ON(BrowserThread::IO); 159 DCHECK_CURRENTLY_ON(BrowserThread::IO);
160 core_.reset(new Core(weak_factory_.GetWeakPtr(), test_render_delegate)); 160 core_.reset(new Core(weak_factory_.GetWeakPtr(), test_render_delegate));
161 } 161 }
162 162
163 MediaStreamUIProxy::~MediaStreamUIProxy() { 163 MediaStreamUIProxy::~MediaStreamUIProxy() {
164 DCHECK_CURRENTLY_ON(BrowserThread::IO); 164 DCHECK_CURRENTLY_ON(BrowserThread::IO);
165 } 165 }
166 166
167 void MediaStreamUIProxy::RequestAccess( 167 void MediaStreamUIProxy::RequestAccess(
168 std::unique_ptr<MediaStreamRequest> request, 168 std::unique_ptr<MediaStreamRequest> request,
169 const ResponseCallback& response_callback) { 169 ResponseCallback response_callback) {
170 DCHECK_CURRENTLY_ON(BrowserThread::IO); 170 DCHECK_CURRENTLY_ON(BrowserThread::IO);
171 171
172 response_callback_ = response_callback; 172 response_callback_ = std::move(response_callback);
173 BrowserThread::PostTask( 173 BrowserThread::PostTask(
174 BrowserThread::UI, FROM_HERE, 174 BrowserThread::UI, FROM_HERE,
175 base::Bind(&Core::RequestAccess, base::Unretained(core_.get()), 175 base::BindOnce(&Core::RequestAccess, base::Unretained(core_.get()),
176 base::Passed(&request))); 176 std::move(request)));
o1ka 2017/05/10 08:03:02 base::Passed?
Max Morin 2017/05/10 10:39:59 They're the same for OnceCallbacks. I prefer "move
177 } 177 }
178 178
179 void MediaStreamUIProxy::OnStarted(const base::Closure& stop_callback, 179 void MediaStreamUIProxy::OnStarted(base::OnceClosure stop_callback,
180 const WindowIdCallback& window_id_callback) { 180 WindowIdCallback window_id_callback) {
181 DCHECK_CURRENTLY_ON(BrowserThread::IO); 181 DCHECK_CURRENTLY_ON(BrowserThread::IO);
182 182
183 stop_callback_ = stop_callback; 183 stop_callback_ = std::move(stop_callback);
184 184
185 // Owned by the PostTaskAndReply callback. 185 // Owned by the PostTaskAndReply callback.
186 gfx::NativeViewId* window_id = new gfx::NativeViewId(0); 186 gfx::NativeViewId* window_id = new gfx::NativeViewId(0);
187 187
188 BrowserThread::PostTaskAndReply( 188 BrowserThread::PostTaskAndReply(
189 BrowserThread::UI, 189 BrowserThread::UI, FROM_HERE,
190 FROM_HERE, 190 base::BindOnce(&Core::OnStarted, base::Unretained(core_.get()),
191 base::Bind(&Core::OnStarted, base::Unretained(core_.get()), window_id), 191 window_id),
192 base::Bind(&MediaStreamUIProxy::OnWindowId, 192 base::BindOnce(&MediaStreamUIProxy::OnWindowId,
193 weak_factory_.GetWeakPtr(), 193 weak_factory_.GetWeakPtr(), std::move(window_id_callback),
194 window_id_callback, 194 base::Owned(window_id)));
195 base::Owned(window_id)));
196 } 195 }
197 196
198 void MediaStreamUIProxy::ProcessAccessRequestResponse( 197 void MediaStreamUIProxy::ProcessAccessRequestResponse(
199 const MediaStreamDevices& devices, 198 const MediaStreamDevices& devices,
200 content::MediaStreamRequestResult result) { 199 content::MediaStreamRequestResult result) {
201 DCHECK_CURRENTLY_ON(BrowserThread::IO); 200 DCHECK_CURRENTLY_ON(BrowserThread::IO);
202 DCHECK(!response_callback_.is_null()); 201 DCHECK(!response_callback_.is_null());
203 202
204 ResponseCallback cb = response_callback_; 203 std::move(response_callback_).Run(devices, result);
205 response_callback_.Reset();
206 cb.Run(devices, result);
207 } 204 }
208 205
209 void MediaStreamUIProxy::ProcessStopRequestFromUI() { 206 void MediaStreamUIProxy::ProcessStopRequestFromUI() {
210 DCHECK_CURRENTLY_ON(BrowserThread::IO); 207 DCHECK_CURRENTLY_ON(BrowserThread::IO);
211 DCHECK(!stop_callback_.is_null()); 208 DCHECK(!stop_callback_.is_null());
212 209
213 base::Closure cb = stop_callback_; 210 std::move(stop_callback_).Run();
214 stop_callback_.Reset();
215 cb.Run();
216 } 211 }
217 212
218 void MediaStreamUIProxy::OnWindowId(const WindowIdCallback& window_id_callback, 213 void MediaStreamUIProxy::OnWindowId(WindowIdCallback window_id_callback,
219 gfx::NativeViewId* window_id) { 214 gfx::NativeViewId* window_id) {
220 DCHECK_CURRENTLY_ON(BrowserThread::IO); 215 DCHECK_CURRENTLY_ON(BrowserThread::IO);
221 if (!window_id_callback.is_null()) 216 if (!window_id_callback.is_null())
222 window_id_callback.Run(*window_id); 217 std::move(window_id_callback).Run(*window_id);
223 } 218 }
224 219
225 FakeMediaStreamUIProxy::FakeMediaStreamUIProxy() 220 FakeMediaStreamUIProxy::FakeMediaStreamUIProxy()
226 : MediaStreamUIProxy(NULL), 221 : MediaStreamUIProxy(NULL),
227 mic_access_(true), 222 mic_access_(true),
228 camera_access_(true) { 223 camera_access_(true) {
229 } 224 }
230 225
231 FakeMediaStreamUIProxy::~FakeMediaStreamUIProxy() {} 226 FakeMediaStreamUIProxy::~FakeMediaStreamUIProxy() {}
232 227
233 void FakeMediaStreamUIProxy::SetAvailableDevices( 228 void FakeMediaStreamUIProxy::SetAvailableDevices(
234 const MediaStreamDevices& devices) { 229 const MediaStreamDevices& devices) {
235 devices_ = devices; 230 devices_ = devices;
236 } 231 }
237 232
238 void FakeMediaStreamUIProxy::SetMicAccess(bool access) { 233 void FakeMediaStreamUIProxy::SetMicAccess(bool access) {
239 mic_access_ = access; 234 mic_access_ = access;
240 } 235 }
241 236
242 void FakeMediaStreamUIProxy::SetCameraAccess(bool access) { 237 void FakeMediaStreamUIProxy::SetCameraAccess(bool access) {
243 camera_access_ = access; 238 camera_access_ = access;
244 } 239 }
245 240
246 void FakeMediaStreamUIProxy::RequestAccess( 241 void FakeMediaStreamUIProxy::RequestAccess(
247 std::unique_ptr<MediaStreamRequest> request, 242 std::unique_ptr<MediaStreamRequest> request,
248 const ResponseCallback& response_callback) { 243 ResponseCallback response_callback) {
249 DCHECK_CURRENTLY_ON(BrowserThread::IO); 244 DCHECK_CURRENTLY_ON(BrowserThread::IO);
250 245
251 response_callback_ = response_callback; 246 response_callback_ = std::move(response_callback);
252 247
253 if (base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 248 if (base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
254 switches::kUseFakeUIForMediaStream) == "deny") { 249 switches::kUseFakeUIForMediaStream) == "deny") {
255 // Immediately deny the request. 250 // Immediately deny the request.
256 BrowserThread::PostTask( 251 BrowserThread::PostTask(
257 BrowserThread::IO, FROM_HERE, 252 BrowserThread::IO, FROM_HERE,
258 base::Bind(&MediaStreamUIProxy::ProcessAccessRequestResponse, 253 base::BindOnce(&MediaStreamUIProxy::ProcessAccessRequestResponse,
259 weak_factory_.GetWeakPtr(), 254 weak_factory_.GetWeakPtr(), MediaStreamDevices(),
260 MediaStreamDevices(), 255 MEDIA_DEVICE_PERMISSION_DENIED));
261 MEDIA_DEVICE_PERMISSION_DENIED));
262 return; 256 return;
263 } 257 }
264 258
265 MediaStreamDevices devices_to_use; 259 MediaStreamDevices devices_to_use;
266 bool accepted_audio = false; 260 bool accepted_audio = false;
267 bool accepted_video = false; 261 bool accepted_video = false;
268 262
269 // Use the first capture device of the same media type in the list for the 263 // Use the first capture device of the same media type in the list for the
270 // fake UI. 264 // fake UI.
271 for (MediaStreamDevices::const_iterator it = devices_.begin(); 265 for (MediaStreamDevices::const_iterator it = devices_.begin();
(...skipping 16 matching lines...) Expand all
288 } 282 }
289 283
290 // Fail the request if a device doesn't exist for the requested type. 284 // Fail the request if a device doesn't exist for the requested type.
291 if ((request->audio_type != MEDIA_NO_SERVICE && !accepted_audio) || 285 if ((request->audio_type != MEDIA_NO_SERVICE && !accepted_audio) ||
292 (request->video_type != MEDIA_NO_SERVICE && !accepted_video)) { 286 (request->video_type != MEDIA_NO_SERVICE && !accepted_video)) {
293 devices_to_use.clear(); 287 devices_to_use.clear();
294 } 288 }
295 289
296 BrowserThread::PostTask( 290 BrowserThread::PostTask(
297 BrowserThread::IO, FROM_HERE, 291 BrowserThread::IO, FROM_HERE,
298 base::Bind(&MediaStreamUIProxy::ProcessAccessRequestResponse, 292 base::BindOnce(
299 weak_factory_.GetWeakPtr(), 293 &MediaStreamUIProxy::ProcessAccessRequestResponse,
300 devices_to_use, 294 weak_factory_.GetWeakPtr(), devices_to_use,
301 devices_to_use.empty() ? 295 devices_to_use.empty() ? MEDIA_DEVICE_NO_HARDWARE : MEDIA_DEVICE_OK));
302 MEDIA_DEVICE_NO_HARDWARE :
303 MEDIA_DEVICE_OK));
304 } 296 }
305 297
306 void FakeMediaStreamUIProxy::OnStarted( 298 void FakeMediaStreamUIProxy::OnStarted(base::OnceClosure stop_callback,
307 const base::Closure& stop_callback, 299 WindowIdCallback window_id_callback) {}
308 const WindowIdCallback& window_id_callback) {}
309 300
310 } // namespace content 301 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698