OLD | NEW |
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 "chrome/browser/extensions/extension_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "base/string_number_conversions.h" | 21 #include "base/string_number_conversions.h" |
22 #include "base/string_util.h" | 22 #include "base/string_util.h" |
23 #include "base/task.h" | 23 #include "base/task.h" |
24 #include "base/utf_string_conversions.h" | 24 #include "base/utf_string_conversions.h" |
25 #include "base/version.h" | 25 #include "base/version.h" |
26 #include "chrome/browser/extensions/crx_installer.h" | 26 #include "chrome/browser/extensions/crx_installer.h" |
27 #include "chrome/browser/extensions/extension_creator.h" | 27 #include "chrome/browser/extensions/extension_creator.h" |
28 #include "chrome/browser/extensions/extension_error_reporter.h" | 28 #include "chrome/browser/extensions/extension_error_reporter.h" |
29 #include "chrome/browser/extensions/extension_service.h" | 29 #include "chrome/browser/extensions/extension_service.h" |
30 #include "chrome/browser/extensions/extension_special_storage_policy.h" | 30 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
| 31 #include "chrome/browser/extensions/extension_sync_data.h" |
| 32 #include "chrome/browser/extensions/extension_updater.h" |
31 #include "chrome/browser/extensions/external_extension_provider_impl.h" | 33 #include "chrome/browser/extensions/external_extension_provider_impl.h" |
32 #include "chrome/browser/extensions/external_extension_provider_interface.h" | 34 #include "chrome/browser/extensions/external_extension_provider_interface.h" |
33 #include "chrome/browser/extensions/external_pref_extension_loader.h" | 35 #include "chrome/browser/extensions/external_pref_extension_loader.h" |
34 #include "chrome/browser/extensions/pack_extension_job.cc" | 36 #include "chrome/browser/extensions/pack_extension_job.cc" |
| 37 #include "chrome/browser/extensions/pending_extension_info.h" |
| 38 #include "chrome/browser/extensions/pending_extension_manager.h" |
35 #include "chrome/browser/prefs/browser_prefs.h" | 39 #include "chrome/browser/prefs/browser_prefs.h" |
36 #include "chrome/browser/prefs/pref_service_mock_builder.h" | 40 #include "chrome/browser/prefs/pref_service_mock_builder.h" |
37 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 41 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
38 #include "chrome/common/chrome_paths.h" | 42 #include "chrome/common/chrome_paths.h" |
39 #include "chrome/common/chrome_switches.h" | 43 #include "chrome/common/chrome_switches.h" |
40 #include "chrome/common/extensions/extension.h" | 44 #include "chrome/common/extensions/extension.h" |
41 #include "chrome/common/extensions/extension_constants.h" | 45 #include "chrome/common/extensions/extension_constants.h" |
42 #include "chrome/common/extensions/extension_resource.h" | 46 #include "chrome/common/extensions/extension_resource.h" |
43 #include "chrome/common/extensions/url_pattern.h" | 47 #include "chrome/common/extensions/url_pattern.h" |
44 #include "chrome/common/json_value_serializer.h" | 48 #include "chrome/common/json_value_serializer.h" |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 ExtensionServiceTestBase::~ExtensionServiceTestBase() { | 392 ExtensionServiceTestBase::~ExtensionServiceTestBase() { |
389 // Drop our reference to ExtensionService and TestingProfile, so that they | 393 // Drop our reference to ExtensionService and TestingProfile, so that they |
390 // can be destroyed while BrowserThreads and MessageLoop are still around | 394 // can be destroyed while BrowserThreads and MessageLoop are still around |
391 // (they are used in the destruction process). | 395 // (they are used in the destruction process). |
392 service_ = NULL; | 396 service_ = NULL; |
393 profile_.reset(NULL); | 397 profile_.reset(NULL); |
394 MessageLoop::current()->RunAllPending(); | 398 MessageLoop::current()->RunAllPending(); |
395 } | 399 } |
396 | 400 |
397 void ExtensionServiceTestBase::InitializeExtensionService( | 401 void ExtensionServiceTestBase::InitializeExtensionService( |
398 const FilePath& pref_file, const FilePath& extensions_install_dir) { | 402 const FilePath& pref_file, const FilePath& extensions_install_dir, |
| 403 bool autoupdate_enabled) { |
399 ExtensionTestingProfile* profile = new ExtensionTestingProfile(); | 404 ExtensionTestingProfile* profile = new ExtensionTestingProfile(); |
400 // Create a PrefService that only contains user defined preference values. | 405 // Create a PrefService that only contains user defined preference values. |
401 PrefService* prefs = | 406 PrefService* prefs = |
402 PrefServiceMockBuilder().WithUserFilePrefs(pref_file).Create(); | 407 PrefServiceMockBuilder().WithUserFilePrefs(pref_file).Create(); |
403 Profile::RegisterUserPrefs(prefs); | 408 Profile::RegisterUserPrefs(prefs); |
404 browser::RegisterUserPrefs(prefs); | 409 browser::RegisterUserPrefs(prefs); |
405 profile->SetPrefService(prefs); | 410 profile->SetPrefService(prefs); |
406 | 411 |
407 profile_.reset(profile); | 412 profile_.reset(profile); |
408 | 413 |
409 service_ = profile->CreateExtensionService( | 414 service_ = profile->CreateExtensionService( |
410 CommandLine::ForCurrentProcess(), | 415 CommandLine::ForCurrentProcess(), |
411 extensions_install_dir); | 416 extensions_install_dir, |
| 417 autoupdate_enabled); |
412 service_->set_extensions_enabled(true); | 418 service_->set_extensions_enabled(true); |
413 service_->set_show_extensions_prompts(false); | 419 service_->set_show_extensions_prompts(false); |
414 profile->set_extensions_service(service_.get()); | 420 profile->set_extensions_service(service_.get()); |
415 | 421 |
416 // When we start up, we want to make sure there is no external provider, | 422 // When we start up, we want to make sure there is no external provider, |
417 // since the ExtensionService on Windows will use the Registry as a default | 423 // since the ExtensionService on Windows will use the Registry as a default |
418 // provider and if there is something already registered there then it will | 424 // provider and if there is something already registered there then it will |
419 // interfere with the tests. Those tests that need an external provider | 425 // interfere with the tests. Those tests that need an external provider |
420 // will register one specifically. | 426 // will register one specifically. |
421 service_->ClearProvidersForTesting(); | 427 service_->ClearProvidersForTesting(); |
422 | 428 |
423 total_successes_ = 0; | 429 total_successes_ = 0; |
424 } | 430 } |
425 | 431 |
426 void ExtensionServiceTestBase::InitializeInstalledExtensionService( | 432 void ExtensionServiceTestBase::InitializeInstalledExtensionService( |
427 const FilePath& prefs_file, const FilePath& source_install_dir) { | 433 const FilePath& prefs_file, const FilePath& source_install_dir) { |
428 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 434 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
429 FilePath path_ = temp_dir_.path(); | 435 FilePath path_ = temp_dir_.path(); |
430 path_ = path_.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); | 436 path_ = path_.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); |
431 file_util::Delete(path_, true); | 437 file_util::Delete(path_, true); |
432 file_util::CreateDirectory(path_); | 438 file_util::CreateDirectory(path_); |
433 FilePath temp_prefs = path_.Append(FILE_PATH_LITERAL("Preferences")); | 439 FilePath temp_prefs = path_.Append(FILE_PATH_LITERAL("Preferences")); |
434 file_util::CopyFile(prefs_file, temp_prefs); | 440 file_util::CopyFile(prefs_file, temp_prefs); |
435 | 441 |
436 extensions_install_dir_ = path_.Append(FILE_PATH_LITERAL("Extensions")); | 442 extensions_install_dir_ = path_.Append(FILE_PATH_LITERAL("Extensions")); |
437 file_util::Delete(extensions_install_dir_, true); | 443 file_util::Delete(extensions_install_dir_, true); |
438 file_util::CopyDirectory(source_install_dir, extensions_install_dir_, true); | 444 file_util::CopyDirectory(source_install_dir, extensions_install_dir_, true); |
439 | 445 |
440 InitializeExtensionService(temp_prefs, extensions_install_dir_); | 446 InitializeExtensionService(temp_prefs, extensions_install_dir_, false); |
441 } | 447 } |
442 | 448 |
443 void ExtensionServiceTestBase::InitializeEmptyExtensionService() { | 449 void ExtensionServiceTestBase::InitializeEmptyExtensionService() { |
| 450 InitializeExtensionServiceHelper(false); |
| 451 } |
| 452 |
| 453 void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() { |
| 454 InitializeExtensionServiceHelper(true); |
| 455 service_->updater()->Start(); |
| 456 } |
| 457 |
| 458 void ExtensionServiceTestBase::InitializeExtensionServiceHelper( |
| 459 bool autoupdate_enabled) { |
444 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 460 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
445 FilePath path_ = temp_dir_.path(); | 461 FilePath path_ = temp_dir_.path(); |
446 path_ = path_.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); | 462 path_ = path_.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); |
447 file_util::Delete(path_, true); | 463 file_util::Delete(path_, true); |
448 file_util::CreateDirectory(path_); | 464 file_util::CreateDirectory(path_); |
449 FilePath prefs_filename = path_ | 465 FilePath prefs_filename = path_ |
450 .Append(FILE_PATH_LITERAL("TestPreferences")); | 466 .Append(FILE_PATH_LITERAL("TestPreferences")); |
451 extensions_install_dir_ = path_.Append(FILE_PATH_LITERAL("Extensions")); | 467 extensions_install_dir_ = path_.Append(FILE_PATH_LITERAL("Extensions")); |
452 file_util::Delete(extensions_install_dir_, true); | 468 file_util::Delete(extensions_install_dir_, true); |
453 file_util::CreateDirectory(extensions_install_dir_); | 469 file_util::CreateDirectory(extensions_install_dir_); |
454 | 470 |
455 InitializeExtensionService(prefs_filename, extensions_install_dir_); | 471 InitializeExtensionService(prefs_filename, extensions_install_dir_, |
| 472 autoupdate_enabled); |
456 } | 473 } |
457 | 474 |
458 // static | 475 // static |
459 void ExtensionServiceTestBase::SetUpTestCase() { | 476 void ExtensionServiceTestBase::SetUpTestCase() { |
460 ExtensionErrorReporter::Init(false); // no noisy errors | 477 ExtensionErrorReporter::Init(false); // no noisy errors |
461 } | 478 } |
462 | 479 |
463 void ExtensionServiceTestBase::SetUp() { | 480 void ExtensionServiceTestBase::SetUp() { |
464 ExtensionErrorReporter::GetInstance()->ClearErrors(); | 481 ExtensionErrorReporter::GetInstance()->ClearErrors(); |
465 } | 482 } |
(...skipping 2786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3252 BrowserThread ui_thread(BrowserThread::UI, &loop); | 3269 BrowserThread ui_thread(BrowserThread::UI, &loop); |
3253 BrowserThread file_thread(BrowserThread::FILE, &loop); | 3270 BrowserThread file_thread(BrowserThread::FILE, &loop); |
3254 scoped_ptr<CommandLine> command_line; | 3271 scoped_ptr<CommandLine> command_line; |
3255 scoped_refptr<ExtensionService> service; | 3272 scoped_refptr<ExtensionService> service; |
3256 FilePath install_dir = profile->GetPath() | 3273 FilePath install_dir = profile->GetPath() |
3257 .AppendASCII(ExtensionService::kInstallDirectoryName); | 3274 .AppendASCII(ExtensionService::kInstallDirectoryName); |
3258 | 3275 |
3259 // By default, we are enabled. | 3276 // By default, we are enabled. |
3260 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); | 3277 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); |
3261 service = profile->CreateExtensionService(command_line.get(), | 3278 service = profile->CreateExtensionService(command_line.get(), |
3262 install_dir); | 3279 install_dir, |
| 3280 false); |
3263 EXPECT_TRUE(service->extensions_enabled()); | 3281 EXPECT_TRUE(service->extensions_enabled()); |
3264 service->Init(); | 3282 service->Init(); |
3265 loop.RunAllPending(); | 3283 loop.RunAllPending(); |
3266 EXPECT_TRUE(recorder.ready()); | 3284 EXPECT_TRUE(recorder.ready()); |
3267 | 3285 |
3268 // If either the command line or pref is set, we are disabled. | 3286 // If either the command line or pref is set, we are disabled. |
3269 recorder.set_ready(false); | 3287 recorder.set_ready(false); |
3270 profile.reset(new TestingProfile()); | 3288 profile.reset(new TestingProfile()); |
3271 command_line->AppendSwitch(switches::kDisableExtensions); | 3289 command_line->AppendSwitch(switches::kDisableExtensions); |
3272 service = profile->CreateExtensionService(command_line.get(), | 3290 service = profile->CreateExtensionService(command_line.get(), |
3273 install_dir); | 3291 install_dir, |
| 3292 false); |
3274 EXPECT_FALSE(service->extensions_enabled()); | 3293 EXPECT_FALSE(service->extensions_enabled()); |
3275 service->Init(); | 3294 service->Init(); |
3276 loop.RunAllPending(); | 3295 loop.RunAllPending(); |
3277 EXPECT_TRUE(recorder.ready()); | 3296 EXPECT_TRUE(recorder.ready()); |
3278 | 3297 |
3279 recorder.set_ready(false); | 3298 recorder.set_ready(false); |
3280 profile.reset(new TestingProfile()); | 3299 profile.reset(new TestingProfile()); |
3281 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); | 3300 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
3282 service = profile->CreateExtensionService(command_line.get(), | 3301 service = profile->CreateExtensionService(command_line.get(), |
3283 install_dir); | 3302 install_dir, |
| 3303 false); |
3284 EXPECT_FALSE(service->extensions_enabled()); | 3304 EXPECT_FALSE(service->extensions_enabled()); |
3285 service->Init(); | 3305 service->Init(); |
3286 loop.RunAllPending(); | 3306 loop.RunAllPending(); |
3287 EXPECT_TRUE(recorder.ready()); | 3307 EXPECT_TRUE(recorder.ready()); |
3288 | 3308 |
3289 recorder.set_ready(false); | 3309 recorder.set_ready(false); |
3290 profile.reset(new TestingProfile()); | 3310 profile.reset(new TestingProfile()); |
3291 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); | 3311 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
3292 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); | 3312 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); |
3293 service = profile->CreateExtensionService(command_line.get(), | 3313 service = profile->CreateExtensionService(command_line.get(), |
3294 install_dir); | 3314 install_dir, |
| 3315 false); |
3295 EXPECT_FALSE(service->extensions_enabled()); | 3316 EXPECT_FALSE(service->extensions_enabled()); |
3296 service->Init(); | 3317 service->Init(); |
3297 loop.RunAllPending(); | 3318 loop.RunAllPending(); |
3298 EXPECT_TRUE(recorder.ready()); | 3319 EXPECT_TRUE(recorder.ready()); |
3299 | 3320 |
3300 // Explicitly delete all the resources used in this test. | 3321 // Explicitly delete all the resources used in this test. |
3301 profile.reset(); | 3322 profile.reset(); |
3302 service = NULL; | 3323 service = NULL; |
3303 } | 3324 } |
3304 | 3325 |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3396 ValidatePrefKeyCount(0); | 3417 ValidatePrefKeyCount(0); |
3397 | 3418 |
3398 // Reload all extensions, and make sure it comes back. | 3419 // Reload all extensions, and make sure it comes back. |
3399 std::string extension_id = service_->extensions()->at(0)->id(); | 3420 std::string extension_id = service_->extensions()->at(0)->id(); |
3400 loaded_.clear(); | 3421 loaded_.clear(); |
3401 service_->ReloadExtensions(); | 3422 service_->ReloadExtensions(); |
3402 ASSERT_EQ(1u, service_->extensions()->size()); | 3423 ASSERT_EQ(1u, service_->extensions()->size()); |
3403 EXPECT_EQ(extension_id, service_->extensions()->at(0)->id()); | 3424 EXPECT_EQ(extension_id, service_->extensions()->at(0)->id()); |
3404 } | 3425 } |
3405 | 3426 |
| 3427 TEST_F(ExtensionServiceTest, ProcessSyncDataUninstall) { |
| 3428 InitializeEmptyExtensionService(); |
| 3429 |
| 3430 ExtensionSyncData extension_sync_data; |
| 3431 extension_sync_data.id = good_crx; |
| 3432 extension_sync_data.uninstalled = true; |
| 3433 |
| 3434 // Should do nothing. |
| 3435 service_->ProcessSyncData(extension_sync_data); |
| 3436 |
| 3437 // Install the extension. |
| 3438 FilePath extension_path = data_dir_.AppendASCII("good.crx"); |
| 3439 InstallCrx(extension_path, true); |
| 3440 EXPECT_TRUE(service_->GetExtensionById(good_crx, true)); |
| 3441 |
| 3442 // Should uninstall the extension. |
| 3443 service_->ProcessSyncData(extension_sync_data); |
| 3444 EXPECT_FALSE(service_->GetExtensionById(good_crx, true)); |
| 3445 |
| 3446 // Should again do nothing. |
| 3447 service_->ProcessSyncData(extension_sync_data); |
| 3448 } |
| 3449 |
| 3450 |
| 3451 TEST_F(ExtensionServiceTest, ProcessSyncDataSettings) { |
| 3452 InitializeEmptyExtensionService(); |
| 3453 |
| 3454 FilePath extension_path = data_dir_.AppendASCII("good.crx"); |
| 3455 InstallCrx(extension_path, true); |
| 3456 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
| 3457 EXPECT_FALSE(service_->IsIncognitoEnabled(good_crx)); |
| 3458 |
| 3459 ExtensionSyncData extension_sync_data; |
| 3460 extension_sync_data.id = good_crx; |
| 3461 extension_sync_data.version = |
| 3462 *(service_->GetExtensionById(good_crx, true)->version()); |
| 3463 |
| 3464 extension_sync_data.enabled = false; |
| 3465 service_->ProcessSyncData(extension_sync_data); |
| 3466 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
| 3467 EXPECT_FALSE(service_->IsIncognitoEnabled(good_crx)); |
| 3468 |
| 3469 extension_sync_data.enabled = true; |
| 3470 extension_sync_data.incognito_enabled = true; |
| 3471 service_->ProcessSyncData(extension_sync_data); |
| 3472 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
| 3473 EXPECT_TRUE(service_->IsIncognitoEnabled(good_crx)); |
| 3474 |
| 3475 extension_sync_data.enabled = false; |
| 3476 extension_sync_data.incognito_enabled = true; |
| 3477 service_->ProcessSyncData(extension_sync_data); |
| 3478 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
| 3479 EXPECT_TRUE(service_->IsIncognitoEnabled(good_crx)); |
| 3480 |
| 3481 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); |
| 3482 } |
| 3483 |
| 3484 TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) { |
| 3485 InitializeExtensionServiceWithUpdater(); |
| 3486 |
| 3487 // Install the extension. |
| 3488 FilePath extension_path = data_dir_.AppendASCII("good.crx"); |
| 3489 InstallCrx(extension_path, true); |
| 3490 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
| 3491 EXPECT_FALSE(service_->IsIncognitoEnabled(good_crx)); |
| 3492 |
| 3493 ExtensionSyncData extension_sync_data; |
| 3494 extension_sync_data.id = good_crx; |
| 3495 extension_sync_data.enabled = true; |
| 3496 extension_sync_data.version = |
| 3497 *(service_->GetExtensionById(good_crx, true)->version()); |
| 3498 |
| 3499 // Should do nothing if extension version == sync version. |
| 3500 service_->ProcessSyncData(extension_sync_data); |
| 3501 EXPECT_FALSE(service_->updater()->WillCheckSoon()); |
| 3502 |
| 3503 // Should do nothing if extension version > sync version (but see |
| 3504 // the TODO in ProcessSyncData). |
| 3505 { |
| 3506 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.0.0")); |
| 3507 extension_sync_data.version = *version; |
| 3508 service_->ProcessSyncData(extension_sync_data); |
| 3509 EXPECT_FALSE(service_->updater()->WillCheckSoon()); |
| 3510 } |
| 3511 |
| 3512 // Should kick off an update if extension version < sync version. |
| 3513 { |
| 3514 scoped_ptr<Version> version(Version::GetVersionFromString("9.9.9.9")); |
| 3515 extension_sync_data.version = *version; |
| 3516 service_->ProcessSyncData(extension_sync_data); |
| 3517 EXPECT_TRUE(service_->updater()->WillCheckSoon()); |
| 3518 } |
| 3519 |
| 3520 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); |
| 3521 } |
| 3522 |
| 3523 TEST_F(ExtensionServiceTest, ProcessSyncDataNotInstalled) { |
| 3524 InitializeExtensionServiceWithUpdater(); |
| 3525 |
| 3526 ExtensionSyncData extension_sync_data; |
| 3527 extension_sync_data.id = good_crx; |
| 3528 extension_sync_data.update_url = GURL("http://www.google.com"); |
| 3529 extension_sync_data.enabled = true; |
| 3530 { |
| 3531 scoped_ptr<Version> version(Version::GetVersionFromString("1.2.3.4")); |
| 3532 extension_sync_data.version = *version; |
| 3533 } |
| 3534 |
| 3535 service_->ProcessSyncData(extension_sync_data); |
| 3536 EXPECT_TRUE(service_->updater()->WillCheckSoon()); |
| 3537 |
| 3538 PendingExtensionInfo info; |
| 3539 EXPECT_TRUE( |
| 3540 service_->pending_extension_manager()->GetById(good_crx, &info)); |
| 3541 EXPECT_EQ(extension_sync_data.update_url, info.update_url()); |
| 3542 EXPECT_TRUE(info.is_from_sync()); |
| 3543 EXPECT_TRUE(info.install_silently()); |
| 3544 EXPECT_EQ(extension_sync_data.enabled, info.enable_on_install()); |
| 3545 EXPECT_EQ(extension_sync_data.incognito_enabled, |
| 3546 info.enable_incognito_on_install()); |
| 3547 EXPECT_EQ(Extension::INTERNAL, info.install_source()); |
| 3548 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. |
| 3549 } |
| 3550 |
3406 // Test that when multiple sources try to install an extension, | 3551 // Test that when multiple sources try to install an extension, |
3407 // we consistently choose the right one. To make tests easy to read, | 3552 // we consistently choose the right one. To make tests easy to read, |
3408 // methods that fake requests to install crx files in several ways | 3553 // methods that fake requests to install crx files in several ways |
3409 // are provided. | 3554 // are provided. |
3410 class ExtensionSourcePriorityTest : public ExtensionServiceTest { | 3555 class ExtensionSourcePriorityTest : public ExtensionServiceTest { |
3411 public: | 3556 public: |
3412 void SetUp() { | 3557 void SetUp() { |
3413 // All tests use a single extension. Put the id and path in member vars | 3558 // All tests use a single extension. Put the id and path in member vars |
3414 // that all methods can read. | 3559 // that all methods can read. |
3415 crx_id_ = kGoodId; | 3560 crx_id_ = kGoodId; |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3573 ASSERT_FALSE(AddPendingSyncInstall()); | 3718 ASSERT_FALSE(AddPendingSyncInstall()); |
3574 | 3719 |
3575 // Wait for the external source to install. | 3720 // Wait for the external source to install. |
3576 WaitForCrxInstall(crx_path_, true); | 3721 WaitForCrxInstall(crx_path_, true); |
3577 ASSERT_TRUE(IsCrxInstalled()); | 3722 ASSERT_TRUE(IsCrxInstalled()); |
3578 | 3723 |
3579 // Now that the extension is installed, sync request should fail | 3724 // Now that the extension is installed, sync request should fail |
3580 // because the extension is already installed. | 3725 // because the extension is already installed. |
3581 ASSERT_FALSE(AddPendingSyncInstall()); | 3726 ASSERT_FALSE(AddPendingSyncInstall()); |
3582 } | 3727 } |
OLD | NEW |