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

Unified Diff: webkit/plugins/npapi/plugin_group.h

Issue 5699005: Policy: Re-enabled plugin still disabled (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Whitespace fixes only. Trybot happiness still applies. Created 9 years, 11 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 | « chrome/renderer/render_view.cc ('k') | webkit/plugins/npapi/plugin_group.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/npapi/plugin_group.h
diff --git a/webkit/plugins/npapi/plugin_group.h b/webkit/plugins/npapi/plugin_group.h
index d6a2157efdf00048156d5db2a8191a4f2e52b8b7..cc5ff7c1196cf233b67113b4b5761e162195b16c 100644
--- a/webkit/plugins/npapi/plugin_group.h
+++ b/webkit/plugins/npapi/plugin_group.h
@@ -14,6 +14,7 @@
#include "base/gtest_prod_util.h"
#include "base/scoped_ptr.h"
#include "base/string16.h"
+#include "webkit/plugins/npapi/webplugininfo.h"
class DictionaryValue;
class FilePath;
@@ -25,8 +26,9 @@ namespace webkit {
namespace npapi {
class PluginList;
-struct WebPluginInfo;
-
+namespace plugin_test_internal {
+class PluginListWithoutFileIO;
+}
// Hard-coded version ranges for plugin groups.
struct VersionRangeDefinition {
// Matcher for lowest version matched by this range (inclusive). May be empty
@@ -94,22 +96,29 @@ class PluginGroup {
// the lookup key.
static bool IsPluginNameDisabledByPolicy(const string16& plugin_name);
- // Tests to see if a plugin is on the blacklist using its path as
- // the lookup key.
- static bool IsPluginPathDisabledByPolicy(const FilePath& plugin_path);
-
// Returns true if the given plugin matches this group.
bool Match(const WebPluginInfo& plugin) const;
- // Adds the given plugin to this group. Provide the position of the
- // plugin as given by PluginList so we can display its priority.
- void AddPlugin(const WebPluginInfo& plugin, int position);
+ // Adds the given plugin to this group.
+ void AddPlugin(const WebPluginInfo& plugin);
- bool IsEmpty() const;
+ // Removes a plugin from the group by its path.
+ bool RemovePlugin(const FilePath& filename);
+
+ // The two following functions enable/disable a plugin given its filename. The
+ // function returns true if the plugin could be enabled/disabled. Plugins
+ // might not get enabled/disabled if they are controlled by policy or are
+ // already in the wanted state.
+ bool EnablePlugin(const FilePath& filename);
+ bool DisablePlugin(const FilePath& filename);
// Enables/disables this group. This enables/disables all plugins in the
// group.
- void Enable(bool enable);
+ bool EnableGroup(bool enable);
+
+ // Checks whether the group should be disabled/enabled by a policy and puts
+ // it in the needed state. Updates all contained plugins too.
+ void EnforceGroupPolicy();
// Returns whether the plugin group is enabled or not.
bool Enabled() const { return enabled_; }
@@ -118,10 +127,23 @@ class PluginGroup {
// string otherwise.
const std::string& identifier() const { return identifier_; }
+ // Sets a unique identifier for this group or if none is set an empty string.
+ void set_identifier(const std::string& identifier) {
+ identifier_ = identifier;
+ }
+
// Returns this group's name, or the filename without extension if the name
// is empty.
string16 GetGroupName() const;
+ // Returns all plugins added to the group.
+ const std::vector<WebPluginInfo>& web_plugins_info() const {
+ return web_plugin_infos_;
+ }
+
+ // Checks whether a plugin exists in the group with the given path.
+ bool ContainsPlugin(const FilePath& path) const;
+
// Returns the description of the highest-priority plug-in in the group.
const string16& description() const { return description_; }
@@ -138,6 +160,10 @@ class PluginGroup {
// security problems.
bool IsVulnerable() const;
+ // Check if the group has no plugins. Could happen after a reload if the plug-
+ // in has disappeared from the pc (or in the process of updating).
+ bool IsEmpty() const;
+
// Disables all plugins in this group that are older than the
// minimum version.
void DisableOutdatedPlugins();
@@ -149,12 +175,12 @@ class PluginGroup {
std::vector<WebPluginInfo> web_plugin_infos() { return web_plugin_infos_; }
private:
- typedef std::map<std::string, PluginGroup*> PluginMap;
-
friend class PluginList;
+ friend class plugin_test_internal::PluginListWithoutFileIO;
friend class PluginGroupTest;
friend class ::TableModelArrayControllerTest;
friend class ::PluginExceptionsTableModelTest;
+ FRIEND_TEST_ALL_PREFIXES(PluginListTest, DisableOutdated);
// Generates the (short) identifier string for the given plugin.
static std::string GetIdentifier(const WebPluginInfo& wpi);
@@ -196,6 +222,23 @@ class PluginGroup {
// enabled one, or if all plugins are disabled, simply the first one.
void UpdateActivePlugin(const WebPluginInfo& plugin);
+ // Refreshes the enabled flag based on the state of its plugins.
+ void RefreshEnabledState();
+
+ // Enables the plugin if not already enabled and if policy allows it to.
+ // Returns true on success.
+ static bool Enable(WebPluginInfo* plugin, int reason);
+
+ // Disables the plugin if not already disabled and if policy allows it to.
+ // Returns true on success.
+ static bool Disable(WebPluginInfo* plugin, int reason);
+
+ // Returns a non-const vector of all plugins in the group. This is only used
+ // by PluginList.
+ std::vector<WebPluginInfo>& GetPluginsContainer() {
+ return web_plugin_infos_;
+ }
+
static std::set<string16>* policy_disabled_plugin_patterns_;
std::string identifier_;
@@ -207,7 +250,6 @@ class PluginGroup {
std::vector<VersionRange> version_ranges_;
scoped_ptr<Version> version_;
std::vector<WebPluginInfo> web_plugin_infos_;
- std::vector<int> web_plugin_positions_;
};
} // namespace npapi
« no previous file with comments | « chrome/renderer/render_view.cc ('k') | webkit/plugins/npapi/plugin_group.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698