Index: content/renderer/pepper/plugin_power_saver_helper.cc |
diff --git a/content/renderer/pepper/plugin_power_saver_helper.cc b/content/renderer/pepper/plugin_power_saver_helper.cc |
index e21305a2814d40312e21b9fa8407db002ec593c9..fc45a6985094150dbf5c756eef4cc53366789728 100644 |
--- a/content/renderer/pepper/plugin_power_saver_helper.cc |
+++ b/content/renderer/pepper/plugin_power_saver_helper.cc |
@@ -15,10 +15,7 @@ |
#include "content/public/renderer/plugin_instance_throttler.h" |
#include "content/public/renderer/render_frame.h" |
#include "ppapi/shared_impl/ppapi_constants.h" |
-#include "third_party/WebKit/public/web/WebDocument.h" |
#include "third_party/WebKit/public/web/WebLocalFrame.h" |
-#include "third_party/WebKit/public/web/WebPluginParams.h" |
-#include "third_party/WebKit/public/web/WebView.h" |
namespace content { |
@@ -32,6 +29,7 @@ enum PeripheralHeuristicDecision { |
HEURISTIC_DECISION_ESSENTIAL_CROSS_ORIGIN_BIG = 2, |
HEURISTIC_DECISION_ESSENTIAL_CROSS_ORIGIN_WHITELISTED = 3, |
HEURISTIC_DECISION_ESSENTIAL_CROSS_ORIGIN_TINY = 4, |
+ HEURISTIC_DECISION_ESSENTIAL_UNKNOWN_SIZE = 5, |
HEURISTIC_DECISION_NUM_ITEMS |
}; |
@@ -51,10 +49,10 @@ void RecordDecisionMetric(PeripheralHeuristicDecision decision) { |
} // namespace |
PluginPowerSaverHelper::PeripheralPlugin::PeripheralPlugin( |
- const GURL& content_origin, |
+ const url::Origin& content_origin, |
const base::Closure& unthrottle_callback) |
- : content_origin(content_origin), unthrottle_callback(unthrottle_callback) { |
-} |
+ : content_origin(content_origin), |
+ unthrottle_callback(unthrottle_callback) {} |
PluginPowerSaverHelper::PeripheralPlugin::~PeripheralPlugin() { |
} |
@@ -98,7 +96,7 @@ bool PluginPowerSaverHelper::OnMessageReceived(const IPC::Message& message) { |
} |
void PluginPowerSaverHelper::OnUpdatePluginContentOriginWhitelist( |
- const std::set<GURL>& origin_whitelist) { |
+ const std::set<url::Origin>& origin_whitelist) { |
origin_whitelist_ = origin_whitelist; |
// Check throttled plugin instances to see if any can be unthrottled. |
@@ -114,20 +112,19 @@ void PluginPowerSaverHelper::OnUpdatePluginContentOriginWhitelist( |
} |
void PluginPowerSaverHelper::RegisterPeripheralPlugin( |
- const GURL& content_origin, |
+ const url::Origin& content_origin, |
const base::Closure& unthrottle_callback) { |
- DCHECK_EQ(content_origin.GetOrigin(), content_origin); |
peripheral_plugins_.push_back( |
PeripheralPlugin(content_origin, unthrottle_callback)); |
} |
bool PluginPowerSaverHelper::ShouldThrottleContent( |
- const GURL& content_origin, |
+ const url::Origin& main_frame_origin, |
+ const url::Origin& content_origin, |
const std::string& plugin_module_name, |
int width, |
int height, |
bool* cross_origin_main_content) const { |
- DCHECK_EQ(content_origin.GetOrigin(), content_origin); |
if (cross_origin_main_content) |
*cross_origin_main_content = false; |
@@ -142,23 +139,13 @@ bool PluginPowerSaverHelper::ShouldThrottleContent( |
return false; |
} |
- if (width <= 0 || height <= 0) |
+ if (main_frame_origin.IsSameOriginWith(content_origin)) { |
+ RecordDecisionMetric(HEURISTIC_DECISION_ESSENTIAL_SAME_ORIGIN); |
return false; |
- |
- // TODO(alexmos): Update this to use the origin of the RemoteFrame when 426512 |
- // is fixed. For now, case 3 in the class level comment doesn't work in |
- // --site-per-process mode. |
- blink::WebFrame* main_frame = |
- render_frame()->GetWebFrame()->view()->mainFrame(); |
- if (main_frame->isWebRemoteFrame()) { |
- RecordDecisionMetric(HEURISTIC_DECISION_PERIPHERAL); |
- return true; |
} |
- // All same-origin plugin content is essential. |
- GURL main_frame_origin = GURL(main_frame->document().url()).GetOrigin(); |
- if (content_origin == main_frame_origin) { |
- RecordDecisionMetric(HEURISTIC_DECISION_ESSENTIAL_SAME_ORIGIN); |
+ if (width <= 0 || height <= 0) { |
+ RecordDecisionMetric(HEURISTIC_DECISION_ESSENTIAL_UNKNOWN_SIZE); |
return false; |
} |
@@ -188,8 +175,7 @@ bool PluginPowerSaverHelper::ShouldThrottleContent( |
} |
void PluginPowerSaverHelper::WhitelistContentOrigin( |
- const GURL& content_origin) { |
- DCHECK_EQ(content_origin.GetOrigin(), content_origin); |
+ const url::Origin& content_origin) { |
if (origin_whitelist_.insert(content_origin).second) { |
Send(new FrameHostMsg_PluginContentOriginAllowed( |
render_frame()->GetRoutingID(), content_origin)); |