Index: content/public/renderer/plugin_instance_throttler.h |
diff --git a/content/renderer/pepper/pepper_plugin_instance_throttler.h b/content/public/renderer/plugin_instance_throttler.h |
similarity index 71% |
rename from content/renderer/pepper/pepper_plugin_instance_throttler.h |
rename to content/public/renderer/plugin_instance_throttler.h |
index af5794e60e1da4ffae54faefd674e7ef887d03a4..6cbb02dff1a59741ce425abee9e581b97df077e4 100644 |
--- a/content/renderer/pepper/pepper_plugin_instance_throttler.h |
+++ b/content/public/renderer/plugin_instance_throttler.h |
@@ -2,14 +2,14 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_THROTTLER_H_ |
-#define CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_THROTTLER_H_ |
+#ifndef CONTENT_PUBLIC_RENDERER_PLUGIN_INSTANCE_THROTTLER_H_ |
+#define CONTENT_PUBLIC_RENDERER_PLUGIN_INSTANCE_THROTTLER_H_ |
#include "base/callback.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/observer_list.h" |
#include "content/common/content_export.h" |
-#include "content/public/renderer/render_frame.h" |
#include "ppapi/shared_impl/ppb_view_shared.h" |
#include "third_party/WebKit/public/platform/WebRect.h" |
@@ -22,6 +22,8 @@ class SkBitmap; |
namespace content { |
+class RenderFrame; |
+ |
// Manages the Plugin Power Saver feature for a single Pepper plugin instance. |
// |
// A plugin must meet certain criteria in order to be throttled (e.g. it must |
@@ -41,8 +43,17 @@ namespace content { |
// interesting if it meets some heuristic. After we have seen a certain number |
// of interesting frames, we throttle the plugin and use that frame as the |
// representative keyframe. |
-class CONTENT_EXPORT PepperPluginInstanceThrottler { |
+class CONTENT_EXPORT PluginInstanceThrottler { |
public: |
+ enum PluginPowerSaverMode { |
+ // Plugin content is main content, and therefore never throttled. |
+ POWER_SAVER_MODE_ESSENTIAL = 0, |
+ // Plugin content is peripheral, but throttling is disabled. |
+ POWER_SAVER_MODE_PERIPHERAL_UNTHROTTLED = 1, |
+ // Plugin content is peripheral, and throttling is enabled. |
+ POWER_SAVER_MODE_PERIPHERAL_THROTTLED = 2 |
+ }; |
+ |
// How the throttled power saver is unthrottled, if ever. |
// These numeric values are used in UMA logs; do not change them. |
enum PowerSaverUnthrottleMethod { |
@@ -53,23 +64,25 @@ class CONTENT_EXPORT PepperPluginInstanceThrottler { |
UNTHROTTLE_METHOD_NUM_ITEMS |
}; |
- PepperPluginInstanceThrottler( |
- RenderFrame* frame, |
- const blink::WebRect& bounds, |
- bool is_flash_plugin, |
- const GURL& plugin_url, |
- RenderFrame::PluginPowerSaverMode power_saver_mode, |
- const base::Closure& throttle_change_callback); |
+ class Observer { |
+ public: |
+ virtual void OnThrottleStateChange() = 0; |
+ }; |
+ |
+ PluginInstanceThrottler(RenderFrame* frame, |
+ const GURL& plugin_url, |
+ PluginPowerSaverMode power_saver_mode); |
+ |
+ virtual ~PluginInstanceThrottler(); |
- virtual ~PepperPluginInstanceThrottler(); |
+ void AddObserver(Observer* observer); |
+ void RemoveObserver(Observer* observer); |
bool needs_representative_keyframe() const { |
return needs_representative_keyframe_; |
} |
- bool power_saver_enabled() const { |
- return power_saver_enabled_; |
- } |
+ bool power_saver_enabled() const { return power_saver_enabled_; } |
// Called when the plugin flushes it's graphics context. Supplies the |
// throttler with a candidate to use as the representative keyframe. |
@@ -84,27 +97,16 @@ class CONTENT_EXPORT PepperPluginInstanceThrottler { |
void DisablePowerSaver(PowerSaverUnthrottleMethod method); |
private: |
- friend class PepperPluginInstanceThrottlerTest; |
+ friend class PluginInstanceThrottlerTest; |
void SetPluginThrottled(bool throttled); |
- // Plugin's bounds in view space. |
- blink::WebRect bounds_; |
- |
- // Called when the throttle state changes. |
- base::Closure throttle_change_callback_; |
- |
- bool is_flash_plugin_; |
- |
// True if throttler is still waiting to find a representative keyframe. |
bool needs_representative_keyframe_; |
// Number of consecutive interesting frames we've encountered. |
int consecutive_interesting_frames_; |
- // Set to true first time plugin is clicked. Used to collect metrics. |
- bool has_been_clicked_; |
- |
// Indicates whether this plugin may be throttled to reduce power consumption. |
// |power_saver_enabled_| implies |is_peripheral_content_|. |
bool power_saver_enabled_; |
@@ -117,10 +119,12 @@ class CONTENT_EXPORT PepperPluginInstanceThrottler { |
// Indicates if the plugin is currently throttled. |
bool plugin_throttled_; |
- base::WeakPtrFactory<PepperPluginInstanceThrottler> weak_factory_; |
+ ObserverList<Observer> observer_list_; |
+ |
+ base::WeakPtrFactory<PluginInstanceThrottler> weak_factory_; |
- DISALLOW_COPY_AND_ASSIGN(PepperPluginInstanceThrottler); |
+ DISALLOW_COPY_AND_ASSIGN(PluginInstanceThrottler); |
}; |
} |
-#endif // CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_THROTTLER_H_ |
+#endif // CONTENT_PUBLIC_RENDERER_PLUGIN_INSTANCE_THROTTLER_H_ |