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

Side by Side Diff: components/plugins/renderer/loadable_plugin_placeholder.h

Issue 1126073003: Plugin Placeholders: Refactor for platforms that don't support plugins (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: The version that was reverted. Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_PLUGINS_RENDERER_LOADABLE_PLUGIN_PLACEHOLDER_H_ 5 #ifndef COMPONENTS_PLUGINS_RENDERER_LOADABLE_PLUGIN_PLACEHOLDER_H_
6 #define COMPONENTS_PLUGINS_RENDERER_LOADABLE_PLUGIN_PLACEHOLDER_H_ 6 #define COMPONENTS_PLUGINS_RENDERER_LOADABLE_PLUGIN_PLACEHOLDER_H_
7 7
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "components/plugins/renderer/plugin_placeholder.h" 9 #include "components/plugins/renderer/plugin_placeholder.h"
10 #include "content/public/common/webplugininfo.h" 10 #include "content/public/common/webplugininfo.h"
11 #include "content/public/renderer/plugin_instance_throttler.h" 11 #include "content/public/renderer/plugin_instance_throttler.h"
12 #include "content/public/renderer/render_thread.h"
12 13
13 namespace plugins { 14 namespace plugins {
14 // Placeholders can be used if a plugin is missing or not available 15 // Placeholders can be used if a plugin is missing or not available
15 // (blocked or disabled). 16 // (blocked or disabled).
16 class LoadablePluginPlaceholder : public PluginPlaceholder { 17 class LoadablePluginPlaceholder : public PluginPlaceholder {
17 public: 18 public:
18 void set_blocked_for_background_tab(bool blocked_for_background_tab) { 19 void set_blocked_for_background_tab(bool blocked_for_background_tab) {
19 is_blocked_for_background_tab_ = blocked_for_background_tab; 20 is_blocked_for_background_tab_ = blocked_for_background_tab;
20 } 21 }
21 22
22 void set_blocked_for_prerendering(bool blocked_for_prerendering) { 23 void set_blocked_for_prerendering(bool blocked_for_prerendering) {
23 is_blocked_for_prerendering_ = blocked_for_prerendering; 24 is_blocked_for_prerendering_ = blocked_for_prerendering;
24 } 25 }
25 26
26 #if defined(ENABLE_PLUGINS)
27 bool power_saver_enabled() const { return power_saver_enabled_; } 27 bool power_saver_enabled() const { return power_saver_enabled_; }
28 28
29 void set_power_saver_enabled(bool power_saver_enabled) { 29 void set_power_saver_enabled(bool power_saver_enabled) {
30 power_saver_enabled_ = power_saver_enabled; 30 power_saver_enabled_ = power_saver_enabled;
31 } 31 }
32 32
33 // Defer loading of plugin, and instead show the Power Saver poster image. 33 // Defer loading of plugin, and instead show the Power Saver poster image.
34 void BlockForPowerSaverPoster(); 34 void BlockForPowerSaverPoster();
35 35
36 // When we load the plugin, use this already-created plugin, not a new one. 36 // When we load the plugin, use this already-created plugin, not a new one.
37 void SetPremadePlugin(content::PluginInstanceThrottler* throttler); 37 void SetPremadePlugin(content::PluginInstanceThrottler* throttler);
38 #endif
39 38
40 void set_allow_loading(bool allow_loading) { allow_loading_ = allow_loading; } 39 void DisallowLoading() { allow_loading_ = false; }
41 40
42 protected: 41 protected:
43 LoadablePluginPlaceholder(content::RenderFrame* render_frame, 42 LoadablePluginPlaceholder(content::RenderFrame* render_frame,
44 blink::WebLocalFrame* frame, 43 blink::WebLocalFrame* frame,
45 const blink::WebPluginParams& params, 44 const blink::WebPluginParams& params,
46 const std::string& html_data, 45 const std::string& html_data);
47 GURL placeholderDataUrl);
48 46
49 ~LoadablePluginPlaceholder() override; 47 ~LoadablePluginPlaceholder() override;
50 48
51 #if defined(ENABLE_PLUGINS)
52 void MarkPluginEssential( 49 void MarkPluginEssential(
53 content::PluginInstanceThrottler::PowerSaverUnthrottleMethod method); 50 content::PluginInstanceThrottler::PowerSaverUnthrottleMethod method);
54 #endif
55 51
56 void OnLoadBlockedPlugins(const std::string& identifier); 52 void OnLoadBlockedPlugins(const std::string& identifier);
57 void OnSetIsPrerendering(bool is_prerendering); 53 void OnSetIsPrerendering(bool is_prerendering);
58 54
59 void SetMessage(const base::string16& message); 55 void SetMessage(const base::string16& message);
60 void SetPluginInfo(const content::WebPluginInfo& plugin_info); 56 void SetPluginInfo(const content::WebPluginInfo& plugin_info);
61 const content::WebPluginInfo& GetPluginInfo() const; 57 const content::WebPluginInfo& GetPluginInfo() const;
62 void SetIdentifier(const std::string& identifier); 58 void SetIdentifier(const std::string& identifier);
63 const std::string& GetIdentifier() const; 59 const std::string& GetIdentifier() const;
64 bool LoadingAllowed() const { return allow_loading_; } 60 bool LoadingAllowed() const { return allow_loading_; }
65 61
66 // Replace this placeholder with a different plugin (which could be 62 // Replace this placeholder with a different plugin (which could be
67 // a placeholder again). 63 // a placeholder again).
68 void ReplacePlugin(blink::WebPlugin* new_plugin); 64 void ReplacePlugin(blink::WebPlugin* new_plugin);
69 65
70 // Hide this placeholder.
71 void HidePlugin();
72
73 // Load the blocked plugin. 66 // Load the blocked plugin.
74 void LoadPlugin(); 67 void LoadPlugin();
75 68
76 // WebViewPlugin::Delegate (via PluginPlaceholder) method
77 void BindWebFrame(blink::WebFrame* frame) override;
78
79 // gin::Wrappable method: 69 // gin::Wrappable method:
80 gin::ObjectTemplateBuilder GetObjectTemplateBuilder( 70 gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
81 v8::Isolate* isolate) override; 71 v8::Isolate* isolate) override;
82 72
83 private: 73 private:
84 // WebViewPlugin::Delegate methods: 74 // WebViewPlugin::Delegate methods:
85 void PluginDestroyed() override; 75 void PluginDestroyed() override;
86 v8::Local<v8::Object> GetV8ScriptableObject( 76 v8::Local<v8::Object> GetV8ScriptableObject(
87 v8::Isolate* isolate) const override; 77 v8::Isolate* isolate) const override;
88 78
(...skipping 29 matching lines...) Expand all
118 108
119 // True if power saver is enabled for this plugin and it has not been marked 109 // True if power saver is enabled for this plugin and it has not been marked
120 // essential (by a click or retroactive whitelisting). 110 // essential (by a click or retroactive whitelisting).
121 bool power_saver_enabled_; 111 bool power_saver_enabled_;
122 112
123 // When we load, uses this premade plugin instead of creating a new one. 113 // When we load, uses this premade plugin instead of creating a new one.
124 content::PluginInstanceThrottler* premade_throttler_; 114 content::PluginInstanceThrottler* premade_throttler_;
125 115
126 bool allow_loading_; 116 bool allow_loading_;
127 117
128 bool hidden_;
129 bool finished_loading_; 118 bool finished_loading_;
130 std::string identifier_; 119 std::string identifier_;
131 120
132 base::WeakPtrFactory<LoadablePluginPlaceholder> weak_factory_; 121 base::WeakPtrFactory<LoadablePluginPlaceholder> weak_factory_;
133 122
134 DISALLOW_COPY_AND_ASSIGN(LoadablePluginPlaceholder); 123 DISALLOW_COPY_AND_ASSIGN(LoadablePluginPlaceholder);
135 }; 124 };
136 125
137 } // namespace plugins 126 } // namespace plugins
138 127
139 #endif // COMPONENTS_PLUGINS_RENDERER_LOADABLE_PLUGIN_PLACEHOLDER_H_ 128 #endif // COMPONENTS_PLUGINS_RENDERER_LOADABLE_PLUGIN_PLACEHOLDER_H_
OLDNEW
« no previous file with comments | « components/plugins/renderer/BUILD.gn ('k') | components/plugins/renderer/loadable_plugin_placeholder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698