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

Side by Side Diff: webkit/plugins/npapi/plugin_list.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 | « webkit/plugins/npapi/plugin_lib_win.cc ('k') | webkit/plugins/npapi/plugin_list.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_list.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_LIST_H_ 5 #ifndef WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_
6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ 6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 143
144 // Get plugin info by plugin path (including disabled plugins). Returns true 144 // Get plugin info by plugin path (including disabled plugins). Returns true
145 // if the plugin is found and WebPluginInfo has been filled in |info|. 145 // if the plugin is found and WebPluginInfo has been filled in |info|.
146 bool GetPluginInfoByPath(const FilePath& plugin_path, 146 bool GetPluginInfoByPath(const FilePath& plugin_path,
147 webkit::WebPluginInfo* info); 147 webkit::WebPluginInfo* info);
148 148
149 // Populates the given vector with all available plugin groups. 149 // Populates the given vector with all available plugin groups.
150 void GetPluginGroups(bool load_if_necessary, 150 void GetPluginGroups(bool load_if_necessary,
151 std::vector<PluginGroup>* plugin_groups); 151 std::vector<PluginGroup>* plugin_groups);
152 152
153 // Returns a copy of the PluginGroup corresponding to the given WebPluginInfo. 153 // Returns the PluginGroup corresponding to the given WebPluginInfo. If no
154 // If no such group exists, it is created and added to the cache. 154 // such group exists, it is created and added to the cache.
155 // The caller takes ownership of the returned PluginGroup. 155 // Beware: when calling this from the Browser process, the group that the
156 PluginGroup* GetPluginGroup(const webkit::WebPluginInfo& web_plugin_info); 156 // returned pointer points to might disappear suddenly. This happens when
157 // |RefreshPlugins()| is called and then |LoadPlugins()| is triggered by a
158 // call to |GetPlugins()|, |GetEnabledPlugins()|, |GetPluginInfoArray()|,
159 // |GetPluginInfoByPath()|, or |GetPluginGroups(true, _)|. It is the caller's
160 // responsibility to make sure this doesn't happen.
161 const PluginGroup* GetPluginGroup(
162 const webkit::WebPluginInfo& web_plugin_info);
157 163
158 // Returns the name of the PluginGroup with the given identifier. 164 // Returns the name of the PluginGroup with the given identifier.
159 // If no such group exists, an empty string is returned. 165 // If no such group exists, an empty string is returned.
160 string16 GetPluginGroupName(const std::string& identifier); 166 string16 GetPluginGroupName(const std::string& identifier);
161 167
162 // Returns the identifier string of the PluginGroup corresponding to the given 168 // Returns the identifier string of the PluginGroup corresponding to the given
163 // WebPluginInfo. If no such group exists, it is created and added to the 169 // WebPluginInfo. If no such group exists, it is created and added to the
164 // cache. 170 // cache.
165 std::string GetPluginGroupIdentifier( 171 std::string GetPluginGroupIdentifier(
166 const webkit::WebPluginInfo& web_plugin_info); 172 const webkit::WebPluginInfo& web_plugin_info);
167 173
168 // Load a specific plugin with full path. 174 // Load a specific plugin with full path.
169 void LoadPlugin(const FilePath& filename, 175 void LoadPlugin(const FilePath& filename,
170 ScopedVector<PluginGroup>* plugin_groups); 176 ScopedVector<PluginGroup>* plugin_groups);
171 177
178 // Enable a specific plugin, specified by path. Returns |true| iff a plugin
179 // currently in the plugin list was actually enabled as a result; regardless
180 // of return value, if a plugin is found in the future with the given name, it
181 // will be enabled.
182 bool EnablePlugin(const FilePath& filename);
183
184 // Disable a specific plugin, specified by path. Returns |true| iff a plugin
185 // currently in the plugin list was actually disabled as a result; regardless
186 // of return value, if a plugin is found in the future with the given name, it
187 // will be disabled.
188 bool DisablePlugin(const FilePath& filename);
189
190 // Enable/disable a plugin group, specified by group_name. Returns |true| iff
191 // a plugin currently in the plugin list was actually enabled/disabled as a
192 // result; regardless of return value, if a plugin is found in the future with
193 // the given name, it will be enabled/disabled.
194 bool EnableGroup(bool enable, const string16& name);
195
172 virtual ~PluginList(); 196 virtual ~PluginList();
173 197
174 protected: 198 protected:
175 // This constructor is used in unit tests to override the platform-dependent 199 // This constructor is used in unit tests to override the platform-dependent
176 // real-world plugin group definitions with custom ones. 200 // real-world plugin group definitions with custom ones.
177 PluginList(const PluginGroupDefinition* definitions, size_t num_definitions); 201 PluginList(const PluginGroupDefinition* definitions, size_t num_definitions);
178 202
179 // Adds the given WebPluginInfo to its corresponding group, creating it if 203 // Adds the given WebPluginInfo to its corresponding group, creating it if
180 // necessary, and returns the group. 204 // necessary, and returns the group.
181 // Callers need to protect calls to this method by a lock themselves. 205 // Callers need to protect calls to this method by a lock themselves.
(...skipping 27 matching lines...) Expand all
209 void LoadPluginsFromDir(const FilePath& path, 233 void LoadPluginsFromDir(const FilePath& path,
210 ScopedVector<PluginGroup>* plugin_groups, 234 ScopedVector<PluginGroup>* plugin_groups,
211 std::set<FilePath>* visited_plugins); 235 std::set<FilePath>* visited_plugins);
212 236
213 // Returns true if we should load the given plugin, or false otherwise. 237 // Returns true if we should load the given plugin, or false otherwise.
214 // plugins is the list of plugins we have crawled in the current plugin 238 // plugins is the list of plugins we have crawled in the current plugin
215 // loading run. 239 // loading run.
216 bool ShouldLoadPlugin(const webkit::WebPluginInfo& info, 240 bool ShouldLoadPlugin(const webkit::WebPluginInfo& info,
217 ScopedVector<PluginGroup>* plugins); 241 ScopedVector<PluginGroup>* plugins);
218 242
243 // Return whether a plug-in group with the given name should be disabled,
244 // either because it already is on the list of disabled groups, or because it
245 // is blacklisted by a policy. In the latter case, add the plugin group to the
246 // list of disabled groups as well.
247 bool ShouldDisableGroup(const string16& group_name);
248
219 // Returns true if the plugin supports |mime_type|. |mime_type| should be all 249 // Returns true if the plugin supports |mime_type|. |mime_type| should be all
220 // lower case. 250 // lower case.
221 bool SupportsType(const webkit::WebPluginInfo& plugin, 251 bool SupportsType(const webkit::WebPluginInfo& plugin,
222 const std::string& mime_type, 252 const std::string& mime_type,
223 bool allow_wildcard); 253 bool allow_wildcard);
224 254
225 // Returns true if the given plugin supports a given file extension. 255 // Returns true if the given plugin supports a given file extension.
226 // |extension| should be all lower case. If |mime_type| is not NULL, it will 256 // |extension| should be all lower case. If |mime_type| is not NULL, it will
227 // be set to the MIME type if found. The MIME type which corresponds to the 257 // be set to the MIME type if found. The MIME type which corresponds to the
228 // extension is optionally returned back. 258 // extension is optionally returned back.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 // Holds information about internal plugins. 301 // Holds information about internal plugins.
272 std::vector<InternalPlugin> internal_plugins_; 302 std::vector<InternalPlugin> internal_plugins_;
273 303
274 // Hardcoded plugin group definitions. 304 // Hardcoded plugin group definitions.
275 const PluginGroupDefinition* const group_definitions_; 305 const PluginGroupDefinition* const group_definitions_;
276 const size_t num_group_definitions_; 306 const size_t num_group_definitions_;
277 307
278 // Holds the currently available plugin groups. 308 // Holds the currently available plugin groups.
279 ScopedVector<PluginGroup> plugin_groups_; 309 ScopedVector<PluginGroup> plugin_groups_;
280 310
311 // The set of plugins that have been scheduled for disabling once they get
312 // loaded. This list is used in LoadPlugins and pruned after it. Contains
313 // plugins that were either disabled by the user (prefs are loaded before
314 // plugins) or disabled by a policy.
315 std::set<FilePath> plugins_to_disable_;
316 // Equivalent to the |plugins_to_disable_| this is the set of groups
317 // scheduled for disabling once they appear. This list is never completely
318 // pruned but all groups that do get created are removed from it. New groups
319 // might get added if they should be pruned because of plugins getting removed
320 // for example.
321 std::set<string16> groups_to_disable_;
322
281 // Need synchronization for the above members since this object can be 323 // Need synchronization for the above members since this object can be
282 // accessed on multiple threads. 324 // accessed on multiple threads.
283 base::Lock lock_; 325 base::Lock lock_;
284 326
285 // Set to true if the default plugin is enabled. 327 // Set to true if the default plugin is enabled.
286 bool default_plugin_enabled_; 328 bool default_plugin_enabled_;
287 329
288 DISALLOW_COPY_AND_ASSIGN(PluginList); 330 DISALLOW_COPY_AND_ASSIGN(PluginList);
289 }; 331 };
290 332
291 } // namespace npapi 333 } // namespace npapi
292 } // namespace webkit 334 } // namespace webkit
293 335
294 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ 336 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_
OLDNEW
« no previous file with comments | « webkit/plugins/npapi/plugin_lib_win.cc ('k') | webkit/plugins/npapi/plugin_list.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698