Don't show hung-renderer-dialog for background tabs.
Bug: 881812
Change-Id: I7e9eddb4386baac05e9292463f9f597132c5c14e
Reviewed-on: https://chromium-review.googlesource.com/1222684
Commit-Queue: Ćukasz Anforowicz <[email protected]>
Reviewed-by: Gabriel Charette <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Cr-Commit-Position: refs/heads/master@{#593270}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index acf0ba9..09f197b 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -5966,15 +5966,22 @@
void WebContentsImpl::RendererUnresponsive(
RenderWidgetHostImpl* render_widget_host,
base::RepeatingClosure hang_monitor_restarter) {
- for (auto& observer : observers_)
- observer.OnRendererUnresponsive(render_widget_host->GetProcess());
-
if (ShouldIgnoreUnresponsiveRenderer())
return;
+ // Do not report hangs (to task manager, to hang renderer dialog, etc.) for
+ // invisible tabs (like extension background page, background tabs). See
+ // https://crbug.com/881812 for rationale and for choosing the visibility
+ // (rather than process priority) as the signal here.
+ if (GetVisibility() != Visibility::VISIBLE)
+ return;
+
if (!render_widget_host->renderer_initialized())
return;
+ for (auto& observer : observers_)
+ observer.OnRendererUnresponsive(render_widget_host->GetProcess());
+
if (delegate_)
delegate_->RendererUnresponsive(this, render_widget_host,
std::move(hang_monitor_restarter));