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

Side by Side Diff: content/browser/plugin_loader_posix_unittest.cc

Issue 8440042: Send the index in the canonical list over IPC when using the OOP plugin loader. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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
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 "content/browser/plugin_loader_posix.h" 5 #include "content/browser/plugin_loader_posix.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 27 matching lines...) Expand all
38 } 38 }
39 39
40 std::vector<webkit::WebPluginInfo>* internal_plugins() { 40 std::vector<webkit::WebPluginInfo>* internal_plugins() {
41 return &internal_plugins_; 41 return &internal_plugins_;
42 } 42 }
43 43
44 void RealLoadPluginsInternal() { 44 void RealLoadPluginsInternal() {
45 PluginLoaderPosix::LoadPluginsInternal(); 45 PluginLoaderPosix::LoadPluginsInternal();
46 } 46 }
47 47
48 void TestOnPluginLoaded(const webkit::WebPluginInfo& plugin) { 48 void TestOnPluginLoaded(size_t index, const webkit::WebPluginInfo& plugin) {
49 OnPluginLoaded(plugin); 49 OnPluginLoaded(index, plugin);
50 } 50 }
51 51
52 void TestOnPluginLoadFailed(const FilePath& path) { 52 void TestOnPluginLoadFailed(size_t index, const FilePath& path) {
53 OnPluginLoadFailed(path); 53 OnPluginLoadFailed(index, path);
54 } 54 }
55 }; 55 };
56 56
57 void VerifyCallback(int* run_count, const std::vector<webkit::WebPluginInfo>&) { 57 void VerifyCallback(int* run_count, const std::vector<webkit::WebPluginInfo>&) {
58 ++(*run_count); 58 ++(*run_count);
59 } 59 }
60 60
61 class PluginLoaderPosixTest : public testing::Test { 61 class PluginLoaderPosixTest : public testing::Test {
62 public: 62 public:
63 PluginLoaderPosixTest() 63 PluginLoaderPosixTest()
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 EXPECT_EQ(2u, plugin_loader()->number_of_pending_callbacks()); 108 EXPECT_EQ(2u, plugin_loader()->number_of_pending_callbacks());
109 109
110 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1); 110 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1);
111 message_loop()->RunAllPending(); 111 message_loop()->RunAllPending();
112 112
113 plugin_loader()->canonical_list()->clear(); 113 plugin_loader()->canonical_list()->clear();
114 plugin_loader()->canonical_list()->push_back(plugin1_.path); 114 plugin_loader()->canonical_list()->push_back(plugin1_.path);
115 115
116 EXPECT_EQ(0, did_callback); 116 EXPECT_EQ(0, did_callback);
117 117
118 plugin_loader()->TestOnPluginLoaded(plugin1_); 118 plugin_loader()->TestOnPluginLoaded(0, plugin1_);
119 message_loop()->RunAllPending(); 119 message_loop()->RunAllPending();
120 120
121 EXPECT_EQ(2, did_callback); 121 EXPECT_EQ(2, did_callback);
122 EXPECT_EQ(0u, plugin_loader()->number_of_pending_callbacks()); 122 EXPECT_EQ(0u, plugin_loader()->number_of_pending_callbacks());
123 } 123 }
124 124
125 TEST_F(PluginLoaderPosixTest, ThreeSuccessfulLoads) { 125 TEST_F(PluginLoaderPosixTest, ThreeSuccessfulLoads) {
126 int did_callback = 0; 126 int did_callback = 0;
127 PluginService::GetPluginsCallback callback = 127 PluginService::GetPluginsCallback callback =
128 base::Bind(&VerifyCallback, base::Unretained(&did_callback)); 128 base::Bind(&VerifyCallback, base::Unretained(&did_callback));
129 129
130 plugin_loader()->LoadPlugins(message_loop()->message_loop_proxy(), callback); 130 plugin_loader()->LoadPlugins(message_loop()->message_loop_proxy(), callback);
131 131
132 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1); 132 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1);
133 message_loop()->RunAllPending(); 133 message_loop()->RunAllPending();
134 134
135 AddThreePlugins(); 135 AddThreePlugins();
136 136
137 EXPECT_EQ(0u, plugin_loader()->next_load_index()); 137 EXPECT_EQ(0u, plugin_loader()->next_load_index());
138 138
139 const std::vector<webkit::WebPluginInfo>& plugins( 139 const std::vector<webkit::WebPluginInfo>& plugins(
140 plugin_loader()->loaded_plugins()); 140 plugin_loader()->loaded_plugins());
141 141
142 plugin_loader()->TestOnPluginLoaded(plugin1_); 142 plugin_loader()->TestOnPluginLoaded(0, plugin1_);
143 EXPECT_EQ(1u, plugin_loader()->next_load_index()); 143 EXPECT_EQ(1u, plugin_loader()->next_load_index());
144 EXPECT_EQ(1u, plugins.size()); 144 EXPECT_EQ(1u, plugins.size());
145 EXPECT_EQ(plugin1_.name, plugins[0].name); 145 EXPECT_EQ(plugin1_.name, plugins[0].name);
146 146
147 message_loop()->RunAllPending(); 147 message_loop()->RunAllPending();
148 EXPECT_EQ(0, did_callback); 148 EXPECT_EQ(0, did_callback);
149 149
150 plugin_loader()->TestOnPluginLoaded(plugin2_); 150 plugin_loader()->TestOnPluginLoaded(1, plugin2_);
151 EXPECT_EQ(2u, plugin_loader()->next_load_index()); 151 EXPECT_EQ(2u, plugin_loader()->next_load_index());
152 EXPECT_EQ(2u, plugins.size()); 152 EXPECT_EQ(2u, plugins.size());
153 EXPECT_EQ(plugin2_.name, plugins[1].name); 153 EXPECT_EQ(plugin2_.name, plugins[1].name);
154 154
155 message_loop()->RunAllPending(); 155 message_loop()->RunAllPending();
156 EXPECT_EQ(0, did_callback); 156 EXPECT_EQ(0, did_callback);
157 157
158 plugin_loader()->TestOnPluginLoaded(plugin3_); 158 plugin_loader()->TestOnPluginLoaded(2, plugin3_);
159 EXPECT_EQ(3u, plugins.size()); 159 EXPECT_EQ(3u, plugins.size());
160 EXPECT_EQ(plugin3_.name, plugins[2].name); 160 EXPECT_EQ(plugin3_.name, plugins[2].name);
161 161
162 message_loop()->RunAllPending(); 162 message_loop()->RunAllPending();
163 EXPECT_EQ(1, did_callback); 163 EXPECT_EQ(1, did_callback);
164 } 164 }
165 165
166 TEST_F(PluginLoaderPosixTest, TwoFailures) { 166 TEST_F(PluginLoaderPosixTest, TwoFailures) {
167 int did_callback = 0; 167 int did_callback = 0;
168 PluginService::GetPluginsCallback callback = 168 PluginService::GetPluginsCallback callback =
169 base::Bind(&VerifyCallback, base::Unretained(&did_callback)); 169 base::Bind(&VerifyCallback, base::Unretained(&did_callback));
170 170
171 plugin_loader()->LoadPlugins(message_loop()->message_loop_proxy(), callback); 171 plugin_loader()->LoadPlugins(message_loop()->message_loop_proxy(), callback);
172 172
173 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1); 173 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1);
174 message_loop()->RunAllPending(); 174 message_loop()->RunAllPending();
175 175
176 AddThreePlugins(); 176 AddThreePlugins();
177 177
178 EXPECT_EQ(0u, plugin_loader()->next_load_index()); 178 EXPECT_EQ(0u, plugin_loader()->next_load_index());
179 179
180 const std::vector<webkit::WebPluginInfo>& plugins( 180 const std::vector<webkit::WebPluginInfo>& plugins(
181 plugin_loader()->loaded_plugins()); 181 plugin_loader()->loaded_plugins());
182 182
183 plugin_loader()->TestOnPluginLoadFailed(plugin1_.path); 183 plugin_loader()->TestOnPluginLoadFailed(0, plugin1_.path);
184 EXPECT_EQ(1u, plugin_loader()->next_load_index()); 184 EXPECT_EQ(1u, plugin_loader()->next_load_index());
185 EXPECT_EQ(0u, plugins.size()); 185 EXPECT_EQ(0u, plugins.size());
186 186
187 message_loop()->RunAllPending(); 187 message_loop()->RunAllPending();
188 EXPECT_EQ(0, did_callback); 188 EXPECT_EQ(0, did_callback);
189 189
190 plugin_loader()->TestOnPluginLoaded(plugin2_); 190 plugin_loader()->TestOnPluginLoaded(1, plugin2_);
191 EXPECT_EQ(2u, plugin_loader()->next_load_index()); 191 EXPECT_EQ(2u, plugin_loader()->next_load_index());
192 EXPECT_EQ(1u, plugins.size()); 192 EXPECT_EQ(1u, plugins.size());
193 EXPECT_EQ(plugin2_.name, plugins[0].name); 193 EXPECT_EQ(plugin2_.name, plugins[0].name);
194 194
195 message_loop()->RunAllPending(); 195 message_loop()->RunAllPending();
196 EXPECT_EQ(0, did_callback); 196 EXPECT_EQ(0, did_callback);
197 197
198 plugin_loader()->TestOnPluginLoadFailed(plugin3_.path); 198 plugin_loader()->TestOnPluginLoadFailed(2, plugin3_.path);
199 EXPECT_EQ(1u, plugins.size()); 199 EXPECT_EQ(1u, plugins.size());
200 200
201 message_loop()->RunAllPending(); 201 message_loop()->RunAllPending();
202 EXPECT_EQ(1, did_callback); 202 EXPECT_EQ(1, did_callback);
203 } 203 }
204 204
205 TEST_F(PluginLoaderPosixTest, CrashedProcess) { 205 TEST_F(PluginLoaderPosixTest, CrashedProcess) {
206 int did_callback = 0; 206 int did_callback = 0;
207 PluginService::GetPluginsCallback callback = 207 PluginService::GetPluginsCallback callback =
208 base::Bind(&VerifyCallback, base::Unretained(&did_callback)); 208 base::Bind(&VerifyCallback, base::Unretained(&did_callback));
209 209
210 plugin_loader()->LoadPlugins(message_loop()->message_loop_proxy(), callback); 210 plugin_loader()->LoadPlugins(message_loop()->message_loop_proxy(), callback);
211 211
212 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1); 212 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1);
213 message_loop()->RunAllPending(); 213 message_loop()->RunAllPending();
214 214
215 AddThreePlugins(); 215 AddThreePlugins();
216 216
217 EXPECT_EQ(0u, plugin_loader()->next_load_index()); 217 EXPECT_EQ(0u, plugin_loader()->next_load_index());
218 218
219 const std::vector<webkit::WebPluginInfo>& plugins( 219 const std::vector<webkit::WebPluginInfo>& plugins(
220 plugin_loader()->loaded_plugins()); 220 plugin_loader()->loaded_plugins());
221 221
222 plugin_loader()->TestOnPluginLoaded(plugin1_); 222 plugin_loader()->TestOnPluginLoaded(0, plugin1_);
223 EXPECT_EQ(1u, plugin_loader()->next_load_index()); 223 EXPECT_EQ(1u, plugin_loader()->next_load_index());
224 EXPECT_EQ(1u, plugins.size()); 224 EXPECT_EQ(1u, plugins.size());
225 EXPECT_EQ(plugin1_.name, plugins[0].name); 225 EXPECT_EQ(plugin1_.name, plugins[0].name);
226 226
227 message_loop()->RunAllPending(); 227 message_loop()->RunAllPending();
228 EXPECT_EQ(0, did_callback); 228 EXPECT_EQ(0, did_callback);
229 229
230 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1); 230 EXPECT_CALL(*plugin_loader(), LoadPluginsInternal()).Times(1);
231 plugin_loader()->OnProcessCrashed(42); 231 plugin_loader()->OnProcessCrashed(42);
232 EXPECT_EQ(1u, plugin_loader()->canonical_list()->size()); 232 EXPECT_EQ(1u, plugin_loader()->canonical_list()->size());
(...skipping 17 matching lines...) Expand all
250 AddThreePlugins(); 250 AddThreePlugins();
251 251
252 plugin_loader()->internal_plugins()->clear(); 252 plugin_loader()->internal_plugins()->clear();
253 plugin_loader()->internal_plugins()->push_back(plugin2_); 253 plugin_loader()->internal_plugins()->push_back(plugin2_);
254 254
255 EXPECT_EQ(0u, plugin_loader()->next_load_index()); 255 EXPECT_EQ(0u, plugin_loader()->next_load_index());
256 256
257 const std::vector<webkit::WebPluginInfo>& plugins( 257 const std::vector<webkit::WebPluginInfo>& plugins(
258 plugin_loader()->loaded_plugins()); 258 plugin_loader()->loaded_plugins());
259 259
260 plugin_loader()->TestOnPluginLoaded(plugin1_); 260 plugin_loader()->TestOnPluginLoaded(0, plugin1_);
261 EXPECT_EQ(1u, plugin_loader()->next_load_index()); 261 EXPECT_EQ(1u, plugin_loader()->next_load_index());
262 EXPECT_EQ(1u, plugins.size()); 262 EXPECT_EQ(1u, plugins.size());
263 EXPECT_EQ(plugin1_.name, plugins[0].name); 263 EXPECT_EQ(plugin1_.name, plugins[0].name);
264 264
265 message_loop()->RunAllPending(); 265 message_loop()->RunAllPending();
266 EXPECT_EQ(0, did_callback); 266 EXPECT_EQ(0, did_callback);
267 267
268 // Internal plugins can fail to load if they're built-in with manual 268 // Internal plugins can fail to load if they're built-in with manual
269 // entrypoint functions. 269 // entrypoint functions.
270 plugin_loader()->TestOnPluginLoadFailed(plugin2_.path); 270 plugin_loader()->TestOnPluginLoadFailed(1, plugin2_.path);
271 EXPECT_EQ(2u, plugin_loader()->next_load_index()); 271 EXPECT_EQ(2u, plugin_loader()->next_load_index());
272 EXPECT_EQ(2u, plugins.size()); 272 EXPECT_EQ(2u, plugins.size());
273 EXPECT_EQ(plugin2_.name, plugins[1].name); 273 EXPECT_EQ(plugin2_.name, plugins[1].name);
274 EXPECT_EQ(0u, plugin_loader()->internal_plugins()->size()); 274 EXPECT_EQ(0u, plugin_loader()->internal_plugins()->size());
275 275
276 message_loop()->RunAllPending(); 276 message_loop()->RunAllPending();
277 EXPECT_EQ(0, did_callback); 277 EXPECT_EQ(0, did_callback);
278 278
279 plugin_loader()->TestOnPluginLoaded(plugin3_); 279 plugin_loader()->TestOnPluginLoaded(2, plugin3_);
280 EXPECT_EQ(3u, plugins.size()); 280 EXPECT_EQ(3u, plugins.size());
281 EXPECT_EQ(plugin3_.name, plugins[2].name); 281 EXPECT_EQ(plugin3_.name, plugins[2].name);
282 282
283 message_loop()->RunAllPending(); 283 message_loop()->RunAllPending();
284 EXPECT_EQ(1, did_callback); 284 EXPECT_EQ(1, did_callback);
285 } 285 }
286 286
287 TEST_F(PluginLoaderPosixTest, AllCrashed) { 287 TEST_F(PluginLoaderPosixTest, AllCrashed) {
288 int did_callback = 0; 288 int did_callback = 0;
289 PluginService::GetPluginsCallback callback = 289 PluginService::GetPluginsCallback callback =
(...skipping 19 matching lines...) Expand all
309 &MockPluginLoaderPosix::RealLoadPluginsInternal)); 309 &MockPluginLoaderPosix::RealLoadPluginsInternal));
310 plugin_loader()->OnProcessCrashed(42); 310 plugin_loader()->OnProcessCrashed(42);
311 plugin_loader()->OnProcessCrashed(42); 311 plugin_loader()->OnProcessCrashed(42);
312 plugin_loader()->OnProcessCrashed(42); 312 plugin_loader()->OnProcessCrashed(42);
313 313
314 message_loop()->RunAllPending(); 314 message_loop()->RunAllPending();
315 EXPECT_EQ(1, did_callback); 315 EXPECT_EQ(1, did_callback);
316 316
317 EXPECT_EQ(0u, plugin_loader()->loaded_plugins().size()); 317 EXPECT_EQ(0u, plugin_loader()->loaded_plugins().size());
318 } 318 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698