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

Unified Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 16267002: Re-fix http://crbug.com/87176, and add a test. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Second round of creis comments Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698