| Index: content/browser/renderer_host/render_process_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
|
| index 21c20c9fa3cb30f9d94e39ee60cda8f577ca6f4b..fae674d564cf5ac8b0a63425999bc4faafa9f45d 100644
|
| --- a/content/browser/renderer_host/render_process_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_process_host_impl.cc
|
| @@ -387,6 +387,7 @@ RenderProcessHostImpl::RenderProcessHostImpl(
|
| FROM_HERE, base::TimeDelta::FromSeconds(5),
|
| this, &RenderProcessHostImpl::ClearTransportDIBCache),
|
| is_initialized_(false),
|
| + child_process_launcher_factory_(base::Bind(&NewChildProcessLauncher)),
|
| id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()),
|
| browser_context_(browser_context),
|
| storage_partition_impl_(storage_partition_impl),
|
| @@ -539,7 +540,7 @@ bool RenderProcessHostImpl::Init() {
|
| // Spawn the child process asynchronously to avoid blocking the UI thread.
|
| // As long as there's no renderer prefix, we can use the zygote process
|
| // at this stage.
|
| - child_process_launcher_.reset(new ChildProcessLauncher(
|
| + child_process_launcher_ = child_process_launcher_factory_.Run(
|
| #if defined(OS_WIN)
|
| new RendererSandboxedProcessLauncherDelegate,
|
| #elif defined(OS_POSIX)
|
| @@ -549,7 +550,7 @@ bool RenderProcessHostImpl::Init() {
|
| #endif
|
| cmd_line,
|
| GetID(),
|
| - this));
|
| + this);
|
|
|
| fast_shutdown_started_ = false;
|
| }
|
| @@ -603,11 +604,13 @@ void RenderProcessHostImpl::CreateMessageFilters() {
|
| media::AudioManager* audio_manager = BrowserMainLoop::GetAudioManager();
|
| MediaStreamManager* media_stream_manager =
|
| BrowserMainLoop::GetMediaStreamManager();
|
| - channel_->AddFilter(new AudioInputRendererHost(audio_manager,
|
| - media_stream_manager));
|
| - channel_->AddFilter(new AudioRendererHost(
|
| - GetID(), audio_manager, BrowserMainLoop::GetAudioMirroringManager(),
|
| - media_internals, media_stream_manager));
|
| + if (audio_manager && media_stream_manager) {
|
| + channel_->AddFilter(new AudioInputRendererHost(audio_manager,
|
| + media_stream_manager));
|
| + channel_->AddFilter(new AudioRendererHost(
|
| + GetID(), audio_manager, BrowserMainLoop::GetAudioMirroringManager(),
|
| + media_internals, media_stream_manager));
|
| + }
|
| channel_->AddFilter(new VideoCaptureHost());
|
| channel_->AddFilter(new AppCacheDispatcherHost(
|
| storage_partition_impl_->GetAppCacheService(),
|
| @@ -1683,11 +1686,11 @@ void RenderProcessHostImpl::EndFrameSubscription(int route_id) {
|
| }
|
|
|
| void RenderProcessHostImpl::OnShutdownRequest() {
|
| - // Don't shut down if there are more active RenderViews than the one asking
|
| - // to close, or if there are pending RenderViews being swapped back in.
|
| + // Don't shut down if there are active RenderViews, or if there are pending
|
| + // RenderViews being swapped back in.
|
| // In single process mode, we never shutdown the renderer.
|
| int num_active_views = GetActiveViewCount();
|
| - if (pending_views_ || num_active_views > 1 || run_renderer_in_process())
|
| + if (pending_views_ || num_active_views > 0 || run_renderer_in_process())
|
| return;
|
|
|
| // Notify any contents that might have swapped out renderers from this
|
|
|