diff options
author | vangelis@chromium.org <vangelis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-24 04:37:41 +0000 |
---|---|---|
committer | vangelis@chromium.org <vangelis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-24 04:37:41 +0000 |
commit | 9115d5f9caf0b7269610bfb1f9c76ec4ae5c3bd3 (patch) | |
tree | 0d777a9eaa91cda803b7faaab9270825cff4b4d0 | |
parent | 9d9a691086865e10ce776d8a3fc5c341dd628a44 (diff) | |
download | chromium_src-9115d5f9caf0b7269610bfb1f9c76ec4ae5c3bd3.zip chromium_src-9115d5f9caf0b7269610bfb1f9c76ec4ae5c3bd3.tar.gz chromium_src-9115d5f9caf0b7269610bfb1f9c76ec4ae5c3bd3.tar.bz2 |
Re-enables accelerated compositing for background extensions. Background extensions only attempt to create a GL context if needed (e.g. they create a visible view) so this change has no effect on extensions without visible presence.
Tested by:
1. Adding a few extensions without visible presence to my profile
2. Tracing startup to make sure that no GL contexts are created
3. Verified that the GPU process size does not change when enabling / disabling the extensions
BUG=222567
Review URL: https://chromiumcodereview.appspot.com/12973006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190192 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_webkit_preferences.cc | 6 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 16 |
2 files changed, 18 insertions, 4 deletions
diff --git a/chrome/browser/extensions/extension_webkit_preferences.cc b/chrome/browser/extensions/extension_webkit_preferences.cc index 3413442..b9190f5 100644 --- a/chrome/browser/extensions/extension_webkit_preferences.cc +++ b/chrome/browser/extensions/extension_webkit_preferences.cc @@ -28,11 +28,11 @@ void SetPreferences(const extensions::Extension* extension, // be subject to that. webkit_prefs->allow_scripts_to_close_windows = true; - // Disable all gpu features for extension background pages, to reduce - // memory impact of extensions. See crbug.com/123935. This also "works - // around" crbug.com/123935 + // Disable gpu acceleration for extension background pages to avoid + // unecessarily creating a compositor context for them. if (render_view_type == chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { webkit_prefs->accelerated_compositing_enabled = false; + webkit_prefs->force_compositing_mode = false; } } diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index db3b307..2154257 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -1935,10 +1935,24 @@ WebView* RenderViewImpl::createView( WebUserGestureIndicator::consumeUserGesture(); + webkit_glue::WebPreferences transferred_preferences = webkit_preferences_; + + // Unless accelerated compositing has been explicitly disabled from the + // command line (e.g. via the blacklist or about:flags) re-enable it for + // new views that get spawned by this view. This gets around the issue that + // background extension pages disable accelerated compositing via web prefs + // but can themselves spawn a visible render view which should be allowed + // use gpu acceleration. + if (!webkit_preferences_.accelerated_compositing_enabled) { + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + if (!command_line.HasSwitch(switches::kDisableAcceleratedCompositing)) + transferred_preferences.accelerated_compositing_enabled = true; + } + RenderViewImpl* view = RenderViewImpl::Create( routing_id_, renderer_preferences_, - webkit_preferences_, + transferred_preferences, shared_popup_counter_, routing_id, surface_id, |