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

Side by Side Diff: webkit/plugins/npapi/plugin_list_unittest.cc

Issue 7497030: PluginList cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix crash Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/npapi/plugin_list.cc ('k') | webkit/support/webkit_support.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "webkit/plugins/npapi/plugin_list.h" 5 #include "webkit/plugins/npapi/plugin_list.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "webkit/plugins/npapi/mock_plugin_list.h" 9 #include "webkit/plugins/npapi/mock_plugin_list.h"
10 10
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 } 67 }
68 68
69 protected: 69 protected:
70 MockPluginList plugin_list_; 70 MockPluginList plugin_list_;
71 WebPluginInfo foo_plugin_; 71 WebPluginInfo foo_plugin_;
72 WebPluginInfo bar_plugin_; 72 WebPluginInfo bar_plugin_;
73 }; 73 };
74 74
75 TEST_F(PluginListTest, GetPlugins) { 75 TEST_F(PluginListTest, GetPlugins) {
76 std::vector<WebPluginInfo> plugins; 76 std::vector<WebPluginInfo> plugins;
77 plugin_list_.GetPlugins(false, &plugins); 77 plugin_list_.GetPlugins(&plugins);
78 EXPECT_EQ(2u, plugins.size()); 78 EXPECT_EQ(2u, plugins.size());
79 EXPECT_TRUE(Contains(plugins, foo_plugin_, true)); 79 EXPECT_TRUE(Contains(plugins, foo_plugin_, true));
80 EXPECT_TRUE(Contains(plugins, bar_plugin_, true)); 80 EXPECT_TRUE(Contains(plugins, bar_plugin_, true));
81 } 81 }
82 82
83 TEST_F(PluginListTest, GetEnabledPlugins) {
84 std::vector<WebPluginInfo> plugins;
85 plugin_list_.GetEnabledPlugins(false, &plugins);
86 EXPECT_EQ(1u, plugins.size());
87 EXPECT_TRUE(Contains(plugins, foo_plugin_, true));
88 }
89
90 TEST_F(PluginListTest, GetPluginGroup) { 83 TEST_F(PluginListTest, GetPluginGroup) {
91 const PluginGroup* foo_group = plugin_list_.GetPluginGroup(foo_plugin_); 84 const PluginGroup* foo_group = plugin_list_.GetPluginGroup(foo_plugin_);
92 EXPECT_EQ(ASCIIToUTF16(kFooGroupName), foo_group->GetGroupName()); 85 EXPECT_EQ(ASCIIToUTF16(kFooGroupName), foo_group->GetGroupName());
93 EXPECT_TRUE(foo_group->Enabled()); 86 EXPECT_TRUE(foo_group->Enabled());
94 // The second request should return a pointer to the same instance. 87 // The second request should return a pointer to the same instance.
95 const PluginGroup* foo_group2 = plugin_list_.GetPluginGroup(foo_plugin_); 88 const PluginGroup* foo_group2 = plugin_list_.GetPluginGroup(foo_plugin_);
96 EXPECT_EQ(foo_group, foo_group2); 89 EXPECT_EQ(foo_group, foo_group2);
97 const PluginGroup* bar_group = plugin_list_.GetPluginGroup(bar_plugin_); 90 const PluginGroup* bar_group = plugin_list_.GetPluginGroup(bar_plugin_);
98 EXPECT_FALSE(bar_group->Enabled()); 91 EXPECT_FALSE(bar_group->Enabled());
99 } 92 }
100 93
101 TEST_F(PluginListTest, EnableDisablePlugin) {
102 // Disable "foo" plugin.
103 plugin_list_.DisablePlugin(foo_plugin_.path);
104 std::vector<WebPluginInfo> plugins;
105 plugin_list_.GetEnabledPlugins(false, &plugins);
106 EXPECT_FALSE(Contains(plugins, foo_plugin_, false));
107 const PluginGroup* foo_group = plugin_list_.GetPluginGroup(foo_plugin_);
108 EXPECT_FALSE(foo_group->Enabled());
109 // Enable "bar" plugin.
110 plugin_list_.EnablePlugin(bar_plugin_.path);
111 plugin_list_.GetEnabledPlugins(false, &plugins);
112 EXPECT_TRUE(Contains(plugins, bar_plugin_, false));
113 const PluginGroup* bar_group = plugin_list_.GetPluginGroup(bar_plugin_);
114 EXPECT_TRUE(bar_group->Enabled());
115 }
116
117 TEST_F(PluginListTest, EnableGroup) {
118 // Disable "foo" plugin group.
119 const PluginGroup* foo_group = plugin_list_.GetPluginGroup(foo_plugin_);
120 EXPECT_TRUE(foo_group->Enabled());
121 EXPECT_TRUE(plugin_list_.EnableGroup(false, foo_group->GetGroupName()));
122 EXPECT_FALSE(foo_group->Enabled());
123 std::vector<WebPluginInfo> plugins;
124 plugin_list_.GetEnabledPlugins(false, &plugins);
125 EXPECT_EQ(0u, plugins.size());
126 EXPECT_FALSE(Contains(plugins, foo_plugin_, false));
127 // Enable "bar" plugin group.
128 const PluginGroup* bar_group = plugin_list_.GetPluginGroup(bar_plugin_);
129 EXPECT_FALSE(bar_group->Enabled());
130 plugin_list_.EnableGroup(true, bar_group->GetGroupName());
131 EXPECT_TRUE(bar_group->Enabled());
132 plugin_list_.GetEnabledPlugins(false, &plugins);
133 EXPECT_TRUE(Contains(plugins, bar_plugin_, false));
134 }
135
136 TEST_F(PluginListTest, EmptyGroup) { 94 TEST_F(PluginListTest, EmptyGroup) {
137 std::vector<PluginGroup> groups; 95 std::vector<PluginGroup> groups;
138 plugin_list_.GetPluginGroups(false, &groups); 96 plugin_list_.GetPluginGroups(false, &groups);
139 for (size_t i = 0; i < groups.size(); ++i) 97 for (size_t i = 0; i < groups.size(); ++i)
140 EXPECT_GE(1U, groups[i].web_plugins_info().size()); 98 EXPECT_GE(1U, groups[i].web_plugins_info().size());
141 } 99 }
142 100
143 TEST_F(PluginListTest, DisableOutdated) { 101 TEST_F(PluginListTest, DisableOutdated) {
144 VersionRangeDefinition version_range[] = { 102 VersionRangeDefinition version_range[] = {
145 { "0", "4", "3.0.44" }, 103 { "0", "4", "3.0.44" },
146 { "4", "5", "" } 104 { "4", "5", "" }
147 }; 105 };
148 WebPluginInfo plugin_3043(ASCIIToUTF16("MyPlugin"), 106 WebPluginInfo plugin_3043(ASCIIToUTF16("MyPlugin"),
149 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.43")), 107 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.43")),
150 ASCIIToUTF16("3.0.43"), 108 ASCIIToUTF16("3.0.43"),
151 ASCIIToUTF16("MyPlugin version 3.0.43")); 109 ASCIIToUTF16("MyPlugin version 3.0.43"));
152 WebPluginInfo plugin_3045(ASCIIToUTF16("MyPlugin"), 110 WebPluginInfo plugin_3045(ASCIIToUTF16("MyPlugin"),
153 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.45")), 111 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.45")),
154 ASCIIToUTF16("3.0.45"), 112 ASCIIToUTF16("3.0.45"),
155 ASCIIToUTF16("MyPlugin version 3.0.45")); 113 ASCIIToUTF16("MyPlugin version 3.0.45"));
156 plugin_list_.ClearPluginsToLoad(); 114 plugin_list_.ClearPluginsToLoad();
157 plugin_list_.AddPluginToLoad(plugin_3043); 115 plugin_list_.AddPluginToLoad(plugin_3043);
158 plugin_list_.AddPluginToLoad(plugin_3045); 116 plugin_list_.AddPluginToLoad(plugin_3045);
159 // Enfore the load to run. 117 // Enfore the load to run.
118 plugin_list_.RefreshPlugins();
160 std::vector<WebPluginInfo> plugins; 119 std::vector<WebPluginInfo> plugins;
161 plugin_list_.GetPlugins(true, &plugins); 120 plugin_list_.GetPlugins(&plugins);
162 PluginGroup* group_3043 = 121 PluginGroup* group_3043 =
163 const_cast<PluginGroup*>(plugin_list_.GetPluginGroup(plugin_3043)); 122 const_cast<PluginGroup*>(plugin_list_.GetPluginGroup(plugin_3043));
164 const PluginGroup* group_3045 = plugin_list_.GetPluginGroup(plugin_3045); 123 const PluginGroup* group_3045 = plugin_list_.GetPluginGroup(plugin_3045);
165 EXPECT_EQ(group_3043, group_3045); 124 EXPECT_EQ(group_3043, group_3045);
166 group_3043->version_ranges_.push_back(VersionRange(version_range[0])); 125 group_3043->version_ranges_.push_back(VersionRange(version_range[0]));
167 group_3043->version_ranges_.push_back(VersionRange(version_range[1])); 126 group_3043->version_ranges_.push_back(VersionRange(version_range[1]));
168 EXPECT_EQ(plugin_3043.desc, group_3043->description()); 127 EXPECT_EQ(plugin_3043.desc, group_3043->description());
169 EXPECT_TRUE(group_3043->IsVulnerable()); 128 EXPECT_TRUE(group_3043->IsVulnerable());
170 group_3043->DisableOutdatedPlugins(); 129 group_3043->DisableOutdatedPlugins();
171 EXPECT_EQ(plugin_3045.desc, group_3043->description()); 130 EXPECT_EQ(plugin_3045.desc, group_3043->description());
172 EXPECT_FALSE(group_3043->IsVulnerable()); 131 EXPECT_FALSE(group_3043->IsVulnerable());
173 } 132 }
174 133
175 TEST_F(PluginListTest, BadPluginDescription) { 134 TEST_F(PluginListTest, BadPluginDescription) {
176 WebPluginInfo plugin_3043(ASCIIToUTF16(""), 135 WebPluginInfo plugin_3043(ASCIIToUTF16(""),
177 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.43")), 136 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.43")),
178 ASCIIToUTF16(""), 137 ASCIIToUTF16(""),
179 ASCIIToUTF16("")); 138 ASCIIToUTF16(""));
180 // Simulate loading of the plugins. 139 // Simulate loading of the plugins.
181 plugin_list_.ClearPluginsToLoad(); 140 plugin_list_.ClearPluginsToLoad();
182 plugin_list_.AddPluginToLoad(plugin_3043); 141 plugin_list_.AddPluginToLoad(plugin_3043);
183 // Now we should have them in the state we specified above. 142 // Now we should have them in the state we specified above.
143 plugin_list_.RefreshPlugins();
184 std::vector<WebPluginInfo> plugins; 144 std::vector<WebPluginInfo> plugins;
185 plugin_list_.GetPlugins(true, &plugins); 145 plugin_list_.GetPlugins(&plugins);
186 ASSERT_TRUE(Contains(plugins, plugin_3043, true)); 146 ASSERT_TRUE(Contains(plugins, plugin_3043, true));
187 } 147 }
188 148
189 TEST_F(PluginListTest, DisableAndEnableBeforeLoad) { 149 TEST_F(PluginListTest, DisableAndEnableBeforeLoad) {
190 WebPluginInfo plugin_3043(ASCIIToUTF16("MyPlugin"), 150 WebPluginInfo plugin_3043(ASCIIToUTF16("MyPlugin"),
191 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.43")), 151 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.43")),
192 ASCIIToUTF16("3.0.43"), 152 ASCIIToUTF16("3.0.43"),
193 ASCIIToUTF16("MyPlugin version 3.0.43")); 153 ASCIIToUTF16("MyPlugin version 3.0.43"));
194 WebPluginInfo plugin_3045(ASCIIToUTF16("MyPlugin"), 154 WebPluginInfo plugin_3045(ASCIIToUTF16("MyPlugin"),
195 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.45")), 155 FilePath(FILE_PATH_LITERAL("/myplugin.3.0.45")),
196 ASCIIToUTF16("3.0.45"), 156 ASCIIToUTF16("3.0.45"),
197 ASCIIToUTF16("MyPlugin version 3.0.45")); 157 ASCIIToUTF16("MyPlugin version 3.0.45"));
198 // Disable the first one and disable and then enable the second one. 158 // Disable the first one and disable and then enable the second one.
199 EXPECT_TRUE(plugin_list_.DisablePlugin(plugin_3043.path)); 159 EXPECT_TRUE(plugin_list_.DisablePlugin(plugin_3043.path));
200 EXPECT_TRUE(plugin_list_.DisablePlugin(plugin_3045.path)); 160 EXPECT_TRUE(plugin_list_.DisablePlugin(plugin_3045.path));
201 EXPECT_TRUE(plugin_list_.EnablePlugin(plugin_3045.path)); 161 EXPECT_TRUE(plugin_list_.EnablePlugin(plugin_3045.path));
202 // Simulate loading of the plugins. 162 // Simulate loading of the plugins.
203 plugin_list_.ClearPluginsToLoad(); 163 plugin_list_.ClearPluginsToLoad();
204 plugin_list_.AddPluginToLoad(plugin_3043); 164 plugin_list_.AddPluginToLoad(plugin_3043);
205 plugin_list_.AddPluginToLoad(plugin_3045); 165 plugin_list_.AddPluginToLoad(plugin_3045);
206 // Now we should have them in the state we specified above. 166 // Now we should have them in the state we specified above.
167 plugin_list_.RefreshPlugins();
207 std::vector<WebPluginInfo> plugins; 168 std::vector<WebPluginInfo> plugins;
208 plugin_list_.GetPlugins(true, &plugins); 169 plugin_list_.GetPlugins(&plugins);
209 plugin_3043.enabled = WebPluginInfo::USER_DISABLED_POLICY_UNMANAGED; 170 plugin_3043.enabled = WebPluginInfo::USER_DISABLED_POLICY_UNMANAGED;
210 ASSERT_TRUE(Contains(plugins, plugin_3043, true)); 171 ASSERT_TRUE(Contains(plugins, plugin_3043, true));
211 ASSERT_TRUE(Contains(plugins, plugin_3045, true)); 172 ASSERT_TRUE(Contains(plugins, plugin_3045, true));
212 } 173 }
213 174
214 TEST_F(PluginListTest, HardcodedGroups) { 175 TEST_F(PluginListTest, HardcodedGroups) {
215 std::vector<PluginGroup> groups; 176 std::vector<PluginGroup> groups;
216 plugin_list_.GetPluginGroups(true, &groups); 177 plugin_list_.GetPluginGroups(true, &groups);
217 ASSERT_EQ(2u, groups.size()); 178 ASSERT_EQ(2u, groups.size());
218 EXPECT_TRUE(groups[0].Enabled()); 179 EXPECT_TRUE(groups[0].Enabled());
219 EXPECT_EQ(1u, groups[0].web_plugins_info().size()); 180 EXPECT_EQ(1u, groups[0].web_plugins_info().size());
220 EXPECT_TRUE(groups[0].ContainsPlugin(FilePath(kFooPath))); 181 EXPECT_TRUE(groups[0].ContainsPlugin(FilePath(kFooPath)));
221 EXPECT_EQ(kFooIdentifier, groups[0].identifier()); 182 EXPECT_EQ(kFooIdentifier, groups[0].identifier());
222 EXPECT_FALSE(groups[1].Enabled()); 183 EXPECT_FALSE(groups[1].Enabled());
223 EXPECT_EQ(1u, groups[1].web_plugins_info().size()); 184 EXPECT_EQ(1u, groups[1].web_plugins_info().size());
224 EXPECT_TRUE(groups[1].ContainsPlugin(FilePath(kBarPath))); 185 EXPECT_TRUE(groups[1].ContainsPlugin(FilePath(kBarPath)));
225 EXPECT_EQ("bar.plugin", groups[1].identifier()); 186 EXPECT_EQ("bar.plugin", groups[1].identifier());
226 } 187 }
227 188
228 TEST_F(PluginListTest, DisableBeforeLoad) { 189 TEST_F(PluginListTest, DisableBeforeLoad) {
229 // Test that a plugin group that was disabled before plugins are loaded stays 190 // Test that a plugin group that was disabled before plugins are loaded stays
230 // disabled afterwards. 191 // disabled afterwards.
231 192
232 EXPECT_TRUE(plugin_list_.EnableGroup(false, ASCIIToUTF16(kFooGroupName))); 193 EXPECT_TRUE(plugin_list_.EnableGroup(false, ASCIIToUTF16(kFooGroupName)));
233 194
195 plugin_list_.RefreshPlugins();
234 std::vector<WebPluginInfo> plugins; 196 std::vector<WebPluginInfo> plugins;
235 plugin_list_.GetPlugins(true, &plugins); 197 plugin_list_.GetPlugins(&plugins);
236 ASSERT_EQ(2u, plugins.size()); 198 ASSERT_EQ(2u, plugins.size());
237 ASSERT_EQ(WebPluginInfo::USER_DISABLED_POLICY_UNMANAGED, plugins[0].enabled); 199 ASSERT_EQ(WebPluginInfo::USER_DISABLED_POLICY_UNMANAGED, plugins[0].enabled);
238 } 200 }
239 201
240 } // namespace npapi 202 } // namespace npapi
241 } // namespace webkit 203 } // namespace webkit
OLDNEW
« no previous file with comments | « webkit/plugins/npapi/plugin_list.cc ('k') | webkit/support/webkit_support.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698