Commit 5092c285 authored by aa@chromium.org's avatar aa@chromium.org

Set extension-related webkit preferences in a common location.

Before we were ending up with different preferences set in
different locations.

I'm not sure if this approach is right from the content-team's
point of view.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8403024

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107882 0039d316-1c4b-4281-b951-d872f2087c98
parent 791be42c
...@@ -891,10 +891,8 @@ bool ChromeContentBrowserClient::IsFastShutdownPossible() { ...@@ -891,10 +891,8 @@ bool ChromeContentBrowserClient::IsFastShutdownPossible() {
return !browser_command_line.HasSwitch(switches::kChromeFrame); return !browser_command_line.HasSwitch(switches::kChromeFrame);
} }
WebPreferences ChromeContentBrowserClient::GetWebkitPrefs( WebPreferences ChromeContentBrowserClient::GetWebkitPrefs(RenderViewHost* rvh) {
content::BrowserContext* browser_context, bool is_web_ui) { return RenderViewHostDelegateHelper::GetWebkitPrefs(rvh);
return RenderViewHostDelegateHelper::GetWebkitPrefs(browser_context,
is_web_ui);
} }
void ChromeContentBrowserClient::UpdateInspectorSetting( void ChromeContentBrowserClient::UpdateInspectorSetting(
......
...@@ -113,9 +113,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { ...@@ -113,9 +113,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE; virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE;
virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE; virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
virtual bool IsFastShutdownPossible() OVERRIDE; virtual bool IsFastShutdownPossible() OVERRIDE;
virtual WebPreferences GetWebkitPrefs( virtual WebPreferences GetWebkitPrefs(RenderViewHost* rvh) OVERRIDE;
content::BrowserContext* browser_context,
bool is_web_ui) OVERRIDE;
virtual void UpdateInspectorSetting(RenderViewHost* rvh, virtual void UpdateInspectorSetting(RenderViewHost* rvh,
const std::string& key, const std::string& key,
const std::string& value) OVERRIDE; const std::string& value) OVERRIDE;
......
...@@ -526,24 +526,8 @@ RendererPreferences ExtensionHost::GetRendererPrefs( ...@@ -526,24 +526,8 @@ RendererPreferences ExtensionHost::GetRendererPrefs(
} }
WebPreferences ExtensionHost::GetWebkitPrefs() { WebPreferences ExtensionHost::GetWebkitPrefs() {
Profile* profile = Profile::FromBrowserContext(
render_view_host()->process()->browser_context());
WebPreferences webkit_prefs = WebPreferences webkit_prefs =
RenderViewHostDelegateHelper::GetWebkitPrefs(profile, RenderViewHostDelegateHelper::GetWebkitPrefs(render_view_host());
false); // is_web_ui
// Extensions are trusted so we override any user preferences for disabling
// javascript or images.
webkit_prefs.loads_images_automatically = true;
webkit_prefs.javascript_enabled = true;
// Enable privileged WebGL extensions.
webkit_prefs.privileged_webgl_extensions_enabled = true;
if (extension_host_type_ == chrome::VIEW_TYPE_EXTENSION_POPUP ||
extension_host_type_ == chrome::VIEW_TYPE_EXTENSION_DIALOG ||
extension_host_type_ == chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE ||
extension_host_type_ == chrome::VIEW_TYPE_EXTENSION_INFOBAR)
webkit_prefs.allow_scripts_to_close_windows = true;
// Disable anything that requires the GPU process for background pages. // Disable anything that requires the GPU process for background pages.
// See http://crbug.com/64512 and http://crbug.com/64841. // See http://crbug.com/64512 and http://crbug.com/64841.
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "webkit/glue/webpreferences.h"
#include "chrome/common/extensions/extension.h"
namespace extension_webkit_preferences {
void SetPreferences(WebPreferences* webkit_prefs, const Extension* extension) {
if (extension && !extension->is_hosted_app()) {
// Extensions are trusted so we override any user preferences for disabling
// javascript or images.
webkit_prefs->loads_images_automatically = true;
webkit_prefs->javascript_enabled = true;
// Tabs aren't typically allowed to close windows. But extensions shouldn't
// be subject to that.
webkit_prefs->allow_scripts_to_close_windows = true;
// Enable privileged WebGL extensions.
webkit_prefs->privileged_webgl_extensions_enabled = true;
}
}
} // extension_webkit_preferences
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBKIT_PREFERENCES_H_
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBKIT_PREFERENCES_H_
class Extension;
struct WebPreferences;
namespace extension_webkit_preferences {
void SetPreferences(WebPreferences* preferences, const Extension* extension);
} // namespace extension_webkit_preferences
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBKIT_PREFERENCES_H_
...@@ -66,8 +66,7 @@ const string16& BalloonHost::GetSource() const { ...@@ -66,8 +66,7 @@ const string16& BalloonHost::GetSource() const {
WebPreferences BalloonHost::GetWebkitPrefs() { WebPreferences BalloonHost::GetWebkitPrefs() {
WebPreferences web_prefs = WebPreferences web_prefs =
RenderViewHostDelegateHelper::GetWebkitPrefs(balloon_->profile(), RenderViewHostDelegateHelper::GetWebkitPrefs(render_view_host_);
enable_web_ui_);
web_prefs.allow_scripts_to_close_windows = true; web_prefs.allow_scripts_to_close_windows = true;
return web_prefs; return web_prefs;
} }
......
...@@ -185,12 +185,9 @@ RendererPreferences BackgroundContents::GetRendererPrefs( ...@@ -185,12 +185,9 @@ RendererPreferences BackgroundContents::GetRendererPrefs(
} }
WebPreferences BackgroundContents::GetWebkitPrefs() { WebPreferences BackgroundContents::GetWebkitPrefs() {
// TODO(rafaelw): Consider enabling the webkit_prefs.dom_paste_enabled for WebPreferences prefs =
// apps. RenderViewHostDelegateHelper::GetWebkitPrefs(render_view_host_);
Profile* profile = Profile::FromBrowserContext(
render_view_host_->process()->browser_context());
WebPreferences prefs = RenderViewHostDelegateHelper::GetWebkitPrefs(profile,
false);
// Disable all kinds of acceleration for background pages. // Disable all kinds of acceleration for background pages.
// See http://crbug.com/96005 and http://crbug.com/96006 // See http://crbug.com/96005 and http://crbug.com/96006
prefs.force_compositing_mode = false; prefs.force_compositing_mode = false;
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
#include "chrome/browser/background/background_contents_service_factory.h" #include "chrome/browser/background/background_contents_service_factory.h"
#include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_content_browser_client.h"
#include "chrome/browser/character_encoding.h" #include "chrome/browser/character_encoding.h"
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_webkit_preferences.h"
#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/browser/prerender/prerender_manager.h" #include "chrome/browser/prerender/prerender_manager.h"
...@@ -23,6 +25,7 @@ ...@@ -23,6 +25,7 @@
#include "chrome/browser/user_style_sheet_watcher.h" #include "chrome/browser/user_style_sheet_watcher.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "content/browser/child_process_security_policy.h"
#include "content/browser/gpu/gpu_data_manager.h" #include "content/browser/gpu/gpu_data_manager.h"
#include "content/browser/gpu/gpu_process_host.h" #include "content/browser/gpu/gpu_process_host.h"
#include "content/browser/renderer_host/render_view_host.h" #include "content/browser/renderer_host/render_view_host.h"
...@@ -326,8 +329,9 @@ RenderWidgetHostView* ...@@ -326,8 +329,9 @@ RenderWidgetHostView*
// static // static
WebPreferences RenderViewHostDelegateHelper::GetWebkitPrefs( WebPreferences RenderViewHostDelegateHelper::GetWebkitPrefs(
content::BrowserContext* browser_context, bool is_web_ui) { RenderViewHost* rvh) {
Profile* profile = Profile::FromBrowserContext(browser_context); Profile* profile = Profile::FromBrowserContext(
rvh->process()->browser_context());
PrefService* prefs = profile->GetPrefs(); PrefService* prefs = profile->GetPrefs();
WebPreferences web_prefs; WebPreferences web_prefs;
...@@ -525,13 +529,23 @@ WebPreferences RenderViewHostDelegateHelper::GetWebkitPrefs( ...@@ -525,13 +529,23 @@ WebPreferences RenderViewHostDelegateHelper::GetWebkitPrefs(
} }
DCHECK(!web_prefs.default_encoding.empty()); DCHECK(!web_prefs.default_encoding.empty());
if (is_web_ui) { if (ChildProcessSecurityPolicy::GetInstance()->HasWebUIBindings(
rvh->process()->id())) {
web_prefs.loads_images_automatically = true; web_prefs.loads_images_automatically = true;
web_prefs.javascript_enabled = true; web_prefs.javascript_enabled = true;
} }
web_prefs.is_online = !net::NetworkChangeNotifier::IsOffline(); web_prefs.is_online = !net::NetworkChangeNotifier::IsOffline();
ExtensionProcessManager* extension_process_manager =
profile->GetExtensionProcessManager();
if (extension_process_manager) {
const Extension* extension =
extension_process_manager->GetExtensionForSiteInstance(
rvh->site_instance()->id());
extension_webkit_preferences::SetPreferences(&web_prefs, extension);
}
return web_prefs; return web_prefs;
} }
......
...@@ -125,8 +125,7 @@ class RenderViewHostDelegateViewHelper : public content::NotificationObserver { ...@@ -125,8 +125,7 @@ class RenderViewHostDelegateViewHelper : public content::NotificationObserver {
// RenderViewHostDelegate methods. // RenderViewHostDelegate methods.
class RenderViewHostDelegateHelper { class RenderViewHostDelegateHelper {
public: public:
static WebPreferences GetWebkitPrefs(content::BrowserContext* browser_context, static WebPreferences GetWebkitPrefs(RenderViewHost* rvh);
bool is_web_ui);
static void UpdateInspectorSetting(content::BrowserContext* browser_context, static void UpdateInspectorSetting(content::BrowserContext* browser_context,
const std::string& key, const std::string& key,
......
...@@ -1197,6 +1197,8 @@ ...@@ -1197,6 +1197,8 @@
'browser/extensions/extension_web_socket_proxy_private_api.h', 'browser/extensions/extension_web_socket_proxy_private_api.h',
'browser/extensions/extension_web_ui.cc', 'browser/extensions/extension_web_ui.cc',
'browser/extensions/extension_web_ui.h', 'browser/extensions/extension_web_ui.h',
'browser/extensions/extension_webkit_preferences.cc',
'browser/extensions/extension_webkit_preferences.h',
'browser/extensions/extension_webnavigation_api.cc', 'browser/extensions/extension_webnavigation_api.cc',
'browser/extensions/extension_webnavigation_api.h', 'browser/extensions/extension_webnavigation_api.h',
'browser/extensions/extension_webnavigation_api_constants.cc', 'browser/extensions/extension_webnavigation_api_constants.cc',
......
...@@ -247,9 +247,7 @@ bool MockContentBrowserClient::IsFastShutdownPossible() { ...@@ -247,9 +247,7 @@ bool MockContentBrowserClient::IsFastShutdownPossible() {
return true; return true;
} }
WebPreferences MockContentBrowserClient::GetWebkitPrefs( WebPreferences MockContentBrowserClient::GetWebkitPrefs(RenderViewHost* rvh) {
content::BrowserContext* browser_context,
bool is_web_ui) {
return WebPreferences(); return WebPreferences();
} }
......
...@@ -120,9 +120,7 @@ class MockContentBrowserClient : public ContentBrowserClient { ...@@ -120,9 +120,7 @@ class MockContentBrowserClient : public ContentBrowserClient {
virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE; virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE;
virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE; virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
virtual bool IsFastShutdownPossible() OVERRIDE; virtual bool IsFastShutdownPossible() OVERRIDE;
virtual WebPreferences GetWebkitPrefs( virtual WebPreferences GetWebkitPrefs(RenderViewHost* rvh) OVERRIDE;
content::BrowserContext* browser_context,
bool is_web_ui) OVERRIDE;
virtual void UpdateInspectorSetting(RenderViewHost* rvh, virtual void UpdateInspectorSetting(RenderViewHost* rvh,
const std::string& key, const std::string& key,
const std::string& value) OVERRIDE; const std::string& value) OVERRIDE;
......
...@@ -1800,7 +1800,7 @@ void TabContents::RunBeforeUnloadConfirm(const RenderViewHost* rvh, ...@@ -1800,7 +1800,7 @@ void TabContents::RunBeforeUnloadConfirm(const RenderViewHost* rvh,
WebPreferences TabContents::GetWebkitPrefs() { WebPreferences TabContents::GetWebkitPrefs() {
WebPreferences web_prefs = WebPreferences web_prefs =
content::GetContentClient()->browser()->GetWebkitPrefs( content::GetContentClient()->browser()->GetWebkitPrefs(
render_view_host()->process()->browser_context(), false); render_view_host());
// Force accelerated compositing and 2d canvas off for chrome:, about: and // Force accelerated compositing and 2d canvas off for chrome:, about: and
// chrome-devtools: pages (unless it's specifically allowed). // chrome-devtools: pages (unless it's specifically allowed).
...@@ -2006,4 +2006,3 @@ bool TabContents::GotResponseToLockMouseRequest(bool allowed) { ...@@ -2006,4 +2006,3 @@ bool TabContents::GotResponseToLockMouseRequest(bool allowed) {
return render_view_host() ? return render_view_host() ?
render_view_host()->GotResponseToLockMouseRequest(allowed) : false; render_view_host()->GotResponseToLockMouseRequest(allowed) : false;
} }
...@@ -297,8 +297,7 @@ class ContentBrowserClient { ...@@ -297,8 +297,7 @@ class ContentBrowserClient {
virtual bool IsFastShutdownPossible() = 0; virtual bool IsFastShutdownPossible() = 0;
// Returns the WebKit preferences that are used by the renderer. // Returns the WebKit preferences that are used by the renderer.
virtual WebPreferences GetWebkitPrefs(BrowserContext* browser_context, virtual WebPreferences GetWebkitPrefs(RenderViewHost* render_view_host) = 0;
bool is_web_ui) = 0;
// Inspector setting was changed and should be persisted. // Inspector setting was changed and should be persisted.
virtual void UpdateInspectorSetting(RenderViewHost* rvh, virtual void UpdateInspectorSetting(RenderViewHost* rvh,
......
...@@ -261,9 +261,7 @@ bool ShellContentBrowserClient::IsFastShutdownPossible() { ...@@ -261,9 +261,7 @@ bool ShellContentBrowserClient::IsFastShutdownPossible() {
return true; return true;
} }
WebPreferences ShellContentBrowserClient::GetWebkitPrefs( WebPreferences ShellContentBrowserClient::GetWebkitPrefs(RenderViewHost* rvh) {
content::BrowserContext* browser_context,
bool is_web_ui) {
return WebPreferences(); return WebPreferences();
} }
......
...@@ -133,9 +133,7 @@ class ShellContentBrowserClient : public ContentBrowserClient ...@@ -133,9 +133,7 @@ class ShellContentBrowserClient : public ContentBrowserClient
virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE; virtual speech_input::SpeechInputManager* GetSpeechInputManager() OVERRIDE;
virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE; virtual AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
virtual bool IsFastShutdownPossible() OVERRIDE; virtual bool IsFastShutdownPossible() OVERRIDE;
virtual WebPreferences GetWebkitPrefs( virtual WebPreferences GetWebkitPrefs(RenderViewHost* rvh) OVERRIDE;
content::BrowserContext* browser_context,
bool is_web_ui) OVERRIDE;
virtual void UpdateInspectorSetting(RenderViewHost* rvh, virtual void UpdateInspectorSetting(RenderViewHost* rvh,
const std::string& key, const std::string& key,
const std::string& value) OVERRIDE; const std::string& value) OVERRIDE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment