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

Side by Side Diff: webkit/plugins/npapi/plugin_group.h

Issue 7901015: Revert 101269 - Store plug-in enabled/disabled state in PluginPrefs instead of WebPluginInfo, to ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « content/common/view_messages.h ('k') | webkit/plugins/npapi/plugin_group.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:mergeinfo
Merged /branches/chrome_webkit_merge_branch/src/webkit/plugins/npapi/plugin_group.h:r3734-4217,4606-5108,5177-5263
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_ 5 #ifndef WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_
6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_ 6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map>
10 #include <set>
9 #include <string> 11 #include <string>
10 #include <vector> 12 #include <vector>
11 13
12 #include "base/gtest_prod_util.h" 14 #include "base/gtest_prod_util.h"
13 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
14 #include "base/string16.h" 16 #include "base/string16.h"
15 #include "webkit/plugins/webplugininfo.h" 17 #include "webkit/plugins/webplugininfo.h"
16 18
17 class FilePath; 19 class FilePath;
18 class PluginExceptionsTableModelTest; 20 class PluginExceptionsTableModelTest;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 static const char* kRealPlayerGroupName; 90 static const char* kRealPlayerGroupName;
89 static const char* kSilverlightGroupName; 91 static const char* kSilverlightGroupName;
90 static const char* kWindowsMediaPlayerGroupName; 92 static const char* kWindowsMediaPlayerGroupName;
91 93
92 PluginGroup(const PluginGroup& other); 94 PluginGroup(const PluginGroup& other);
93 95
94 ~PluginGroup(); 96 ~PluginGroup();
95 97
96 PluginGroup& operator=(const PluginGroup& other); 98 PluginGroup& operator=(const PluginGroup& other);
97 99
100 // Configures the set of plugin name patterns for enabling and disabling
101 // plugins via enterprise configuration management.
102 static void SetPolicyEnforcedPluginPatterns(
103 const std::set<string16>& plugins_disabled,
104 const std::set<string16>& plugins_disabled_exceptions,
105 const std::set<string16>& plugins_enabled);
106
107 // Tests whether |plugin_name| is disabled by policy.
108 static bool IsPluginNameDisabledByPolicy(const string16& plugin_name);
109
110 // Tests whether |plugin_name| within the plugin group |group_name| is
111 // disabled by policy.
112 static bool IsPluginFileNameDisabledByPolicy(const string16& plugin_name,
113 const string16& group_name);
114
115 // Tests whether |plugin_name| is enabled by policy.
116 static bool IsPluginNameEnabledByPolicy(const string16& plugin_name);
117
98 // Returns true if the given plugin matches this group. 118 // Returns true if the given plugin matches this group.
99 bool Match(const webkit::WebPluginInfo& plugin) const; 119 bool Match(const webkit::WebPluginInfo& plugin) const;
100 120
101 // Adds the given plugin to this group. 121 // Adds the given plugin to this group.
102 void AddPlugin(const webkit::WebPluginInfo& plugin); 122 void AddPlugin(const webkit::WebPluginInfo& plugin);
103 123
104 // Removes a plugin from the group by its path. 124 // Removes a plugin from the group by its path.
105 bool RemovePlugin(const FilePath& filename); 125 bool RemovePlugin(const FilePath& filename);
106 126
127 // The two following functions enable/disable a plugin given its filename. The
128 // function returns true if the plugin could be enabled/disabled. Plugins
129 // might not get enabled/disabled if they are controlled by policy or are
130 // already in the wanted state.
131 bool EnablePlugin(const FilePath& filename);
132 bool DisablePlugin(const FilePath& filename);
133
134 // Enables/disables this group. This enables/disables all plugins in the
135 // group.
136 bool EnableGroup(bool enable);
137
138 // Checks whether the group should be disabled/enabled by a policy and puts
139 // it in the needed state. Updates all contained plugins too.
140 void EnforceGroupPolicy();
141
142 // Returns whether the plugin group is enabled or not.
143 bool Enabled() const { return enabled_; }
144
107 // Returns a unique identifier for this group, if one is defined, or the empty 145 // Returns a unique identifier for this group, if one is defined, or the empty
108 // string otherwise. 146 // string otherwise.
109 const std::string& identifier() const { return identifier_; } 147 const std::string& identifier() const { return identifier_; }
110 148
111 // Sets a unique identifier for this group or if none is set an empty string. 149 // Sets a unique identifier for this group or if none is set an empty string.
112 void set_identifier(const std::string& identifier) { 150 void set_identifier(const std::string& identifier) {
113 identifier_ = identifier; 151 identifier_ = identifier;
114 } 152 }
115 153
116 // Returns this group's name, or the filename without extension if the name 154 // Returns this group's name, or the filename without extension if the name
117 // is empty. 155 // is empty.
118 string16 GetGroupName() const; 156 string16 GetGroupName() const;
119 157
158 // Returns all plugins added to the group.
159 const std::vector<webkit::WebPluginInfo>& web_plugins_info() const {
160 return web_plugin_infos_;
161 }
162
120 // Checks whether a plugin exists in the group with the given path. 163 // Checks whether a plugin exists in the group with the given path.
121 bool ContainsPlugin(const FilePath& path) const; 164 bool ContainsPlugin(const FilePath& path) const;
122 165
166 // Returns the description of the highest-priority plug-in in the group.
167 const string16& description() const { return description_; }
168
169 // Returns a DictionaryValue with data to display in the UI.
170 base::DictionaryValue* GetDataForUI() const;
171
172 // Returns a DictionaryValue with data to save in the preferences.
173 base::DictionaryValue* GetSummary() const;
174
123 // Returns the update URL. 175 // Returns the update URL.
124 std::string GetUpdateURL() const { return update_url_; } 176 std::string GetUpdateURL() const { return update_url_; }
125 177
126 // Returns true if this plugin group is whitelisted. 178 // Returns true if this plugin group is whitelisted.
127 bool IsWhitelisted() const; 179 bool IsWhitelisted() const;
128 180
129 // Returns true if |plugin| in this group has known security problems. 181 // Returns true if the highest-priority plugin in this group has known
130 bool IsVulnerable(const WebPluginInfo& plugin) const; 182 // security problems.
183 bool IsVulnerable() const;
131 184
132 // Returns true if |plugin| in this plug-in group always requires user 185 // Returns true if this plug-in group always requires user authorization
133 // authorization to run. 186 // to run.
134 bool RequiresAuthorization(const WebPluginInfo& plugin) const; 187 bool RequiresAuthorization() const;
135 188
136 // Check if the group has no plugins. Could happen after a reload if the plug- 189 // Check if the group has no plugins. Could happen after a reload if the plug-
137 // in has disappeared from the pc (or in the process of updating). 190 // in has disappeared from the pc (or in the process of updating).
138 bool IsEmpty() const; 191 bool IsEmpty() const;
139 192
140 // Parse a version string as used by a plug-in. This method is more lenient 193 // Parse a version string as used by a plug-in. This method is more lenient
141 // in accepting weird version strings than Version::GetFromString(). 194 // in accepting weird version strings than Version::GetFromString().
142 static Version* CreateVersionFromString(const string16& version_string); 195 static Version* CreateVersionFromString(const string16& version_string);
143 196
144 const std::vector<webkit::WebPluginInfo>& web_plugin_infos() const { 197 std::vector<webkit::WebPluginInfo> web_plugin_infos() {
145 return web_plugin_infos_; 198 return web_plugin_infos_;
146 } 199 }
147 200
148 private: 201 private:
149 friend class PluginList; 202 friend class PluginList;
150 friend class MockPluginList; 203 friend class MockPluginList;
151 friend class PluginGroupTest; 204 friend class PluginGroupTest;
152 friend class ::PluginExceptionsTableModelTest; 205 friend class ::PluginExceptionsTableModelTest;
153 FRIEND_TEST_ALL_PREFIXES(PluginListTest, DisableOutdated); 206 FRIEND_TEST_ALL_PREFIXES(PluginListTest, DisableOutdated);
154 207
(...skipping 22 matching lines...) Expand all
177 static bool IsPluginOutdated(const Version& plugin_version, 230 static bool IsPluginOutdated(const Version& plugin_version,
178 const VersionRange& version_range); 231 const VersionRange& version_range);
179 232
180 PluginGroup(const string16& group_name, 233 PluginGroup(const string16& group_name,
181 const string16& name_matcher, 234 const string16& name_matcher,
182 const std::string& update_url, 235 const std::string& update_url,
183 const std::string& identifier); 236 const std::string& identifier);
184 237
185 void InitFrom(const PluginGroup& other); 238 void InitFrom(const PluginGroup& other);
186 239
240 // Set the description and version for this plugin group from the
241 // given plug-in.
242 void UpdateDescriptionAndVersion(const webkit::WebPluginInfo& plugin);
243
244 // Updates the active plugin in the group. The active plugin is the first
245 // enabled one, or if all plugins are disabled, simply the first one.
246 void UpdateActivePlugin(const webkit::WebPluginInfo& plugin);
247
248 // Resets the group state to its default value (as if the group was empty).
249 // After calling this method, calling |UpdateActivePlugin| with all plugins
250 // in a row will correctly set the group state.
251 void ResetGroupState();
252
253 // Enables the plugin if not already enabled and if policy allows it to.
254 // Returns true on success. Does not update the group state.
255 static bool Enable(webkit::WebPluginInfo* plugin, int reason);
256
257 // Disables the plugin if not already disabled and if policy allows it to.
258 // Returns true on success. Does not update the group state.
259 static bool Disable(webkit::WebPluginInfo* plugin, int reason);
260
261 // Helper function to implement the functions above.
262 static bool SetPluginState(webkit::WebPluginInfo* plugin,
263 int new_reason,
264 bool state_changes);
265
187 // Returns a non-const vector of all plugins in the group. This is only used 266 // Returns a non-const vector of all plugins in the group. This is only used
188 // by PluginList. 267 // by PluginList.
189 std::vector<webkit::WebPluginInfo>& GetPluginsContainer() { 268 std::vector<webkit::WebPluginInfo>& GetPluginsContainer() {
190 return web_plugin_infos_; 269 return web_plugin_infos_;
191 } 270 }
192 271
272 // Checks if |name| matches any of the patterns in |pattern_set|.
273 static bool IsStringMatchedInSet(const string16& name,
274 const std::set<string16>* pattern_set);
275
276 static std::set<string16>* policy_disabled_plugin_patterns_;
277 static std::set<string16>* policy_disabled_plugin_exception_patterns_;
278 static std::set<string16>* policy_enabled_plugin_patterns_;
279
193 std::string identifier_; 280 std::string identifier_;
194 string16 group_name_; 281 string16 group_name_;
195 string16 name_matcher_; 282 string16 name_matcher_;
283 string16 description_;
196 std::string update_url_; 284 std::string update_url_;
285 bool enabled_;
197 std::vector<VersionRange> version_ranges_; 286 std::vector<VersionRange> version_ranges_;
287 scoped_ptr<Version> version_;
198 std::vector<webkit::WebPluginInfo> web_plugin_infos_; 288 std::vector<webkit::WebPluginInfo> web_plugin_infos_;
199 }; 289 };
200 290
201 } // namespace npapi 291 } // namespace npapi
202 } // namespace webkit 292 } // namespace webkit
203 293
204 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_ 294 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_
OLDNEW
« no previous file with comments | « content/common/view_messages.h ('k') | webkit/plugins/npapi/plugin_group.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698