OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/audio_renderer_host.h" | 5 #include "content/browser/renderer_host/media/audio_renderer_host.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 UMA_HISTOGRAM_CUSTOM_TIMES("Media.Audio.OutputDeviceAuthorizationTime", | 39 UMA_HISTOGRAM_CUSTOM_TIMES("Media.Audio.OutputDeviceAuthorizationTime", |
40 base::TimeTicks::Now() - auth_start_time, | 40 base::TimeTicks::Now() - auth_start_time, |
41 base::TimeDelta::FromMilliseconds(1), | 41 base::TimeDelta::FromMilliseconds(1), |
42 base::TimeDelta::FromMilliseconds(5000), 50); | 42 base::TimeDelta::FromMilliseconds(5000), 50); |
43 } | 43 } |
44 | 44 |
45 // Check that the routing ID references a valid RenderFrameHost, and run | 45 // Check that the routing ID references a valid RenderFrameHost, and run |
46 // |callback| on the IO thread with true if the ID is valid. | 46 // |callback| on the IO thread with true if the ID is valid. |
47 void ValidateRenderFrameId(int render_process_id, | 47 void ValidateRenderFrameId(int render_process_id, |
48 int render_frame_id, | 48 int render_frame_id, |
49 const base::Callback<void(bool)>& callback) { | 49 base::OnceCallback<void(bool)> callback) { |
50 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 50 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
51 const bool frame_exists = | 51 const bool frame_exists = |
52 !!RenderFrameHost::FromID(render_process_id, render_frame_id); | 52 !!RenderFrameHost::FromID(render_process_id, render_frame_id); |
53 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 53 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
54 base::Bind(callback, frame_exists)); | 54 base::BindOnce(std::move(callback), frame_exists)); |
55 } | 55 } |
56 | 56 |
57 } // namespace | 57 } // namespace |
58 | 58 |
59 /////////////////////////////////////////////////////////////////////////////// | 59 /////////////////////////////////////////////////////////////////////////////// |
60 // AudioRendererHost implementations. | 60 // AudioRendererHost implementations. |
61 | 61 |
62 AudioRendererHost::AudioRendererHost(int render_process_id, | 62 AudioRendererHost::AudioRendererHost(int render_process_id, |
63 media::AudioManager* audio_manager, | 63 media::AudioManager* audio_manager, |
64 media::AudioSystem* audio_system, | 64 media::AudioSystem* audio_system, |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 if (LookupById(stream_id) || IsAuthorizationStarted(stream_id)) | 184 if (LookupById(stream_id) || IsAuthorizationStarted(stream_id)) |
185 return; | 185 return; |
186 | 186 |
187 authorizations_.insert( | 187 authorizations_.insert( |
188 std::make_pair(stream_id, std::make_pair(false, std::string()))); | 188 std::make_pair(stream_id, std::make_pair(false, std::string()))); |
189 | 189 |
190 // Unretained is ok here since |this| owns |authorization_handler_| and | 190 // Unretained is ok here since |this| owns |authorization_handler_| and |
191 // |authorization_handler_| owns the callback. | 191 // |authorization_handler_| owns the callback. |
192 authorization_handler_.RequestDeviceAuthorization( | 192 authorization_handler_.RequestDeviceAuthorization( |
193 render_frame_id, session_id, device_id, security_origin, | 193 render_frame_id, session_id, device_id, security_origin, |
194 base::Bind(&AudioRendererHost::AuthorizationCompleted, | 194 base::BindOnce(&AudioRendererHost::AuthorizationCompleted, |
195 base::Unretained(this), stream_id, security_origin, | 195 base::Unretained(this), stream_id, security_origin, |
196 auth_start_time)); | 196 auth_start_time)); |
197 } | 197 } |
198 | 198 |
199 void AudioRendererHost::AuthorizationCompleted( | 199 void AudioRendererHost::AuthorizationCompleted( |
200 int stream_id, | 200 int stream_id, |
201 const url::Origin& security_origin, | 201 const url::Origin& security_origin, |
202 base::TimeTicks auth_start_time, | 202 base::TimeTicks auth_start_time, |
203 media::OutputDeviceStatus status, | 203 media::OutputDeviceStatus status, |
204 bool should_send_id, | 204 bool should_send_id, |
205 const media::AudioParameters& params, | 205 const media::AudioParameters& params, |
206 const std::string& raw_device_id) { | 206 const std::string& raw_device_id) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 SendErrorMessage(stream_id); | 272 SendErrorMessage(stream_id); |
273 return; | 273 return; |
274 } | 274 } |
275 | 275 |
276 // Post a task to the UI thread to check that the |render_frame_id| references | 276 // Post a task to the UI thread to check that the |render_frame_id| references |
277 // a valid render frame. This validation is important for all the reasons | 277 // a valid render frame. This validation is important for all the reasons |
278 // stated in the comments above. This does not block stream creation, but will | 278 // stated in the comments above. This does not block stream creation, but will |
279 // force-close the stream later if validation fails. | 279 // force-close the stream later if validation fails. |
280 BrowserThread::PostTask( | 280 BrowserThread::PostTask( |
281 BrowserThread::UI, FROM_HERE, | 281 BrowserThread::UI, FROM_HERE, |
282 base::Bind(validate_render_frame_id_function_, render_process_id_, | 282 base::BindOnce(validate_render_frame_id_function_, render_process_id_, |
283 render_frame_id, | 283 render_frame_id, |
284 base::Bind(&AudioRendererHost::DidValidateRenderFrame, this, | 284 base::BindOnce(&AudioRendererHost::DidValidateRenderFrame, |
285 stream_id))); | 285 this, stream_id))); |
286 | 286 |
287 MediaObserver* const media_observer = | 287 MediaObserver* const media_observer = |
288 GetContentClient()->browser()->GetMediaObserver(); | 288 GetContentClient()->browser()->GetMediaObserver(); |
289 | 289 |
290 MediaInternals* const media_internals = MediaInternals::GetInstance(); | 290 MediaInternals* const media_internals = MediaInternals::GetInstance(); |
291 std::unique_ptr<media::AudioLog> audio_log = media_internals->CreateAudioLog( | 291 std::unique_ptr<media::AudioLog> audio_log = media_internals->CreateAudioLog( |
292 media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER); | 292 media::AudioLogFactory::AUDIO_OUTPUT_CONTROLLER); |
293 media_internals->SetWebContentsTitleForAudioLogEntry( | 293 media_internals->SetWebContentsTitleForAudioLogEntry( |
294 stream_id, render_process_id_, render_frame_id, audio_log.get()); | 294 stream_id, render_process_id_, render_frame_id, audio_log.get()); |
295 delegates_.push_back( | 295 delegates_.push_back( |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 | 377 |
378 bool AudioRendererHost::IsAuthorizationStarted(int stream_id) { | 378 bool AudioRendererHost::IsAuthorizationStarted(int stream_id) { |
379 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 379 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
380 return authorizations_.find(stream_id) != authorizations_.end(); | 380 return authorizations_.find(stream_id) != authorizations_.end(); |
381 } | 381 } |
382 | 382 |
383 void AudioRendererHost::OverrideDevicePermissionsForTesting(bool has_access) { | 383 void AudioRendererHost::OverrideDevicePermissionsForTesting(bool has_access) { |
384 authorization_handler_.OverridePermissionsForTesting(has_access); | 384 authorization_handler_.OverridePermissionsForTesting(has_access); |
385 } | 385 } |
386 } // namespace content | 386 } // namespace content |
OLD | NEW |