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

Unified Diff: chrome/renderer/plugins/plugin_preroller.h

Issue 866173002: Plugin Power Saver: Add UI Overlay to throttled plugin using placeholder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address bauerb and groby comments 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: chrome/renderer/plugins/plugin_preroller.h
diff --git a/chrome/renderer/plugins/plugin_preroller.h b/chrome/renderer/plugins/plugin_preroller.h
new file mode 100644
index 0000000000000000000000000000000000000000..d538d0140827f79535599e8c97f53176bc1599d6
--- /dev/null
+++ b/chrome/renderer/plugins/plugin_preroller.h
@@ -0,0 +1,62 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_PLUGINS_PLUGIN_PREROLLER_H_
+#define CHROME_RENDERER_PLUGINS_PLUGIN_PREROLLER_H_
+
+#include "base/macros.h"
+#include "content/public/common/webplugininfo.h"
+#include "content/public/renderer/plugin_instance_throttler.h"
+#include "third_party/WebKit/public/web/WebPluginParams.h"
+#include "url/gurl.h"
+
+namespace blink {
+class WebPlugin;
+class WebLocalFrame;
+}
+
+class SkBitmap;
+
+// This class manages a plugin briefly for the purposes of keyframe extraction.
+// Once a keyframe has been extracted, this class will replace it with a
+// ChromePluginPlaceholder. The actual plugin will continue to live in a
+// throttled state. This class manages its own lifetime.
+class PluginPreroller : public content::PluginInstanceThrottler::Observer {
+ public:
+ // Does not take ownership of either |plugin| or |throttler|.
+ PluginPreroller(content::RenderFrame* render_frame,
+ blink::WebLocalFrame* frame,
+ const blink::WebPluginParams& params,
+ const content::WebPluginInfo& info,
+ const std::string& identifier,
+ const base::string16& name,
+ const base::string16& message,
+ blink::WebPlugin* plugin,
+ content::PluginInstanceThrottler* throttler);
+
+ virtual ~PluginPreroller();
+
+ private:
+ // content::PluginInstanceThrottler::Observer methods:
+ void OnKeyframeExtracted(const SkBitmap* bitmap) override;
+ void OnThrottleStateChange() override;
+ void OnThrottlerDestroyed() override;
+
+ content::RenderFrame* render_frame_;
+ blink::WebLocalFrame* frame_;
+ blink::WebPluginParams params_;
+ content::WebPluginInfo info_;
+ std::string identifier_;
+ base::string16 name_;
+ base::string16 message_;
+
+ blink::WebPlugin* plugin_;
+ content::PluginInstanceThrottler* throttler_;
+
+ GURL keyframe_data_url_;
+
+ DISALLOW_COPY_AND_ASSIGN(PluginPreroller);
+};
+
+#endif // CHROME_RENDERER_PLUGINS_PLUGIN_PREROLLER_H_

Powered by Google App Engine
This is Rietveld 408576698