OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 // Represents the browser side of the browser <--> renderer communication | 5 // Represents the browser side of the browser <--> renderer communication |
6 // channel. There will be one RenderProcessHost per renderer process. | 6 // channel. There will be one RenderProcessHost per renderer process. |
7 | 7 |
8 #include "content/browser/renderer_host/render_process_host_impl.h" | 8 #include "content/browser/renderer_host/render_process_host_impl.h" |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 1311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1322 storage_partition_impl_->GetFileSystemContext(), | 1322 storage_partition_impl_->GetFileSystemContext(), |
1323 storage_partition_impl_->GetServiceWorkerContext(), get_contexts_callback, | 1323 storage_partition_impl_->GetServiceWorkerContext(), get_contexts_callback, |
1324 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); | 1324 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); |
1325 | 1325 |
1326 AddFilter(resource_message_filter_.get()); | 1326 AddFilter(resource_message_filter_.get()); |
1327 | 1327 |
1328 media::AudioManager* audio_manager = | 1328 media::AudioManager* audio_manager = |
1329 BrowserMainLoop::GetInstance()->audio_manager(); | 1329 BrowserMainLoop::GetInstance()->audio_manager(); |
1330 MediaStreamManager* media_stream_manager = | 1330 MediaStreamManager* media_stream_manager = |
1331 BrowserMainLoop::GetInstance()->media_stream_manager(); | 1331 BrowserMainLoop::GetInstance()->media_stream_manager(); |
1332 // The AudioInputRendererHost and AudioRendererHost needs to be available for | 1332 // The AudioInputRendererHost needs to be available for |
1333 // lookup, so it's stashed in a member variable. | 1333 // lookup, so it's stashed in a member variable. |
1334 audio_input_renderer_host_ = new AudioInputRendererHost( | 1334 audio_input_renderer_host_ = new AudioInputRendererHost( |
1335 GetID(), audio_manager, media_stream_manager, | 1335 GetID(), audio_manager, media_stream_manager, |
1336 AudioMirroringManager::GetInstance(), | 1336 AudioMirroringManager::GetInstance(), |
1337 BrowserMainLoop::GetInstance()->user_input_monitor()); | 1337 BrowserMainLoop::GetInstance()->user_input_monitor()); |
1338 AddFilter(audio_input_renderer_host_.get()); | 1338 AddFilter(audio_input_renderer_host_.get()); |
1339 audio_renderer_host_ = new AudioRendererHost( | 1339 if (!RendererAudioOutputStreamFactoryContextImpl::UseMojoFactories()) { |
1340 GetID(), audio_manager, BrowserMainLoop::GetInstance()->audio_system(), | 1340 AddFilter(base::MakeRefCounted<AudioRendererHost>( |
1341 AudioMirroringManager::GetInstance(), media_stream_manager, | 1341 GetID(), audio_manager, |
1342 browser_context->GetMediaDeviceIDSalt()); | 1342 BrowserMainLoop::GetInstance()->audio_system(), |
1343 AddFilter(audio_renderer_host_.get()); | 1343 AudioMirroringManager::GetInstance(), media_stream_manager, |
| 1344 browser_context->GetMediaDeviceIDSalt()) |
| 1345 .get()); |
| 1346 } |
1344 AddFilter( | 1347 AddFilter( |
1345 new MidiHost(GetID(), BrowserMainLoop::GetInstance()->midi_service())); | 1348 new MidiHost(GetID(), BrowserMainLoop::GetInstance()->midi_service())); |
1346 AddFilter(new AppCacheDispatcherHost( | 1349 AddFilter(new AppCacheDispatcherHost( |
1347 storage_partition_impl_->GetAppCacheService(), GetID())); | 1350 storage_partition_impl_->GetAppCacheService(), GetID())); |
1348 AddFilter(new ClipboardMessageFilter(blob_storage_context)); | 1351 AddFilter(new ClipboardMessageFilter(blob_storage_context)); |
1349 AddFilter(new DOMStorageMessageFilter( | 1352 AddFilter(new DOMStorageMessageFilter( |
1350 storage_partition_impl_->GetDOMStorageContext())); | 1353 storage_partition_impl_->GetDOMStorageContext())); |
1351 | 1354 |
1352 #if BUILDFLAG(ENABLE_WEBRTC) | 1355 #if BUILDFLAG(ENABLE_WEBRTC) |
1353 peer_connection_tracker_host_ = new PeerConnectionTrackerHost( | 1356 peer_connection_tracker_host_ = new PeerConnectionTrackerHost( |
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1825 --visible_widgets_; | 1828 --visible_widgets_; |
1826 if (visible_widgets_ == 0) { | 1829 if (visible_widgets_ == 0) { |
1827 UpdateProcessPriority(); | 1830 UpdateProcessPriority(); |
1828 } | 1831 } |
1829 } | 1832 } |
1830 | 1833 |
1831 int RenderProcessHostImpl::VisibleWidgetCount() const { | 1834 int RenderProcessHostImpl::VisibleWidgetCount() const { |
1832 return visible_widgets_; | 1835 return visible_widgets_; |
1833 } | 1836 } |
1834 | 1837 |
| 1838 UniqueAudioOutputStreamFactoryPtr |
| 1839 RenderProcessHostImpl::CreateAudioOutputStreamFactory( |
| 1840 int frame_id, |
| 1841 mojom::RendererAudioOutputStreamFactoryRequest request) { |
| 1842 if (!audio_output_stream_factory_context_) { |
| 1843 media::AudioManager* audio_manager = |
| 1844 BrowserMainLoop::GetInstance()->audio_manager(); |
| 1845 MediaStreamManager* media_stream_manager = |
| 1846 BrowserMainLoop::GetInstance()->media_stream_manager(); |
| 1847 media::AudioSystem* audio_system = |
| 1848 BrowserMainLoop::GetInstance()->audio_system(); |
| 1849 std::string salt = GetBrowserContext()->GetMediaDeviceIDSalt(); |
| 1850 audio_output_stream_factory_context_.reset( |
| 1851 new RendererAudioOutputStreamFactoryContextImpl( |
| 1852 GetID(), audio_system, audio_manager, media_stream_manager, salt)); |
| 1853 } |
| 1854 return audio_output_stream_factory_context_->CreateFactory( |
| 1855 frame_id, std::move(request)); |
| 1856 } |
| 1857 |
1835 void RenderProcessHostImpl::OnAudioStreamAdded() { | 1858 void RenderProcessHostImpl::OnAudioStreamAdded() { |
1836 ++audio_stream_count_; | 1859 ++audio_stream_count_; |
1837 UpdateProcessPriority(); | 1860 UpdateProcessPriority(); |
1838 } | 1861 } |
1839 | 1862 |
1840 void RenderProcessHostImpl::OnAudioStreamRemoved() { | 1863 void RenderProcessHostImpl::OnAudioStreamRemoved() { |
1841 DCHECK_GT(audio_stream_count_, 0); | 1864 DCHECK_GT(audio_stream_count_, 0); |
1842 --audio_stream_count_; | 1865 --audio_stream_count_; |
1843 UpdateProcessPriority(); | 1866 UpdateProcessPriority(); |
1844 } | 1867 } |
(...skipping 1549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3394 // sent a RenderProcessHostDestroyed notification, and we must observe our | 3417 // sent a RenderProcessHostDestroyed notification, and we must observe our |
3395 // contract that says that will be the last call. | 3418 // contract that says that will be the last call. |
3396 if (deleting_soon_) | 3419 if (deleting_soon_) |
3397 return; | 3420 return; |
3398 | 3421 |
3399 RendererClosedDetails details{base::TERMINATION_STATUS_LAUNCH_FAILED, | 3422 RendererClosedDetails details{base::TERMINATION_STATUS_LAUNCH_FAILED, |
3400 error_code}; | 3423 error_code}; |
3401 ProcessDied(true, &details); | 3424 ProcessDied(true, &details); |
3402 } | 3425 } |
3403 | 3426 |
3404 scoped_refptr<AudioRendererHost> RenderProcessHostImpl::audio_renderer_host() | |
3405 const { | |
3406 return audio_renderer_host_; | |
3407 } | |
3408 | |
3409 void RenderProcessHostImpl::OnUserMetricsRecordAction( | 3427 void RenderProcessHostImpl::OnUserMetricsRecordAction( |
3410 const std::string& action) { | 3428 const std::string& action) { |
3411 base::RecordComputedAction(action); | 3429 base::RecordComputedAction(action); |
3412 } | 3430 } |
3413 | 3431 |
3414 void RenderProcessHostImpl::OnCloseACK(int old_route_id) { | 3432 void RenderProcessHostImpl::OnCloseACK(int old_route_id) { |
3415 SessionStorageHolder* holder = | 3433 SessionStorageHolder* holder = |
3416 static_cast<SessionStorageHolder*>(GetUserData(kSessionStorageHolderKey)); | 3434 static_cast<SessionStorageHolder*>(GetUserData(kSessionStorageHolderKey)); |
3417 if (!holder) | 3435 if (!holder) |
3418 return; | 3436 return; |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3574 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; | 3592 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; |
3575 | 3593 |
3576 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. | 3594 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. |
3577 // Capture the error message in a crash key value. | 3595 // Capture the error message in a crash key value. |
3578 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); | 3596 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); |
3579 bad_message::ReceivedBadMessage(render_process_id, | 3597 bad_message::ReceivedBadMessage(render_process_id, |
3580 bad_message::RPH_MOJO_PROCESS_ERROR); | 3598 bad_message::RPH_MOJO_PROCESS_ERROR); |
3581 } | 3599 } |
3582 | 3600 |
3583 } // namespace content | 3601 } // namespace content |
OLD | NEW |