OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 CHROME_COMMON_PLUGIN_GROUP_H_ | 5 #ifndef CHROME_COMMON_PLUGIN_GROUP_H_ |
6 #define CHROME_COMMON_PLUGIN_GROUP_H_ | 6 #define CHROME_COMMON_PLUGIN_GROUP_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/linked_ptr.h" | 11 #include "base/linked_ptr.h" |
12 #include "base/scoped_ptr.h" | 12 #include "base/scoped_ptr.h" |
13 #include "base/string16.h" | 13 #include "base/string16.h" |
14 #include "base/version.h" | 14 #include "base/version.h" |
15 #include "webkit/glue/plugins/webplugininfo.h" | 15 #include "webkit/glue/plugins/webplugininfo.h" |
16 | 16 |
17 class DictionaryValue; | 17 class DictionaryValue; |
18 | 18 |
19 // Hard-coded definitions of plugin groups. | 19 // Hard-coded definitions of plugin groups. |
20 struct PluginGroupDefinition { | 20 struct PluginGroupDefinition { |
21 const char* name; // Name of this group. | 21 const char* name; // Name of this group. |
22 const char* name_matcher; // Substring matcher for the plugin name. | 22 const char* name_matcher; // Substring matcher for the plugin name. |
23 const char* version_matcher_low; // Matchers for the plugin version. | 23 const char* version_matcher_low; // Matchers for the plugin version. |
24 const char* version_matcher_high; | 24 const char* version_matcher_high; |
25 const char* min_version; // Minimum secure version. | 25 const char* min_version; // Minimum secure version. |
26 const char* update_url; // Location of latest secure version. | 26 const char* update_url; // Location of latest secure version. |
27 }; | 27 }; |
28 | 28 |
| 29 // A PluginGroup can match a range of versions of a specific plugin (as defined |
| 30 // by matching a substring of its name). |
| 31 // It contains all WebPluginInfo structs (at least one) matching its definition. |
| 32 // In addition, it knows about a security "baseline", i.e. the minimum version |
| 33 // of a plugin that is needed in order not to exhibit known security |
| 34 // vulnerabilities. |
29 | 35 |
30 // A PluginGroup contains at least one WebPluginInfo. | |
31 // In addition, it knows if the plugin is critically vulnerable. | |
32 class PluginGroup { | 36 class PluginGroup { |
33 public: | 37 public: |
34 // Creates a PluginGroup from a PluginGroupDefinition. | 38 // Creates a PluginGroup from a PluginGroupDefinition. |
35 static PluginGroup* FromPluginGroupDefinition( | 39 static PluginGroup* FromPluginGroupDefinition( |
36 const PluginGroupDefinition& definition); | 40 const PluginGroupDefinition& definition); |
37 | 41 |
38 // Creates a PluginGroup from a WebPluginInfo -- when no hard-coded | 42 // Creates a PluginGroup from a WebPluginInfo -- when no hard-coded |
39 // definition is found. | 43 // definition is found. |
40 static PluginGroup* FromWebPluginInfo(const WebPluginInfo& wpi); | 44 static PluginGroup* FromWebPluginInfo(const WebPluginInfo& wpi); |
41 | 45 |
42 // Find a plugin group matching |info| in the list of hardcoded plugins. | 46 // Find a plugin group matching |info| in the list of hardcoded plugins and |
| 47 // returns a copy of it if found, or a new group matching exactly this plugin |
| 48 // otherwise. |
43 static PluginGroup* FindHardcodedPluginGroup(const WebPluginInfo& info); | 49 static PluginGroup* FindHardcodedPluginGroup(const WebPluginInfo& info); |
44 | 50 |
45 // Configures the set of plugin names that are disabled by policy. | 51 // Configures the set of plugin names that are disabled by policy. |
46 static void SetPolicyDisabledPluginSet(const std::set<string16>& set); | 52 static void SetPolicyDisabledPluginSet(const std::set<string16>& set); |
47 | 53 |
48 // Tests to see if a plugin is on the blacklist using its name as | 54 // Tests to see if a plugin is on the blacklist using its name as |
49 // the lookup key. | 55 // the lookup key. |
50 static bool IsPluginNameDisabledByPolicy(const string16& plugin_name); | 56 static bool IsPluginNameDisabledByPolicy(const string16& plugin_name); |
51 | 57 |
52 // Tests to see if a plugin is on the blacklist using its path as | 58 // Tests to see if a plugin is on the blacklist using its path as |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 std::string min_version_str_; | 126 std::string min_version_str_; |
121 scoped_ptr<Version> min_version_; | 127 scoped_ptr<Version> min_version_; |
122 scoped_ptr<Version> max_version_; | 128 scoped_ptr<Version> max_version_; |
123 std::vector<WebPluginInfo> web_plugin_infos_; | 129 std::vector<WebPluginInfo> web_plugin_infos_; |
124 std::vector<int> web_plugin_positions_; | 130 std::vector<int> web_plugin_positions_; |
125 | 131 |
126 DISALLOW_COPY_AND_ASSIGN(PluginGroup); | 132 DISALLOW_COPY_AND_ASSIGN(PluginGroup); |
127 }; | 133 }; |
128 | 134 |
129 #endif // CHROME_COMMON_PLUGIN_GROUP_H_ | 135 #endif // CHROME_COMMON_PLUGIN_GROUP_H_ |
OLD | NEW |