summaryrefslogtreecommitdiffstats
path: root/content/public/renderer
diff options
context:
space:
mode:
authortommycli <tommycli@chromium.org>2015-12-11 12:06:33 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-11 20:08:02 +0000
commitfa5a32e29048ba0be1cbed8221fb74b7731dc55e (patch)
treeca7340019563ec4f6dba82527b47200bfc44c42f /content/public/renderer
parentdb00ec3da354cd2c128dae97a70356155aec92a9 (diff)
downloadchromium_src-fa5a32e29048ba0be1cbed8221fb74b7731dc55e.zip
chromium_src-fa5a32e29048ba0be1cbed8221fb74b7731dc55e.tar.gz
chromium_src-fa5a32e29048ba0be1cbed8221fb74b7731dc55e.tar.bz2
Plugin Power Saver: Improve Poster behavior for essential plugins.
This patch does two things: 1) Early exit plugin placeholder if the poster-specified plugin is same-origin or whitelisted-origin. The placeholder is never created. 2) Fix bug that made the poster geometry recheck flaky. This fixes one bug, but there may be more. The geometry recheck logic is super janky. BUG=560590 Review URL: https://codereview.chromium.org/1497623002 Cr-Commit-Position: refs/heads/master@{#364781}
Diffstat (limited to 'content/public/renderer')
-rw-r--r--content/public/renderer/render_frame.h35
1 files changed, 25 insertions, 10 deletions
diff --git a/content/public/renderer/render_frame.h b/content/public/renderer/render_frame.h
index 2011c4e..dc055ef 100644
--- a/content/public/renderer/render_frame.h
+++ b/content/public/renderer/render_frame.h
@@ -29,6 +29,7 @@ struct WebPluginParams;
namespace gfx {
class Range;
+class Size;
}
namespace url {
@@ -56,6 +57,24 @@ struct WebPreferences;
class CONTENT_EXPORT RenderFrame : public IPC::Listener,
public IPC::Sender {
public:
+ // These numeric values are used in UMA logs; do not change them.
+ enum PeripheralContentStatus {
+ // Content is peripheral because it doesn't meet any of the below criteria.
+ CONTENT_STATUS_PERIPHERAL = 0,
+ // Content is essential because it's same-origin with the top-level frame.
+ CONTENT_STATUS_ESSENTIAL_SAME_ORIGIN = 1,
+ // Content is essential even though it's cross-origin, because it's large.
+ CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_BIG = 2,
+ // Content is essential because there's large content from the same origin.
+ CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_WHITELISTED = 3,
+ // Content is essential because it's tiny in size.
+ CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_TINY = 4,
+ // Content is essential because it has an unknown size.
+ CONTENT_STATUS_ESSENTIAL_UNKNOWN_SIZE = 5,
+ // Must be last.
+ CONTENT_STATUS_NUM_ITEMS
+ };
+
// Returns the RenderFrame given a WebFrame.
static RenderFrame* FromWebFrame(blink::WebFrame* web_frame);
@@ -131,7 +150,7 @@ class CONTENT_EXPORT RenderFrame : public IPC::Listener,
const url::Origin& content_origin,
const base::Closure& unthrottle_callback) = 0;
- // Returns true if this plugin should have power saver enabled.
+ // Returns the peripheral content heuristic decision.
//
// Power Saver is enabled for plugin content that are cross-origin and
// heuristically determined to be not essential to the web page content.
@@ -146,15 +165,11 @@ class CONTENT_EXPORT RenderFrame : public IPC::Listener,
//
// |content_origin| is the origin of the plugin content.
//
- // |width| and |height| are zoom and device scale independent logical pixels.
- //
- // |cross_origin_main_content| may be NULL. It is set to true if the
- // plugin content is cross-origin but still the "main attraction" of the page.
- virtual bool ShouldThrottleContent(const url::Origin& main_frame_origin,
- const url::Origin& content_origin,
- int width,
- int height,
- bool* cross_origin_main_content) const = 0;
+ // |unobscured_size| are zoom and device scale independent logical pixels.
+ virtual PeripheralContentStatus GetPeripheralContentStatus(
+ const url::Origin& main_frame_origin,
+ const url::Origin& content_origin,
+ const gfx::Size& unobscured_size) const = 0;
// Whitelists a |content_origin| so its content will never be throttled in
// this RenderFrame. Whitelist is cleared by top level navigation.