Index: webkit/glue/plugins/plugin_list.h |
diff --git a/webkit/glue/plugins/plugin_list.h b/webkit/glue/plugins/plugin_list.h |
index 734cc6d7286693456b0704c2b5711190cba81e1c..8f11a5e0e25ca3d4551ed223ec9ab707390fdfd1 100644 |
--- a/webkit/glue/plugins/plugin_list.h |
+++ b/webkit/glue/plugins/plugin_list.h |
@@ -71,6 +71,12 @@ struct PluginVersionInfo { |
// This object is thread safe. |
class PluginList { |
public: |
+ // Enum of possible reasons for plugin or group being disabled. Used in the |
+ // |disabled_plugins_| and |disabled_groups_| maps. |
+ enum PluginDisabledReason { USER = 0, POLICY, POLICY_AND_USER }; |
+ typedef std::map<FilePath, PluginDisabledReason> DisabledPlugins; |
+ typedef std::map<string16, PluginDisabledReason> DisabledGroups; |
+ |
// Gets the one instance of the PluginList. |
static PluginList* Singleton(); |
@@ -182,8 +188,7 @@ class PluginList { |
std::string GetPluginGroupIdentifier(const WebPluginInfo& web_plugin_info); |
// Load a specific plugin with full path. |
- void LoadPlugin(const FilePath& filename, |
- std::vector<WebPluginInfo>* plugins); |
+ void LoadPlugin(const FilePath& filename); |
// Enable a specific plugin, specified by path. Returns |true| iff a plugin |
// currently in the plugin list was actually enabled as a result; regardless |
@@ -195,8 +200,9 @@ class PluginList { |
// 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); |
+ // will be disabled. The boolean flag should be set to true if the plugin is |
+ // disabled by a policy and not a user. |
+ bool DisablePlugin(const FilePath& filename, bool policy_disabled); |
// 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 |
@@ -211,6 +217,10 @@ class PluginList { |
// version. |
void DisableOutdatedPluginGroups(); |
+ const DisabledPlugins& GetDisabledPlugins() const; |
+ |
+ const DisabledGroups& GetDisabledGroups() const; |
+ |
~PluginList(); |
private: |
@@ -236,14 +246,12 @@ class PluginList { |
// |visited_plugins| is updated with paths to all plugins that were considered |
// (including those we didn't load) |
void LoadPluginsFromDir(const FilePath& path, |
- std::vector<WebPluginInfo>* plugins, |
std::set<FilePath>* visited_plugins); |
// Returns true if we should load the given plugin, or false otherwise. |
// plugins is the list of plugins we have crawled in the current plugin |
// loading run. |
- bool ShouldLoadPlugin(const WebPluginInfo& info, |
- std::vector<WebPluginInfo>* plugins); |
+ bool ShouldLoadPlugin(const WebPluginInfo& info); |
// 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 |
@@ -286,7 +294,7 @@ class PluginList { |
// Loads plugins registered under HKCU\Software\MozillaPlugins and |
// HKLM\Software\MozillaPlugins. |
- void LoadPluginsFromRegistry(std::vector<WebPluginInfo>* plugins, |
+ void LoadPluginsFromRegistry(std::vector<WebPluginInfo*>* plugins, |
std::set<FilePath>* visited_plugins); |
#endif |
@@ -300,7 +308,7 @@ class PluginList { |
bool plugins_need_refresh_; |
// Contains information about the available plugins. |
- std::vector<WebPluginInfo> plugins_; |
+ std::vector<WebPluginInfo*> plugins_; |
// Extra plugin paths that we want to search when loading. |
std::vector<FilePath> extra_plugin_paths_; |
@@ -311,11 +319,15 @@ class PluginList { |
// Holds information about internal plugins. |
std::vector<PluginVersionInfo> internal_plugins_; |
+ // An element of the disabled list saves the reason for being disabled in the |
+ // second element of the pair. |
+ typedef std::pair<FilePath, PluginDisabledReason> DisabledPluginsListElement; |
// Path names of plugins to disable (the default is to enable them all). |
- std::set<FilePath> disabled_plugins_; |
+ DisabledPlugins disabled_plugins_; |
+ typedef std::pair<string16, PluginDisabledReason> DisabledGroupsListElement; |
// Group names to disable (the default is to enable them all). |
- std::set<string16> disabled_groups_; |
+ DisabledGroups disabled_groups_; |
bool disable_outdated_plugins_; |
@@ -326,7 +338,7 @@ class PluginList { |
// Need synchronization for the above members since this object can be |
// accessed on multiple threads. |
- Lock lock_; |
+ mutable Lock lock_; |
friend struct base::DefaultLazyInstanceTraits<PluginList>; |