Index: chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
diff --git a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
index d2e9bce2e78fc0084e56644320aaa52359b8417a..d1c3c1f3fc21fec5636cc8e811094fd873f12cfe 100644 |
--- a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
+++ b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
@@ -13,7 +13,9 @@ |
#include "chrome/browser/background/background_contents_service_factory.h" |
#include "chrome/browser/chrome_content_browser_client.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_webkit_preferences.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/prefs/scoped_user_pref_update.h" |
#include "chrome/browser/prerender/prerender_manager.h" |
@@ -23,6 +25,7 @@ |
#include "chrome/browser/user_style_sheet_watcher.h" |
#include "chrome/common/chrome_switches.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_process_host.h" |
#include "content/browser/renderer_host/render_view_host.h" |
@@ -326,8 +329,9 @@ RenderWidgetHostView* |
// static |
WebPreferences RenderViewHostDelegateHelper::GetWebkitPrefs( |
- content::BrowserContext* browser_context, bool is_web_ui) { |
- Profile* profile = Profile::FromBrowserContext(browser_context); |
+ RenderViewHost* rvh) { |
+ Profile* profile = Profile::FromBrowserContext( |
+ rvh->process()->browser_context()); |
PrefService* prefs = profile->GetPrefs(); |
WebPreferences web_prefs; |
@@ -525,13 +529,23 @@ WebPreferences RenderViewHostDelegateHelper::GetWebkitPrefs( |
} |
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.javascript_enabled = true; |
} |
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; |
} |