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

Side by Side Diff: chrome/browser/background/background_application_list_model_unittest.cc

Issue 709813004: Remove the deprecated function ExtensionService::extensions(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed thestig@'s comments. Created 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 // TODO(rickcam): Bug 73183: Add unit tests for image loading 5 // TODO(rickcam): Bug 73183: Add unit tests for image loading
6 6
7 #include <cstdlib> 7 #include <cstdlib>
8 #include <set> 8 #include <set>
9 9
10 #include "chrome/browser/background/background_application_list_model.h" 10 #include "chrome/browser/background/background_application_list_model.h"
11 11
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/message_loop/message_loop.h" 15 #include "base/message_loop/message_loop.h"
16 #include "base/stl_util.h" 16 #include "base/stl_util.h"
17 #include "chrome/browser/extensions/extension_service.h" 17 #include "chrome/browser/extensions/extension_service.h"
18 #include "chrome/browser/extensions/extension_service_test_base.h" 18 #include "chrome/browser/extensions/extension_service_test_base.h"
19 #include "chrome/browser/extensions/permissions_updater.h" 19 #include "chrome/browser/extensions/permissions_updater.h"
20 #include "chrome/test/base/testing_profile.h" 20 #include "chrome/test/base/testing_profile.h"
21 #include "content/public/browser/notification_registrar.h" 21 #include "content/public/browser/notification_registrar.h"
22 #include "content/public/browser/notification_types.h" 22 #include "content/public/browser/notification_types.h"
23 #include "extensions/browser/extension_prefs.h" 23 #include "extensions/browser/extension_prefs.h"
24 #include "extensions/browser/extension_system.h" 24 #include "extensions/browser/extension_registry.h"
25 #include "extensions/browser/uninstall_reason.h" 25 #include "extensions/browser/uninstall_reason.h"
26 #include "extensions/common/extension.h" 26 #include "extensions/common/extension.h"
27 #include "extensions/common/manifest_constants.h" 27 #include "extensions/common/manifest_constants.h"
28 #include "extensions/common/permissions/api_permission.h" 28 #include "extensions/common/permissions/api_permission.h"
29 #include "extensions/common/permissions/permission_set.h" 29 #include "extensions/common/permissions/permission_set.h"
30 #include "extensions/common/permissions/permissions_data.h" 30 #include "extensions/common/permissions/permissions_data.h"
31 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
32 32
33 // This value is used to seed the PRNG at the beginning of a sequence of 33 // This value is used to seed the PRNG at the beginning of a sequence of
34 // operations to produce a repeatable sequence. 34 // operations to produce a repeatable sequence.
35 #define RANDOM_SEED (0x33F7A7A7) 35 #define RANDOM_SEED (0x33F7A7A7)
36 36
37 using extensions::APIPermission; 37 using extensions::APIPermission;
38 using extensions::Extension; 38 using extensions::Extension;
39 using extensions::ExtensionRegistry;
39 40
40 // For ExtensionService interface when it requires a path that is not used. 41 // For ExtensionService interface when it requires a path that is not used.
41 base::FilePath bogus_file_pathname(const std::string& name) { 42 base::FilePath bogus_file_pathname(const std::string& name) {
42 return base::FilePath(FILE_PATH_LITERAL("//foobar_nonexistent")) 43 return base::FilePath(FILE_PATH_LITERAL("//foobar_nonexistent"))
43 .AppendASCII(name); 44 .AppendASCII(name);
44 } 45 }
45 46
46 class BackgroundApplicationListModelTest 47 class BackgroundApplicationListModelTest
47 : public extensions::ExtensionServiceTestBase { 48 : public extensions::ExtensionServiceTestBase {
48 public: 49 public:
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // http://crbug.com/165458 178 // http://crbug.com/165458
178 #if defined(OS_MACOSX) || defined(OS_LINUX) 179 #if defined(OS_MACOSX) || defined(OS_LINUX)
179 #define MAYBE_ExplicitTest DISABLED_ExplicitTest 180 #define MAYBE_ExplicitTest DISABLED_ExplicitTest
180 #else 181 #else
181 #define MAYBE_ExplicitTest ExplicitTest 182 #define MAYBE_ExplicitTest ExplicitTest
182 #endif 183 #endif
183 // With minimal test logic, verifies behavior over an explicit set of 184 // With minimal test logic, verifies behavior over an explicit set of
184 // extensions, of which some are Background Apps and others are not. 185 // extensions, of which some are Background Apps and others are not.
185 TEST_F(BackgroundApplicationListModelTest, MAYBE_ExplicitTest) { 186 TEST_F(BackgroundApplicationListModelTest, MAYBE_ExplicitTest) {
186 InitializeAndLoadEmptyExtensionService(); 187 InitializeAndLoadEmptyExtensionService();
187 ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> 188 ASSERT_TRUE(service()->is_ready());
188 extension_service(); 189 ASSERT_TRUE(registry()->enabled_extensions().is_empty());
189 ASSERT_TRUE(service);
190 ASSERT_TRUE(service->is_ready());
191 ASSERT_TRUE(service->extensions());
192 ASSERT_TRUE(service->extensions()->is_empty());
193 scoped_ptr<BackgroundApplicationListModel> model( 190 scoped_ptr<BackgroundApplicationListModel> model(
194 new BackgroundApplicationListModel(profile_.get())); 191 new BackgroundApplicationListModel(profile_.get()));
195 ASSERT_EQ(0U, model->size()); 192 ASSERT_EQ(0U, model->size());
196 193
197 scoped_refptr<Extension> ext1 = CreateExtension("alpha", false); 194 scoped_refptr<Extension> ext1 = CreateExtension("alpha", false);
198 scoped_refptr<Extension> ext2 = CreateExtension("bravo", false); 195 scoped_refptr<Extension> ext2 = CreateExtension("bravo", false);
199 scoped_refptr<Extension> ext3 = CreateExtension("charlie", false); 196 scoped_refptr<Extension> ext3 = CreateExtension("charlie", false);
200 scoped_refptr<Extension> bgapp1 = CreateExtension("delta", true); 197 scoped_refptr<Extension> bgapp1 = CreateExtension("delta", true);
201 scoped_refptr<Extension> bgapp2 = CreateExtension("echo", true); 198 scoped_refptr<Extension> bgapp2 = CreateExtension("echo", true);
202 ASSERT_TRUE(service->extensions() != NULL); 199 ASSERT_EQ(0U, registry()->enabled_extensions().size());
203 ASSERT_EQ(0U, service->extensions()->size());
204 ASSERT_EQ(0U, model->size()); 200 ASSERT_EQ(0U, model->size());
205 201
206 // Add alternating Extensions and Background Apps 202 // Add alternating Extensions and Background Apps
207 ASSERT_FALSE(IsBackgroundApp(*ext1.get())); 203 ASSERT_FALSE(IsBackgroundApp(*ext1.get()));
208 service->AddExtension(ext1.get()); 204 service()->AddExtension(ext1.get());
209 ASSERT_EQ(1U, service->extensions()->size()); 205 ASSERT_EQ(1U, registry()->enabled_extensions().size());
210 ASSERT_EQ(0U, model->size()); 206 ASSERT_EQ(0U, model->size());
211 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); 207 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get()));
212 service->AddExtension(bgapp1.get()); 208 service()->AddExtension(bgapp1.get());
213 ASSERT_EQ(2U, service->extensions()->size()); 209 ASSERT_EQ(2U, registry()->enabled_extensions().size());
214 ASSERT_EQ(1U, model->size()); 210 ASSERT_EQ(1U, model->size());
215 ASSERT_FALSE(IsBackgroundApp(*ext2.get())); 211 ASSERT_FALSE(IsBackgroundApp(*ext2.get()));
216 service->AddExtension(ext2.get()); 212 service()->AddExtension(ext2.get());
217 ASSERT_EQ(3U, service->extensions()->size()); 213 ASSERT_EQ(3U, registry()->enabled_extensions().size());
218 ASSERT_EQ(1U, model->size()); 214 ASSERT_EQ(1U, model->size());
219 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); 215 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get()));
220 service->AddExtension(bgapp2.get()); 216 service()->AddExtension(bgapp2.get());
221 ASSERT_EQ(4U, service->extensions()->size()); 217 ASSERT_EQ(4U, registry()->enabled_extensions().size());
222 ASSERT_EQ(2U, model->size()); 218 ASSERT_EQ(2U, model->size());
223 ASSERT_FALSE(IsBackgroundApp(*ext3.get())); 219 ASSERT_FALSE(IsBackgroundApp(*ext3.get()));
224 service->AddExtension(ext3.get()); 220 service()->AddExtension(ext3.get());
225 ASSERT_EQ(5U, service->extensions()->size()); 221 ASSERT_EQ(5U, registry()->enabled_extensions().size());
226 ASSERT_EQ(2U, model->size()); 222 ASSERT_EQ(2U, model->size());
227 223
228 // Remove in FIFO order. 224 // Remove in FIFO order.
229 ASSERT_FALSE(IsBackgroundApp(*ext1.get())); 225 ASSERT_FALSE(IsBackgroundApp(*ext1.get()));
230 service->UninstallExtension(ext1->id(), 226 service()->UninstallExtension(ext1->id(),
231 extensions::UNINSTALL_REASON_FOR_TESTING, 227 extensions::UNINSTALL_REASON_FOR_TESTING,
232 base::Bind(&base::DoNothing), 228 base::Bind(&base::DoNothing), NULL);
233 NULL); 229 ASSERT_EQ(4U, registry()->enabled_extensions().size());
234 ASSERT_EQ(4U, service->extensions()->size());
235 ASSERT_EQ(2U, model->size()); 230 ASSERT_EQ(2U, model->size());
236 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); 231 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get()));
237 service->UninstallExtension(bgapp1->id(), 232 service()->UninstallExtension(bgapp1->id(),
238 extensions::UNINSTALL_REASON_FOR_TESTING, 233 extensions::UNINSTALL_REASON_FOR_TESTING,
239 base::Bind(&base::DoNothing), 234 base::Bind(&base::DoNothing), NULL);
240 NULL); 235 ASSERT_EQ(3U, registry()->enabled_extensions().size());
241 ASSERT_EQ(3U, service->extensions()->size());
242 ASSERT_EQ(1U, model->size()); 236 ASSERT_EQ(1U, model->size());
243 ASSERT_FALSE(IsBackgroundApp(*ext2.get())); 237 ASSERT_FALSE(IsBackgroundApp(*ext2.get()));
244 service->UninstallExtension(ext2->id(), 238 service()->UninstallExtension(ext2->id(),
245 extensions::UNINSTALL_REASON_FOR_TESTING, 239 extensions::UNINSTALL_REASON_FOR_TESTING,
246 base::Bind(&base::DoNothing), 240 base::Bind(&base::DoNothing), NULL);
247 NULL); 241 ASSERT_EQ(2U, registry()->enabled_extensions().size());
248 ASSERT_EQ(2U, service->extensions()->size());
249 ASSERT_EQ(1U, model->size()); 242 ASSERT_EQ(1U, model->size());
250 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); 243 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get()));
251 service->UninstallExtension(bgapp2->id(), 244 service()->UninstallExtension(bgapp2->id(),
252 extensions::UNINSTALL_REASON_FOR_TESTING, 245 extensions::UNINSTALL_REASON_FOR_TESTING,
253 base::Bind(&base::DoNothing), 246 base::Bind(&base::DoNothing), NULL);
254 NULL); 247 ASSERT_EQ(1U, registry()->enabled_extensions().size());
255 ASSERT_EQ(1U, service->extensions()->size());
256 ASSERT_EQ(0U, model->size()); 248 ASSERT_EQ(0U, model->size());
257 ASSERT_FALSE(IsBackgroundApp(*ext3.get())); 249 ASSERT_FALSE(IsBackgroundApp(*ext3.get()));
258 service->UninstallExtension(ext3->id(), 250 service()->UninstallExtension(ext3->id(),
259 extensions::UNINSTALL_REASON_FOR_TESTING, 251 extensions::UNINSTALL_REASON_FOR_TESTING,
260 base::Bind(&base::DoNothing), 252 base::Bind(&base::DoNothing), NULL);
261 NULL); 253 ASSERT_EQ(0U, registry()->enabled_extensions().size());
262 ASSERT_EQ(0U, service->extensions()->size());
263 ASSERT_EQ(0U, model->size()); 254 ASSERT_EQ(0U, model->size());
264 } 255 }
265 256
266 // Verifies that pushMessaging also triggers background detection, except 257 // Verifies that pushMessaging also triggers background detection, except
267 // when extension is in a whitelist. 258 // when extension is in a whitelist.
268 TEST_F(BackgroundApplicationListModelTest, PushMessagingTest) { 259 TEST_F(BackgroundApplicationListModelTest, PushMessagingTest) {
269 InitializeAndLoadEmptyExtensionService(); 260 InitializeAndLoadEmptyExtensionService();
270 ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> 261 ASSERT_TRUE(service()->is_ready());
271 extension_service(); 262 ASSERT_TRUE(registry()->enabled_extensions().is_empty());
272 ASSERT_TRUE(service);
273 ASSERT_TRUE(service->is_ready());
274 ASSERT_TRUE(service->extensions());
275 ASSERT_TRUE(service->extensions()->is_empty());
276 scoped_ptr<BackgroundApplicationListModel> model( 263 scoped_ptr<BackgroundApplicationListModel> model(
277 new BackgroundApplicationListModel(profile_.get())); 264 new BackgroundApplicationListModel(profile_.get()));
278 ASSERT_EQ(0U, model->size()); 265 ASSERT_EQ(0U, model->size());
279 266
280 scoped_refptr<Extension> ext1 = CreateExtension("alpha", false); 267 scoped_refptr<Extension> ext1 = CreateExtension("alpha", false);
281 scoped_refptr<Extension> ext2 = 268 scoped_refptr<Extension> ext2 =
282 CreateExtensionBase("charlie", false, PUSH_MESSAGING_BUT_NOT_BACKGROUND); 269 CreateExtensionBase("charlie", false, PUSH_MESSAGING_BUT_NOT_BACKGROUND);
283 scoped_refptr<Extension> bgapp1 = 270 scoped_refptr<Extension> bgapp1 =
284 CreateExtensionBase("bravo", false, PUSH_MESSAGING_PERMISSION); 271 CreateExtensionBase("bravo", false, PUSH_MESSAGING_PERMISSION);
285 scoped_refptr<Extension> bgapp2 = 272 scoped_refptr<Extension> bgapp2 =
286 CreateExtensionBase("delta", true, PUSH_MESSAGING_PERMISSION); 273 CreateExtensionBase("delta", true, PUSH_MESSAGING_PERMISSION);
287 scoped_refptr<Extension> bgapp3 = 274 scoped_refptr<Extension> bgapp3 =
288 CreateExtensionBase("echo", true, PUSH_MESSAGING_BUT_NOT_BACKGROUND); 275 CreateExtensionBase("echo", true, PUSH_MESSAGING_BUT_NOT_BACKGROUND);
289 ASSERT_TRUE(service->extensions() != NULL); 276 ASSERT_EQ(0U, registry()->enabled_extensions().size());
290 ASSERT_EQ(0U, service->extensions()->size());
291 ASSERT_EQ(0U, model->size()); 277 ASSERT_EQ(0U, model->size());
292 278
293 // Add alternating Extensions and Background Apps 279 // Add alternating Extensions and Background Apps
294 ASSERT_FALSE(IsBackgroundApp(*ext1.get())); 280 ASSERT_FALSE(IsBackgroundApp(*ext1.get()));
295 service->AddExtension(ext1.get()); 281 service()->AddExtension(ext1.get());
296 ASSERT_EQ(1U, service->extensions()->size()); 282 ASSERT_EQ(1U, registry()->enabled_extensions().size());
297 ASSERT_EQ(0U, model->size()); 283 ASSERT_EQ(0U, model->size());
298 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); 284 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get()));
299 service->AddExtension(bgapp1.get()); 285 service()->AddExtension(bgapp1.get());
300 ASSERT_EQ(2U, service->extensions()->size()); 286 ASSERT_EQ(2U, registry()->enabled_extensions().size());
301 ASSERT_EQ(1U, model->size()); 287 ASSERT_EQ(1U, model->size());
302 ASSERT_FALSE(IsBackgroundApp(*ext2.get())); 288 ASSERT_FALSE(IsBackgroundApp(*ext2.get()));
303 service->AddExtension(ext2.get()); 289 service()->AddExtension(ext2.get());
304 ASSERT_EQ(3U, service->extensions()->size()); 290 ASSERT_EQ(3U, registry()->enabled_extensions().size());
305 ASSERT_EQ(1U, model->size()); 291 ASSERT_EQ(1U, model->size());
306 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); 292 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get()));
307 service->AddExtension(bgapp2.get()); 293 service()->AddExtension(bgapp2.get());
308 ASSERT_EQ(4U, service->extensions()->size()); 294 ASSERT_EQ(4U, registry()->enabled_extensions().size());
309 ASSERT_EQ(2U, model->size()); 295 ASSERT_EQ(2U, model->size());
310 // Need to remove ext2 because it uses same id as bgapp3. 296 // Need to remove ext2 because it uses same id as bgapp3.
311 ASSERT_FALSE(IsBackgroundApp(*ext2.get())); 297 ASSERT_FALSE(IsBackgroundApp(*ext2.get()));
312 service->UninstallExtension(ext2->id(), 298 service()->UninstallExtension(ext2->id(),
313 extensions::UNINSTALL_REASON_FOR_TESTING, 299 extensions::UNINSTALL_REASON_FOR_TESTING,
314 base::Bind(&base::DoNothing), 300 base::Bind(&base::DoNothing), NULL);
315 NULL); 301 ASSERT_EQ(3U, registry()->enabled_extensions().size());
316 ASSERT_EQ(3U, service->extensions()->size());
317 ASSERT_EQ(2U, model->size()); 302 ASSERT_EQ(2U, model->size());
318 ASSERT_TRUE(IsBackgroundApp(*bgapp3.get())); 303 ASSERT_TRUE(IsBackgroundApp(*bgapp3.get()));
319 service->AddExtension(bgapp3.get()); 304 service()->AddExtension(bgapp3.get());
320 ASSERT_EQ(4U, service->extensions()->size()); 305 ASSERT_EQ(4U, registry()->enabled_extensions().size());
321 ASSERT_EQ(3U, model->size()); 306 ASSERT_EQ(3U, model->size());
322 307
323 // Remove in FIFO order. 308 // Remove in FIFO order.
324 ASSERT_FALSE(IsBackgroundApp(*ext1.get())); 309 ASSERT_FALSE(IsBackgroundApp(*ext1.get()));
325 service->UninstallExtension(ext1->id(), 310 service()->UninstallExtension(ext1->id(),
326 extensions::UNINSTALL_REASON_FOR_TESTING, 311 extensions::UNINSTALL_REASON_FOR_TESTING,
327 base::Bind(&base::DoNothing), 312 base::Bind(&base::DoNothing), NULL);
328 NULL); 313 ASSERT_EQ(3U, registry()->enabled_extensions().size());
329 ASSERT_EQ(3U, service->extensions()->size());
330 ASSERT_EQ(3U, model->size()); 314 ASSERT_EQ(3U, model->size());
331 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); 315 ASSERT_TRUE(IsBackgroundApp(*bgapp1.get()));
332 service->UninstallExtension(bgapp1->id(), 316 service()->UninstallExtension(bgapp1->id(),
333 extensions::UNINSTALL_REASON_FOR_TESTING, 317 extensions::UNINSTALL_REASON_FOR_TESTING,
334 base::Bind(&base::DoNothing), 318 base::Bind(&base::DoNothing), NULL);
335 NULL); 319 ASSERT_EQ(2U, registry()->enabled_extensions().size());
336 ASSERT_EQ(2U, service->extensions()->size());
337 ASSERT_EQ(2U, model->size()); 320 ASSERT_EQ(2U, model->size());
338 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); 321 ASSERT_TRUE(IsBackgroundApp(*bgapp2.get()));
339 service->UninstallExtension(bgapp2->id(), 322 service()->UninstallExtension(bgapp2->id(),
340 extensions::UNINSTALL_REASON_FOR_TESTING, 323 extensions::UNINSTALL_REASON_FOR_TESTING,
341 base::Bind(&base::DoNothing), 324 base::Bind(&base::DoNothing), NULL);
342 NULL); 325 ASSERT_EQ(1U, registry()->enabled_extensions().size());
343 ASSERT_EQ(1U, service->extensions()->size());
344 ASSERT_EQ(1U, model->size()); 326 ASSERT_EQ(1U, model->size());
345 ASSERT_TRUE(IsBackgroundApp(*bgapp3.get())); 327 ASSERT_TRUE(IsBackgroundApp(*bgapp3.get()));
346 service->UninstallExtension(bgapp3->id(), 328 service()->UninstallExtension(bgapp3->id(),
347 extensions::UNINSTALL_REASON_FOR_TESTING, 329 extensions::UNINSTALL_REASON_FOR_TESTING,
348 base::Bind(&base::DoNothing), 330 base::Bind(&base::DoNothing), NULL);
349 NULL); 331 ASSERT_EQ(0U, registry()->enabled_extensions().size());
350 ASSERT_EQ(0U, service->extensions()->size());
351 ASSERT_EQ(0U, model->size()); 332 ASSERT_EQ(0U, model->size());
352 } 333 }
353 334
354 // Verifies that an ephemeral app cannot trigger background mode. 335 // Verifies that an ephemeral app cannot trigger background mode.
355 TEST_F(BackgroundApplicationListModelTest, EphemeralAppTest) { 336 TEST_F(BackgroundApplicationListModelTest, EphemeralAppTest) {
356 InitializeAndLoadEmptyExtensionService(); 337 InitializeAndLoadEmptyExtensionService();
357 ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> 338 ASSERT_TRUE(service()->is_ready());
358 extension_service(); 339 ASSERT_TRUE(registry()->enabled_extensions().is_empty());
359 ASSERT_TRUE(service);
360 ASSERT_TRUE(service->is_ready());
361 ASSERT_TRUE(service->extensions());
362 ASSERT_TRUE(service->extensions()->is_empty());
363 scoped_ptr<BackgroundApplicationListModel> model( 340 scoped_ptr<BackgroundApplicationListModel> model(
364 new BackgroundApplicationListModel(profile_.get())); 341 new BackgroundApplicationListModel(profile_.get()));
365 ASSERT_EQ(0U, model->size()); 342 ASSERT_EQ(0U, model->size());
366 343
367 scoped_refptr<Extension> installed = 344 scoped_refptr<Extension> installed =
368 CreateExtensionBase("installed", false, PUSH_MESSAGING_PERMISSION); 345 CreateExtensionBase("installed", false, PUSH_MESSAGING_PERMISSION);
369 scoped_refptr<Extension> ephemeral = 346 scoped_refptr<Extension> ephemeral =
370 CreateExtensionBase("ephemeral", false, PUSH_MESSAGING_PERMISSION); 347 CreateExtensionBase("ephemeral", false, PUSH_MESSAGING_PERMISSION);
371 scoped_refptr<Extension> background = CreateExtension("background", true); 348 scoped_refptr<Extension> background = CreateExtension("background", true);
372 349
373 // Installed app with push messaging permissions can trigger background mode. 350 // Installed app with push messaging permissions can trigger background mode.
374 ASSERT_TRUE(IsBackgroundApp(*installed.get())); 351 ASSERT_TRUE(IsBackgroundApp(*installed.get()));
375 service->AddExtension(installed.get()); 352 service()->AddExtension(installed.get());
376 ASSERT_EQ(1U, service->extensions()->size()); 353 ASSERT_EQ(1U, registry()->enabled_extensions().size());
377 ASSERT_EQ(1U, model->size()); 354 ASSERT_EQ(1U, model->size());
378 // An ephemeral app with push messaging permissions should not trigger 355 // An ephemeral app with push messaging permissions should not trigger
379 // background mode. 356 // background mode.
380 AddEphemeralApp(ephemeral.get(), service); 357 AddEphemeralApp(ephemeral.get(), service());
381 ASSERT_FALSE(IsBackgroundApp(*ephemeral.get())); 358 ASSERT_FALSE(IsBackgroundApp(*ephemeral.get()));
382 ASSERT_EQ(2U, service->extensions()->size()); 359 ASSERT_EQ(2U, registry()->enabled_extensions().size());
383 ASSERT_EQ(1U, model->size()); 360 ASSERT_EQ(1U, model->size());
384 // An ephemeral app with the background permission should not trigger 361 // An ephemeral app with the background permission should not trigger
385 // background mode. 362 // background mode.
386 AddEphemeralApp(background.get(), service); 363 AddEphemeralApp(background.get(), service());
387 ASSERT_FALSE(IsBackgroundApp(*background.get())); 364 ASSERT_FALSE(IsBackgroundApp(*background.get()));
388 ASSERT_EQ(3U, service->extensions()->size()); 365 ASSERT_EQ(3U, registry()->enabled_extensions().size());
389 ASSERT_EQ(1U, model->size()); 366 ASSERT_EQ(1U, model->size());
390 367
391 // If the ephemeral app becomes promoted to an installed app, it can now 368 // If the ephemeral app becomes promoted to an installed app, it can now
392 // trigger background mode. 369 // trigger background mode.
393 service->PromoteEphemeralApp(ephemeral.get(), false /*from sync*/); 370 service()->PromoteEphemeralApp(ephemeral.get(), false /*from sync*/);
394 ASSERT_TRUE(IsBackgroundApp(*ephemeral.get())); 371 ASSERT_TRUE(IsBackgroundApp(*ephemeral.get()));
395 ASSERT_EQ(3U, service->extensions()->size()); 372 ASSERT_EQ(3U, registry()->enabled_extensions().size());
396 ASSERT_EQ(2U, model->size()); 373 ASSERT_EQ(2U, model->size());
397 } 374 }
398 375
399 // With minimal test logic, verifies behavior with dynamic permissions. 376 // With minimal test logic, verifies behavior with dynamic permissions.
400 TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) { 377 TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) {
401 InitializeAndLoadEmptyExtensionService(); 378 InitializeAndLoadEmptyExtensionService();
402 ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> 379 ASSERT_TRUE(service()->is_ready());
403 extension_service(); 380 ASSERT_TRUE(registry()->enabled_extensions().is_empty());
404 ASSERT_TRUE(service);
405 ASSERT_TRUE(service->is_ready());
406 ASSERT_TRUE(service->extensions());
407 ASSERT_TRUE(service->extensions()->is_empty());
408 scoped_ptr<BackgroundApplicationListModel> model( 381 scoped_ptr<BackgroundApplicationListModel> model(
409 new BackgroundApplicationListModel(profile_.get())); 382 new BackgroundApplicationListModel(profile_.get()));
410 ASSERT_EQ(0U, model->size()); 383 ASSERT_EQ(0U, model->size());
411 384
412 scoped_refptr<Extension> ext = CreateExtension("extension", false); 385 scoped_refptr<Extension> ext = CreateExtension("extension", false);
413 ASSERT_FALSE( 386 ASSERT_FALSE(
414 ext->permissions_data()->HasAPIPermission(APIPermission::kBackground)); 387 ext->permissions_data()->HasAPIPermission(APIPermission::kBackground));
415 scoped_refptr<Extension> bgapp = CreateExtension("application", true); 388 scoped_refptr<Extension> bgapp = CreateExtension("application", true);
416 ASSERT_TRUE( 389 ASSERT_TRUE(
417 bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground)); 390 bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground));
418 ASSERT_TRUE(service->extensions() != NULL); 391 ASSERT_EQ(0U, registry()->enabled_extensions().size());
419 ASSERT_EQ(0U, service->extensions()->size());
420 ASSERT_EQ(0U, model->size()); 392 ASSERT_EQ(0U, model->size());
421 393
422 // Add one (non-background) extension and one background application 394 // Add one (non-background) extension and one background application
423 ASSERT_FALSE(IsBackgroundApp(*ext.get())); 395 ASSERT_FALSE(IsBackgroundApp(*ext.get()));
424 service->AddExtension(ext.get()); 396 service()->AddExtension(ext.get());
425 ASSERT_EQ(1U, service->extensions()->size()); 397 ASSERT_EQ(1U, registry()->enabled_extensions().size());
426 ASSERT_EQ(0U, model->size()); 398 ASSERT_EQ(0U, model->size());
427 ASSERT_TRUE(IsBackgroundApp(*bgapp.get())); 399 ASSERT_TRUE(IsBackgroundApp(*bgapp.get()));
428 service->AddExtension(bgapp.get()); 400 service()->AddExtension(bgapp.get());
429 ASSERT_EQ(2U, service->extensions()->size()); 401 ASSERT_EQ(2U, registry()->enabled_extensions().size());
430 ASSERT_EQ(1U, model->size()); 402 ASSERT_EQ(1U, model->size());
431 403
432 // Change permissions back and forth 404 // Change permissions back and forth
433 AddBackgroundPermission(service, ext.get()); 405 AddBackgroundPermission(service(), ext.get());
434 ASSERT_TRUE( 406 ASSERT_TRUE(
435 ext->permissions_data()->HasAPIPermission(APIPermission::kBackground)); 407 ext->permissions_data()->HasAPIPermission(APIPermission::kBackground));
436 ASSERT_EQ(2U, service->extensions()->size()); 408 ASSERT_EQ(2U, registry()->enabled_extensions().size());
437 ASSERT_EQ(2U, model->size()); 409 ASSERT_EQ(2U, model->size());
438 RemoveBackgroundPermission(service, bgapp.get()); 410 RemoveBackgroundPermission(service(), bgapp.get());
439 ASSERT_FALSE( 411 ASSERT_FALSE(
440 bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground)); 412 bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground));
441 ASSERT_EQ(2U, service->extensions()->size()); 413 ASSERT_EQ(2U, registry()->enabled_extensions().size());
442 ASSERT_EQ(1U, model->size()); 414 ASSERT_EQ(1U, model->size());
443 RemoveBackgroundPermission(service, ext.get()); 415 RemoveBackgroundPermission(service(), ext.get());
444 ASSERT_FALSE( 416 ASSERT_FALSE(
445 ext->permissions_data()->HasAPIPermission(APIPermission::kBackground)); 417 ext->permissions_data()->HasAPIPermission(APIPermission::kBackground));
446 ASSERT_EQ(2U, service->extensions()->size()); 418 ASSERT_EQ(2U, registry()->enabled_extensions().size());
447 ASSERT_EQ(0U, model->size()); 419 ASSERT_EQ(0U, model->size());
448 AddBackgroundPermission(service, bgapp.get()); 420 AddBackgroundPermission(service(), bgapp.get());
449 ASSERT_TRUE( 421 ASSERT_TRUE(
450 bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground)); 422 bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground));
451 ASSERT_EQ(2U, service->extensions()->size()); 423 ASSERT_EQ(2U, registry()->enabled_extensions().size());
452 ASSERT_EQ(1U, model->size()); 424 ASSERT_EQ(1U, model->size());
453 } 425 }
454 426
455 typedef std::set<scoped_refptr<Extension> > ExtensionCollection; 427 typedef std::set<scoped_refptr<Extension> > ExtensionCollection;
456 428
457 namespace { 429 namespace {
458 void AddExtension(ExtensionService* service, 430 void AddExtension(ExtensionService* service,
459 ExtensionCollection* extensions, 431 ExtensionCollection* extensions,
460 BackgroundApplicationListModel* model, 432 BackgroundApplicationListModel* model,
461 size_t* expected, 433 size_t* expected,
462 size_t* count) { 434 size_t* count) {
435 ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile());
463 bool create_background = false; 436 bool create_background = false;
464 if (rand() % 2) { 437 if (rand() % 2) {
465 create_background = true; 438 create_background = true;
466 ++*expected; 439 ++*expected;
467 } 440 }
468 scoped_refptr<Extension> extension = 441 scoped_refptr<Extension> extension =
469 CreateExtension(GenerateUniqueExtensionName(), create_background); 442 CreateExtension(GenerateUniqueExtensionName(), create_background);
470 ASSERT_EQ(BackgroundApplicationListModel::IsBackgroundApp(*extension.get(), 443 ASSERT_EQ(BackgroundApplicationListModel::IsBackgroundApp(*extension.get(),
471 service->profile()), 444 service->profile()),
472 create_background); 445 create_background);
473 extensions->insert(extension); 446 extensions->insert(extension);
474 ++*count; 447 ++*count;
475 ASSERT_EQ(*count, extensions->size()); 448 ASSERT_EQ(*count, extensions->size());
476 service->AddExtension(extension.get()); 449 service->AddExtension(extension.get());
477 ASSERT_EQ(*count, service->extensions()->size()); 450 ASSERT_EQ(*count, registry->enabled_extensions().size());
478 ASSERT_EQ(*expected, model->size()); 451 ASSERT_EQ(*expected, model->size());
479 } 452 }
480 453
481 void RemoveExtension(ExtensionService* service, 454 void RemoveExtension(ExtensionService* service,
482 ExtensionCollection* extensions, 455 ExtensionCollection* extensions,
483 BackgroundApplicationListModel* model, 456 BackgroundApplicationListModel* model,
484 size_t* expected, 457 size_t* expected,
485 size_t* count) { // Maybe remove an extension. 458 size_t* count) { // Maybe remove an extension.
459 ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile());
486 ExtensionCollection::iterator cursor = extensions->begin(); 460 ExtensionCollection::iterator cursor = extensions->begin();
487 if (cursor == extensions->end()) { 461 if (cursor == extensions->end()) {
488 // Nothing to remove. Just verify accounting. 462 // Nothing to remove. Just verify accounting.
489 ASSERT_EQ(0U, *count); 463 ASSERT_EQ(0U, *count);
490 ASSERT_EQ(0U, *expected); 464 ASSERT_EQ(0U, *expected);
491 ASSERT_EQ(0U, service->extensions()->size()); 465 ASSERT_EQ(0U, registry->enabled_extensions().size());
492 ASSERT_EQ(0U, model->size()); 466 ASSERT_EQ(0U, model->size());
493 } else { 467 } else {
494 // Randomly select which extension to remove 468 // Randomly select which extension to remove
495 if (extensions->size() > 1) { 469 if (extensions->size() > 1) {
496 int offset = rand() % (extensions->size() - 1); 470 int offset = rand() % (extensions->size() - 1);
497 for (int index = 0; index < offset; ++index) 471 for (int index = 0; index < offset; ++index)
498 ++cursor; 472 ++cursor;
499 } 473 }
500 scoped_refptr<Extension> extension = cursor->get(); 474 scoped_refptr<Extension> extension = cursor->get();
501 std::string id = extension->id(); 475 std::string id = extension->id();
502 if (BackgroundApplicationListModel::IsBackgroundApp(*extension.get(), 476 if (BackgroundApplicationListModel::IsBackgroundApp(*extension.get(),
503 service->profile())) { 477 service->profile())) {
504 --*expected; 478 --*expected;
505 } 479 }
506 extensions->erase(cursor); 480 extensions->erase(cursor);
507 --*count; 481 --*count;
508 ASSERT_EQ(*count, extensions->size()); 482 ASSERT_EQ(*count, extensions->size());
509 service->UninstallExtension(extension->id(), 483 service->UninstallExtension(extension->id(),
510 extensions::UNINSTALL_REASON_FOR_TESTING, 484 extensions::UNINSTALL_REASON_FOR_TESTING,
511 base::Bind(&base::DoNothing), 485 base::Bind(&base::DoNothing), NULL);
512 NULL); 486 ASSERT_EQ(*count, registry->enabled_extensions().size());
513 ASSERT_EQ(*count, service->extensions()->size());
514 ASSERT_EQ(*expected, model->size()); 487 ASSERT_EQ(*expected, model->size());
515 } 488 }
516 } 489 }
517 490
518 void TogglePermission(ExtensionService* service, 491 void TogglePermission(ExtensionService* service,
519 ExtensionCollection* extensions, 492 ExtensionCollection* extensions,
520 BackgroundApplicationListModel* model, 493 BackgroundApplicationListModel* model,
521 size_t* expected, 494 size_t* expected,
522 size_t* count) { 495 size_t* count) {
496 ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile());
523 ExtensionCollection::iterator cursor = extensions->begin(); 497 ExtensionCollection::iterator cursor = extensions->begin();
524 if (cursor == extensions->end()) { 498 if (cursor == extensions->end()) {
525 // Nothing to toggle. Just verify accounting. 499 // Nothing to toggle. Just verify accounting.
526 ASSERT_EQ(0U, *count); 500 ASSERT_EQ(0U, *count);
527 ASSERT_EQ(0U, *expected); 501 ASSERT_EQ(0U, *expected);
528 ASSERT_EQ(0U, service->extensions()->size()); 502 ASSERT_EQ(0U, registry->enabled_extensions().size());
529 ASSERT_EQ(0U, model->size()); 503 ASSERT_EQ(0U, model->size());
530 } else { 504 } else {
531 // Randomly select which extension to toggle. 505 // Randomly select which extension to toggle.
532 if (extensions->size() > 1) { 506 if (extensions->size() > 1) {
533 int offset = rand() % (extensions->size() - 1); 507 int offset = rand() % (extensions->size() - 1);
534 for (int index = 0; index < offset; ++index) 508 for (int index = 0; index < offset; ++index)
535 ++cursor; 509 ++cursor;
536 } 510 }
537 scoped_refptr<Extension> extension = cursor->get(); 511 scoped_refptr<Extension> extension = cursor->get();
538 std::string id = extension->id(); 512 std::string id = extension->id();
539 if (BackgroundApplicationListModel::IsBackgroundApp(*extension.get(), 513 if (BackgroundApplicationListModel::IsBackgroundApp(*extension.get(),
540 service->profile())) { 514 service->profile())) {
541 --*expected; 515 --*expected;
542 ASSERT_EQ(*count, extensions->size()); 516 ASSERT_EQ(*count, extensions->size());
543 RemoveBackgroundPermission(service, extension.get()); 517 RemoveBackgroundPermission(service, extension.get());
544 ASSERT_EQ(*count, service->extensions()->size()); 518 ASSERT_EQ(*count, registry->enabled_extensions().size());
545 ASSERT_EQ(*expected, model->size()); 519 ASSERT_EQ(*expected, model->size());
546 } else { 520 } else {
547 ++*expected; 521 ++*expected;
548 ASSERT_EQ(*count, extensions->size()); 522 ASSERT_EQ(*count, extensions->size());
549 AddBackgroundPermission(service, extension.get()); 523 AddBackgroundPermission(service, extension.get());
550 ASSERT_EQ(*count, service->extensions()->size()); 524 ASSERT_EQ(*count, registry->enabled_extensions().size());
551 ASSERT_EQ(*expected, model->size()); 525 ASSERT_EQ(*expected, model->size());
552 } 526 }
553 } 527 }
554 } 528 }
555 } // namespace 529 } // namespace
556 530
557 // Verifies behavior with a pseudo-randomly generated set of actions: Adding and 531 // Verifies behavior with a pseudo-randomly generated set of actions: Adding and
558 // removing extensions, of which some are Background Apps and others are not. 532 // removing extensions, of which some are Background Apps and others are not.
559 TEST_F(BackgroundApplicationListModelTest, RandomTest) { 533 TEST_F(BackgroundApplicationListModelTest, RandomTest) {
560 InitializeAndLoadEmptyExtensionService(); 534 InitializeAndLoadEmptyExtensionService();
561 ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> 535 ASSERT_TRUE(service()->is_ready());
562 extension_service(); 536 ASSERT_TRUE(registry()->enabled_extensions().is_empty());
563 ASSERT_TRUE(service);
564 ASSERT_TRUE(service->is_ready());
565 ASSERT_TRUE(service->extensions());
566 ASSERT_TRUE(service->extensions()->is_empty());
567 scoped_ptr<BackgroundApplicationListModel> model( 537 scoped_ptr<BackgroundApplicationListModel> model(
568 new BackgroundApplicationListModel(profile_.get())); 538 new BackgroundApplicationListModel(profile_.get()));
569 ASSERT_EQ(0U, model->size()); 539 ASSERT_EQ(0U, model->size());
570 540
571 static const int kIterations = 20; 541 static const int kIterations = 20;
572 ExtensionCollection extensions; 542 ExtensionCollection extensions;
573 size_t count = 0; 543 size_t count = 0;
574 size_t expected = 0; 544 size_t expected = 0;
575 srand(RANDOM_SEED); 545 srand(RANDOM_SEED);
576 for (int index = 0; index < kIterations; ++index) { 546 for (int index = 0; index < kIterations; ++index) {
577 switch (rand() % 3) { 547 switch (rand() % 3) {
578 case 0: 548 case 0:
579 AddExtension(service, &extensions, model.get(), &expected, &count); 549 AddExtension(service(), &extensions, model.get(), &expected, &count);
580 break; 550 break;
581 case 1: 551 case 1:
582 RemoveExtension(service, &extensions, model.get(), &expected, &count); 552 RemoveExtension(service(), &extensions, model.get(), &expected, &count);
583 break; 553 break;
584 case 2: 554 case 2:
585 TogglePermission(service, &extensions, model.get(), &expected, &count); 555 TogglePermission(service(), &extensions, model.get(), &expected,
556 &count);
586 break; 557 break;
587 default: 558 default:
588 NOTREACHED(); 559 NOTREACHED();
589 break; 560 break;
590 } 561 }
591 } 562 }
592 } 563 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698