| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_ | |
| 6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 #include <vector> | |
| 10 | |
| 11 #include "base/gtest_prod_util.h" | |
| 12 #include "base/memory/scoped_ptr.h" | |
| 13 #include "base/string16.h" | |
| 14 #include "webkit/plugins/webkit_plugins_export.h" | |
| 15 #include "webkit/plugins/webplugininfo.h" | |
| 16 | |
| 17 class FilePath; | |
| 18 class PluginExceptionsTableModelTest; | |
| 19 class Version; | |
| 20 | |
| 21 namespace webkit { | |
| 22 namespace npapi { | |
| 23 | |
| 24 class PluginList; | |
| 25 class MockPluginList; | |
| 26 | |
| 27 // Hard-coded definitions of plugin groups. | |
| 28 struct PluginGroupDefinition { | |
| 29 // Unique identifier for this group. | |
| 30 const char* identifier; | |
| 31 // Name of this group. | |
| 32 const char* name; | |
| 33 // Substring matcher for the plugin name. | |
| 34 const char* name_matcher; | |
| 35 }; | |
| 36 | |
| 37 // A PluginGroup can match a range of versions of a specific plugin (as defined | |
| 38 // by matching a substring of its name). | |
| 39 // It contains all WebPluginInfo structs (at least one) matching its definition. | |
| 40 | |
| 41 class WEBKIT_PLUGINS_EXPORT PluginGroup { | |
| 42 public: | |
| 43 // Used by about:plugins to disable Reader plugin when internal PDF viewer is | |
| 44 // enabled. | |
| 45 static const char kAdobeReaderGroupName[]; | |
| 46 static const char kJavaGroupName[]; | |
| 47 static const char kQuickTimeGroupName[]; | |
| 48 static const char kShockwaveGroupName[]; | |
| 49 static const char kRealPlayerGroupName[]; | |
| 50 static const char kSilverlightGroupName[]; | |
| 51 static const char kWindowsMediaPlayerGroupName[]; | |
| 52 | |
| 53 PluginGroup(const PluginGroup& other); | |
| 54 | |
| 55 ~PluginGroup(); | |
| 56 | |
| 57 PluginGroup& operator=(const PluginGroup& other); | |
| 58 | |
| 59 // Returns true if the given plugin matches this group. | |
| 60 bool Match(const webkit::WebPluginInfo& plugin) const; | |
| 61 | |
| 62 // Adds the given plugin to this group. | |
| 63 void AddPlugin(const webkit::WebPluginInfo& plugin); | |
| 64 | |
| 65 // Removes a plugin from the group by its path. | |
| 66 bool RemovePlugin(const FilePath& filename); | |
| 67 | |
| 68 // Returns a unique identifier for this group, if one is defined, or the empty | |
| 69 // string otherwise. | |
| 70 const std::string& identifier() const { return identifier_; } | |
| 71 | |
| 72 // Sets a unique identifier for this group or if none is set an empty string. | |
| 73 void set_identifier(const std::string& identifier) { | |
| 74 identifier_ = identifier; | |
| 75 } | |
| 76 | |
| 77 // Returns this group's name, or the filename without extension if the name | |
| 78 // is empty. | |
| 79 string16 GetGroupName() const; | |
| 80 | |
| 81 // Checks whether a plugin exists in the group with the given path. | |
| 82 bool ContainsPlugin(const FilePath& path) const; | |
| 83 | |
| 84 // Check if the group has no plugins. Could happen after a reload if the plug- | |
| 85 // in has disappeared from the pc (or in the process of updating). | |
| 86 bool IsEmpty() const; | |
| 87 | |
| 88 const std::vector<webkit::WebPluginInfo>& web_plugin_infos() const { | |
| 89 return web_plugin_infos_; | |
| 90 } | |
| 91 | |
| 92 private: | |
| 93 friend class MockPluginList; | |
| 94 friend class PluginGroupTest; | |
| 95 friend class PluginList; | |
| 96 friend class ::PluginExceptionsTableModelTest; | |
| 97 FRIEND_TEST_ALL_PREFIXES(PluginListTest, DisableOutdated); | |
| 98 | |
| 99 // Generates the (short) identifier string for the given plugin. | |
| 100 static std::string GetIdentifier(const webkit::WebPluginInfo& wpi); | |
| 101 | |
| 102 // Generates the long identifier (based on the full file path) for the given | |
| 103 // plugin, to be called when the short identifier is not unique. | |
| 104 static std::string GetLongIdentifier(const webkit::WebPluginInfo& wpi); | |
| 105 | |
| 106 // Creates a PluginGroup from a PluginGroupDefinition. The caller takes | |
| 107 // ownership of the created PluginGroup. | |
| 108 static PluginGroup* FromPluginGroupDefinition( | |
| 109 const PluginGroupDefinition& definition); | |
| 110 | |
| 111 // Creates a PluginGroup from a WebPluginInfo. The caller takes ownership of | |
| 112 // the created PluginGroup. | |
| 113 static PluginGroup* FromWebPluginInfo(const webkit::WebPluginInfo& wpi); | |
| 114 | |
| 115 PluginGroup(const string16& group_name, | |
| 116 const string16& name_matcher, | |
| 117 const std::string& identifier); | |
| 118 | |
| 119 void InitFrom(const PluginGroup& other); | |
| 120 | |
| 121 // Returns a non-const vector of all plugins in the group. This is only used | |
| 122 // by PluginList. | |
| 123 std::vector<webkit::WebPluginInfo>& GetPluginsContainer() { | |
| 124 return web_plugin_infos_; | |
| 125 } | |
| 126 | |
| 127 std::string identifier_; | |
| 128 string16 group_name_; | |
| 129 string16 name_matcher_; | |
| 130 std::vector<webkit::WebPluginInfo> web_plugin_infos_; | |
| 131 }; | |
| 132 | |
| 133 } // namespace npapi | |
| 134 } // namespace webkit | |
| 135 | |
| 136 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_GROUP_H_ | |
| OLD | NEW |