From 41afeb744a63814acd993b8da5df4130f3ce388b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 28 Dec 2016 15:44:44 -0800 Subject: [PATCH] Configure background throttling on RenderViewCreated callback --- atom/browser/api/atom_api_web_contents.cc | 13 ++++++++----- atom/browser/api/atom_api_web_contents.h | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index a45e166c92d3..a3753a6d8f05 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -613,6 +613,14 @@ void WebContents::BeforeUnloadFired(const base::TimeTicks& proceed_time) { // there are two virtual functions named BeforeUnloadFired. } +void WebContents::RenderViewCreated(content::RenderViewHost* render_view_host) { + const auto impl = content::RenderWidgetHostImpl::FromID( + render_view_host->GetProcess()->GetID(), + render_view_host->GetRoutingID()); + if (impl) + impl->disable_hidden_ = !background_throttling_; +} + void WebContents::RenderViewDeleted(content::RenderViewHost* render_view_host) { Emit("render-view-deleted", render_view_host->GetProcess()->GetID()); } @@ -897,11 +905,6 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) { } else { view->SetBackgroundColor(SK_ColorTRANSPARENT); } - - // For the same reason we can only disable hidden here. - const auto host = static_cast( - view->GetRenderWidgetHost()); - host->disable_hidden_ = !background_throttling_; } void WebContents::DownloadURL(const GURL& url) { diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 68669e7f4b10..22f6b8775f99 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -278,6 +278,7 @@ class WebContents : public mate::TrackableObject, // content::WebContentsObserver: void BeforeUnloadFired(const base::TimeTicks& proceed_time) override; + void RenderViewCreated(content::RenderViewHost*) override; void RenderViewDeleted(content::RenderViewHost*) override; void RenderProcessGone(base::TerminationStatus status) override; void DocumentLoadedInFrame(