Configure background throttling on RenderViewCreated callback
authorKevin Sawicki <kevinsawicki@gmail.com>
Wed, 28 Dec 2016 23:44:44 +0000 (15:44 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Wed, 28 Dec 2016 23:52:47 +0000 (15:52 -0800)
atom/browser/api/atom_api_web_contents.cc
atom/browser/api/atom_api_web_contents.h

index a45e166..a3753a6 100644 (file)
@@ -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<content::RenderWidgetHostImpl*>(
-      view->GetRenderWidgetHost());
-  host->disable_hidden_ = !background_throttling_;
 }
 
 void WebContents::DownloadURL(const GURL& url) {
index 68669e7..22f6b87 100644 (file)
@@ -278,6 +278,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
 
   // 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(