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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/npapi/plugin_list.h
===================================================================
--- webkit/plugins/npapi/plugin_list.h (revision 101271)
+++ webkit/plugins/npapi/plugin_list.h (working copy)
@@ -150,10 +150,16 @@
void GetPluginGroups(bool load_if_necessary,
std::vector<PluginGroup>* plugin_groups);
- // Returns a copy of the PluginGroup corresponding to the given WebPluginInfo.
- // If no such group exists, it is created and added to the cache.
- // The caller takes ownership of the returned PluginGroup.
- PluginGroup* GetPluginGroup(const webkit::WebPluginInfo& web_plugin_info);
+ // Returns the PluginGroup corresponding to the given WebPluginInfo. If no
+ // such group exists, it is created and added to the cache.
+ // Beware: when calling this from the Browser process, the group that the
+ // returned pointer points to might disappear suddenly. This happens when
+ // |RefreshPlugins()| is called and then |LoadPlugins()| is triggered by a
+ // call to |GetPlugins()|, |GetEnabledPlugins()|, |GetPluginInfoArray()|,
+ // |GetPluginInfoByPath()|, or |GetPluginGroups(true, _)|. It is the caller's
+ // responsibility to make sure this doesn't happen.
+ const PluginGroup* GetPluginGroup(
+ const webkit::WebPluginInfo& web_plugin_info);
// Returns the name of the PluginGroup with the given identifier.
// If no such group exists, an empty string is returned.
@@ -169,6 +175,24 @@
void LoadPlugin(const FilePath& filename,
ScopedVector<PluginGroup>* plugin_groups);
+ // Enable a specific plugin, specified by path. Returns |true| iff a plugin
+ // currently in the plugin list was actually enabled as a result; regardless
+ // of return value, if a plugin is found in the future with the given name, it
+ // will be enabled.
+ bool EnablePlugin(const FilePath& filename);
+
+ // Disable a specific plugin, specified by path. Returns |true| iff a plugin
+ // currently in the plugin list was actually disabled as a result; regardless
+ // of return value, if a plugin is found in the future with the given name, it
+ // will be disabled.
+ bool DisablePlugin(const FilePath& filename);
+
+ // Enable/disable a plugin group, specified by group_name. Returns |true| iff
+ // a plugin currently in the plugin list was actually enabled/disabled as a
+ // result; regardless of return value, if a plugin is found in the future with
+ // the given name, it will be enabled/disabled.
+ bool EnableGroup(bool enable, const string16& name);
+
virtual ~PluginList();
protected:
@@ -216,6 +240,12 @@
bool ShouldLoadPlugin(const webkit::WebPluginInfo& info,
ScopedVector<PluginGroup>* plugins);
+ // Return whether a plug-in group with the given name should be disabled,
+ // either because it already is on the list of disabled groups, or because it
+ // is blacklisted by a policy. In the latter case, add the plugin group to the
+ // list of disabled groups as well.
+ bool ShouldDisableGroup(const string16& group_name);
+
// Returns true if the plugin supports |mime_type|. |mime_type| should be all
// lower case.
bool SupportsType(const webkit::WebPluginInfo& plugin,
@@ -278,6 +308,18 @@
// Holds the currently available plugin groups.
ScopedVector<PluginGroup> plugin_groups_;
+ // The set of plugins that have been scheduled for disabling once they get
+ // loaded. This list is used in LoadPlugins and pruned after it. Contains
+ // plugins that were either disabled by the user (prefs are loaded before
+ // plugins) or disabled by a policy.
+ std::set<FilePath> plugins_to_disable_;
+ // Equivalent to the |plugins_to_disable_| this is the set of groups
+ // scheduled for disabling once they appear. This list is never completely
+ // pruned but all groups that do get created are removed from it. New groups
+ // might get added if they should be pruned because of plugins getting removed
+ // for example.
+ std::set<string16> groups_to_disable_;
+
// Need synchronization for the above members since this object can be
// accessed on multiple threads.
base::Lock lock_;
Property changes on: webkit/plugins/npapi/plugin_list.h
___________________________________________________________________
Added: svn:mergeinfo
Merged /branches/chrome_webkit_merge_branch/src/webkit/plugins/npapi/plugin_list.h:r3734-4217,4606-5108,5177-5263
« 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