Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1159)

Unified Diff: content/renderer/pepper/plugin_instance_throttler_impl.h

Issue 849723002: Plugin Power Saver: Make PepperPluginInstanceThrottler interface public. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/pepper/plugin_instance_throttler_impl.h
diff --git a/content/renderer/pepper/pepper_plugin_instance_throttler.h b/content/renderer/pepper/plugin_instance_throttler_impl.h
similarity index 34%
rename from content/renderer/pepper/pepper_plugin_instance_throttler.h
rename to content/renderer/pepper/plugin_instance_throttler_impl.h
index af5794e60e1da4ffae54faefd674e7ef887d03a4..e438b866ab3b73ca00247a0ed25c96655e47c00e 100644
--- a/content/renderer/pepper/pepper_plugin_instance_throttler.h
+++ b/content/renderer/pepper/plugin_instance_throttler_impl.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_RENDERER_PEPPER_PLUGIN_INSTANCE_THROTTLER_IMPL_H_
+#define CONTENT_RENDERER_PEPPER_PLUGIN_INSTANCE_THROTTLER_IMPL_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 "content/public/renderer/plugin_instance_throttler.h"
#include "ppapi/shared_impl/ppb_view_shared.h"
#include "third_party/WebKit/public/platform/WebRect.h"
@@ -17,110 +17,66 @@ namespace blink {
class WebInputEvent;
}
-class GURL;
class SkBitmap;
namespace content {
-// 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
-// be a Flash plugin, it must meet certain size criteria, etc.). The process
-// for throttling a plugin is as follows:
-// 1) Attempt to find a representative keyframe to display as a placeholder for
-// the plugin.
-// 2) a) If a representative keyframe is found, throttle the plugin at that
-// keyframe.
-// b) If a representative keyframe is not found, throttle the plugin after a
-// certain period of time.
-//
-// The plugin will then be unthrottled by receiving a mouse click from the user.
-//
-// To choose a representative keyframe, we first wait for a certain number of
-// "interesting" frames to be displayed by the plugin. A frame is called
-// 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 PluginInstanceThrottlerImpl
+ : public PluginInstanceThrottler {
public:
- // How the throttled power saver is unthrottled, if ever.
- // These numeric values are used in UMA logs; do not change them.
- enum PowerSaverUnthrottleMethod {
- UNTHROTTLE_METHOD_NEVER = 0,
- UNTHROTTLE_METHOD_BY_CLICK = 1,
- UNTHROTTLE_METHOD_BY_WHITELIST = 2,
- UNTHROTTLE_METHOD_BY_AUDIO = 3,
- 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);
-
- virtual ~PepperPluginInstanceThrottler();
+ PluginInstanceThrottlerImpl(RenderFrame* frame,
+ const GURL& plugin_url,
+ PluginPowerSaverMode power_saver_mode);
+
+ ~PluginInstanceThrottlerImpl() override;
+
+ // PluginInstanceThrottler implementation:
+ void AddObserver(Observer* observer) override;
+ void RemoveObserver(Observer* observer) override;
+ bool IsThrottled() const override;
+ void DisablePowerSaver(PowerSaverUnthrottleMethod method) override;
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.
void OnImageFlush(const SkBitmap* bitmap);
- bool is_throttled() const { return plugin_throttled_; }
-
// Returns true if |event| was handled and shouldn't be further processed.
bool ConsumeInputEvent(const blink::WebInputEvent& event);
- // Disables Power Saver and unthrottles the plugin if already throttled.
- void DisablePowerSaver(PowerSaverUnthrottleMethod method);
-
private:
- friend class PepperPluginInstanceThrottlerTest;
+ friend class PluginInstanceThrottlerImplTest;
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_|.
Lei Zhang 2015/01/15 01:18:38 You still reference |is_peripheral_content_| here.
tommycli 2015/01/15 23:19:32 Done.
bool power_saver_enabled_;
- // Indicates whether this plugin was found to be peripheral content.
+ // Indicates whether this plugin has been unthrottled.
// This is separately tracked from |power_saver_enabled_| to collect UMAs.
- // Always true if |power_saver_enabled_| is true.
- bool is_peripheral_content_;
+ bool has_been_unthrottled_;
Lei Zhang 2015/01/15 01:18:38 Now this variable name and |plugin_throttled_| bel
tommycli 2015/01/15 23:19:32 Done.
// Indicates if the plugin is currently throttled.
bool plugin_throttled_;
- base::WeakPtrFactory<PepperPluginInstanceThrottler> weak_factory_;
+ ObserverList<Observer> observer_list_;
+
+ base::WeakPtrFactory<PluginInstanceThrottlerImpl> weak_factory_;
- DISALLOW_COPY_AND_ASSIGN(PepperPluginInstanceThrottler);
+ DISALLOW_COPY_AND_ASSIGN(PluginInstanceThrottlerImpl);
};
}
-#endif // CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_THROTTLER_H_
+#endif // CONTENT_RENDERER_PEPPER_PLUGIN_INSTANCE_THROTTLER_IMPL_H_
« no previous file with comments | « content/renderer/pepper/pepper_webplugin_impl.cc ('k') | content/renderer/pepper/plugin_instance_throttler_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698