From f25c1f864b9777f279c8b9eb5843aeaaed18d969 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 13 Jun 2016 17:01:13 -0700 Subject: [PATCH] Use RenderProcessPreferences for non-remote web contents --- .../atom_api_render_process_preferences.cc | 19 +++++++++---------- .../api/atom_api_render_process_preferences.h | 2 +- atom/browser/api/atom_api_web_contents.cc | 4 ++++ atom/browser/api/atom_api_web_contents.h | 1 + lib/browser/chrome-extension.js | 2 +- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/atom/browser/api/atom_api_render_process_preferences.cc b/atom/browser/api/atom_api_render_process_preferences.cc index 59ae07b45c75..da4cf8f67673 100644 --- a/atom/browser/api/atom_api_render_process_preferences.cc +++ b/atom/browser/api/atom_api_render_process_preferences.cc @@ -4,6 +4,7 @@ #include "atom/browser/api/atom_api_render_process_preferences.h" +#include "atom/browser/api/atom_api_web_contents.h" #include "atom/browser/atom_browser_client.h" #include "atom/browser/native_window.h" #include "atom/browser/window_list.h" @@ -19,18 +20,15 @@ namespace api { namespace { -bool IsBrowserWindow(content::RenderProcessHost* process) { +bool IsWebContents(v8::Isolate* isolate, content::RenderProcessHost* process) { content::WebContents* web_contents = static_cast(AtomBrowserClient::Get())-> GetWebContentsFromProcessID(process->GetID()); if (!web_contents) return false; - NativeWindow* window = NativeWindow::FromWebContents(web_contents); - if (!window) - return false; - - return true; + auto api_web_contents = WebContents::CreateFrom(isolate, web_contents); + return !api_web_contents->IsRemote(); } } // namespace @@ -63,10 +61,11 @@ void RenderProcessPreferences::BuildPrototype( // static mate::Handle -RenderProcessPreferences::ForAllBrowserWindow(v8::Isolate* isolate) { +RenderProcessPreferences::ForAllWebContents(v8::Isolate* isolate) { return mate::CreateHandle( isolate, - new RenderProcessPreferences(isolate, base::Bind(&IsBrowserWindow))); + new RenderProcessPreferences(isolate, + base::Bind(&IsWebContents, isolate))); } } // namespace api @@ -78,8 +77,8 @@ namespace { void Initialize(v8::Local exports, v8::Local unused, v8::Local context, void* priv) { mate::Dictionary dict(context->GetIsolate(), exports); - dict.SetMethod("forAllBrowserWindow", - &atom::api::RenderProcessPreferences::ForAllBrowserWindow); + dict.SetMethod("forAllWebContents", + &atom::api::RenderProcessPreferences::ForAllWebContents); } } // namespace diff --git a/atom/browser/api/atom_api_render_process_preferences.h b/atom/browser/api/atom_api_render_process_preferences.h index a305f1361b2d..3fa197ed04c0 100644 --- a/atom/browser/api/atom_api_render_process_preferences.h +++ b/atom/browser/api/atom_api_render_process_preferences.h @@ -17,7 +17,7 @@ class RenderProcessPreferences : public mate::Wrappable { public: static mate::Handle - ForAllBrowserWindow(v8::Isolate* isolate); + ForAllWebContents(v8::Isolate* isolate); static void BuildPrototype(v8::Isolate* isolate, v8::Local prototype); diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index 6cb9efb9614f..21c4359d4488 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -1197,6 +1197,10 @@ bool WebContents::IsGuest() const { return type_ == WEB_VIEW; } +bool WebContents::IsRemote() const { + return type_ == REMOTE; +} + v8::Local WebContents::GetWebPreferences(v8::Isolate* isolate) { WebContentsPreferences* web_preferences = WebContentsPreferences::FromWebContents(web_contents()); diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 13c6ce5a7b2c..075eb3a032d1 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -139,6 +139,7 @@ class WebContents : public mate::TrackableObject, // Methods for creating . void SetSize(const SetSizeParams& params); bool IsGuest() const; + bool IsRemote() const; // Callback triggered on permission response. void OnEnterFullscreenModeForTab(content::WebContents* source, diff --git a/lib/browser/chrome-extension.js b/lib/browser/chrome-extension.js index 8ba5f29f0dc4..bff436409b4a 100644 --- a/lib/browser/chrome-extension.js +++ b/lib/browser/chrome-extension.js @@ -1,6 +1,6 @@ const {app, ipcMain, session, webContents, BrowserWindow} = require('electron') const {getAllWebContents} = process.atomBinding('web_contents') -const renderProcessPreferences = process.atomBinding('render_process_preferences').forAllBrowserWindow() +const renderProcessPreferences = process.atomBinding('render_process_preferences').forAllWebContents() const fs = require('fs') const path = require('path')