| OLD | NEW |
| 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 #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 15 matching lines...) Expand all Loading... |
| 26 #include "base/utf_string_conversions.h" | 26 #include "base/utf_string_conversions.h" |
| 27 #include "base/version.h" | 27 #include "base/version.h" |
| 28 #include "chrome/browser/browser_process.h" | 28 #include "chrome/browser/browser_process.h" |
| 29 #include "chrome/browser/extensions/component_loader.h" | 29 #include "chrome/browser/extensions/component_loader.h" |
| 30 #include "chrome/browser/extensions/crx_installer.h" | 30 #include "chrome/browser/extensions/crx_installer.h" |
| 31 #include "chrome/browser/extensions/extension_creator.h" | 31 #include "chrome/browser/extensions/extension_creator.h" |
| 32 #include "chrome/browser/extensions/extension_error_reporter.h" | 32 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 33 #include "chrome/browser/extensions/extension_service.h" | 33 #include "chrome/browser/extensions/extension_service.h" |
| 34 #include "chrome/browser/extensions/extension_special_storage_policy.h" | 34 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
| 35 #include "chrome/browser/extensions/extension_sync_data.h" | 35 #include "chrome/browser/extensions/extension_sync_data.h" |
| 36 #include "chrome/browser/extensions/extension_system.h" |
| 37 #include "chrome/browser/extensions/extension_system_factory.h" |
| 36 #include "chrome/browser/extensions/extension_updater.h" | 38 #include "chrome/browser/extensions/extension_updater.h" |
| 37 #include "chrome/browser/extensions/external_extension_provider_impl.h" | 39 #include "chrome/browser/extensions/external_extension_provider_impl.h" |
| 38 #include "chrome/browser/extensions/external_extension_provider_interface.h" | 40 #include "chrome/browser/extensions/external_extension_provider_interface.h" |
| 39 #include "chrome/browser/extensions/external_pref_extension_loader.h" | 41 #include "chrome/browser/extensions/external_pref_extension_loader.h" |
| 40 #include "chrome/browser/extensions/extension_sorting.h" | 42 #include "chrome/browser/extensions/extension_sorting.h" |
| 41 #include "chrome/browser/extensions/installed_loader.h" | 43 #include "chrome/browser/extensions/installed_loader.h" |
| 42 #include "chrome/browser/extensions/pack_extension_job.cc" | 44 #include "chrome/browser/extensions/pack_extension_job.cc" |
| 43 #include "chrome/browser/extensions/pending_extension_info.h" | 45 #include "chrome/browser/extensions/pending_extension_info.h" |
| 44 #include "chrome/browser/extensions/pending_extension_manager.h" | 46 #include "chrome/browser/extensions/pending_extension_manager.h" |
| 47 #include "chrome/browser/extensions/test_extension_system.h" |
| 45 #include "chrome/browser/extensions/unpacked_installer.h" | 48 #include "chrome/browser/extensions/unpacked_installer.h" |
| 46 #include "chrome/browser/plugin_prefs_factory.h" | 49 #include "chrome/browser/plugin_prefs_factory.h" |
| 47 #include "chrome/browser/prefs/browser_prefs.h" | 50 #include "chrome/browser/prefs/browser_prefs.h" |
| 48 #include "chrome/browser/prefs/pref_service_mock_builder.h" | 51 #include "chrome/browser/prefs/pref_service_mock_builder.h" |
| 49 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 52 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 50 #include "chrome/browser/sync/protocol/app_specifics.pb.h" | 53 #include "chrome/browser/sync/protocol/app_specifics.pb.h" |
| 51 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" | 54 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
| 55 #include "chrome/common/chrome_constants.h" |
| 52 #include "chrome/common/chrome_notification_types.h" | 56 #include "chrome/common/chrome_notification_types.h" |
| 53 #include "chrome/common/chrome_paths.h" | 57 #include "chrome/common/chrome_paths.h" |
| 54 #include "chrome/common/chrome_switches.h" | 58 #include "chrome/common/chrome_switches.h" |
| 55 #include "chrome/common/extensions/extension.h" | 59 #include "chrome/common/extensions/extension.h" |
| 56 #include "chrome/common/extensions/extension_constants.h" | 60 #include "chrome/common/extensions/extension_constants.h" |
| 57 #include "chrome/common/extensions/extension_resource.h" | 61 #include "chrome/common/extensions/extension_resource.h" |
| 58 #include "chrome/common/extensions/url_pattern.h" | 62 #include "chrome/common/extensions/url_pattern.h" |
| 59 #include "chrome/common/pref_names.h" | 63 #include "chrome/common/pref_names.h" |
| 60 #include "chrome/common/string_ordinal.h" | 64 #include "chrome/common/string_ordinal.h" |
| 61 #include "chrome/common/url_constants.h" | 65 #include "chrome/common/url_constants.h" |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 | 362 |
| 359 private: | 363 private: |
| 360 int ids_found_; | 364 int ids_found_; |
| 361 FilePath fake_base_path_; | 365 FilePath fake_base_path_; |
| 362 scoped_ptr<ExternalExtensionProviderImpl> provider_; | 366 scoped_ptr<ExternalExtensionProviderImpl> provider_; |
| 363 scoped_ptr<DictionaryValue> prefs_; | 367 scoped_ptr<DictionaryValue> prefs_; |
| 364 | 368 |
| 365 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor); | 369 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor); |
| 366 }; | 370 }; |
| 367 | 371 |
| 368 class ExtensionTestingProfile : public TestingProfile { | |
| 369 public: | |
| 370 ExtensionTestingProfile() : service_(NULL) { | |
| 371 } | |
| 372 | |
| 373 void set_extensions_service(ExtensionService* service) { | |
| 374 service_ = service; | |
| 375 } | |
| 376 virtual ExtensionService* GetExtensionService() { return service_; } | |
| 377 | |
| 378 private: | |
| 379 ExtensionService* service_; | |
| 380 }; | |
| 381 | |
| 382 // Our message loop may be used in tests which require it to be an IO loop. | 372 // Our message loop may be used in tests which require it to be an IO loop. |
| 383 ExtensionServiceTestBase::ExtensionServiceTestBase() | 373 ExtensionServiceTestBase::ExtensionServiceTestBase() |
| 384 : loop_(MessageLoop::TYPE_IO), | 374 : loop_(MessageLoop::TYPE_IO), |
| 385 service_(NULL), | 375 service_(NULL), |
| 386 expected_extensions_count_(0), | 376 expected_extensions_count_(0), |
| 387 ui_thread_(BrowserThread::UI, &loop_), | 377 ui_thread_(BrowserThread::UI, &loop_), |
| 388 db_thread_(BrowserThread::DB, &loop_), | 378 db_thread_(BrowserThread::DB, &loop_), |
| 389 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &loop_), | 379 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &loop_), |
| 390 file_thread_(BrowserThread::FILE, &loop_), | 380 file_thread_(BrowserThread::FILE, &loop_), |
| 391 file_user_blocking_thread_(BrowserThread::FILE_USER_BLOCKING, &loop_), | 381 file_user_blocking_thread_(BrowserThread::FILE_USER_BLOCKING, &loop_), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 404 // (they are used in the destruction process). | 394 // (they are used in the destruction process). |
| 405 service_ = NULL; | 395 service_ = NULL; |
| 406 MessageLoop::current()->RunAllPending(); | 396 MessageLoop::current()->RunAllPending(); |
| 407 profile_.reset(NULL); | 397 profile_.reset(NULL); |
| 408 MessageLoop::current()->RunAllPending(); | 398 MessageLoop::current()->RunAllPending(); |
| 409 } | 399 } |
| 410 | 400 |
| 411 void ExtensionServiceTestBase::InitializeExtensionService( | 401 void ExtensionServiceTestBase::InitializeExtensionService( |
| 412 const FilePath& pref_file, const FilePath& extensions_install_dir, | 402 const FilePath& pref_file, const FilePath& extensions_install_dir, |
| 413 bool autoupdate_enabled) { | 403 bool autoupdate_enabled) { |
| 414 ExtensionTestingProfile* profile = new ExtensionTestingProfile(); | 404 TestingProfile* profile = new TestingProfile(); |
| 415 // Create a PrefService that only contains user defined preference values. | 405 // Create a PrefService that only contains user defined preference values. |
| 416 PrefService* prefs = | 406 PrefService* prefs = |
| 417 PrefServiceMockBuilder().WithUserFilePrefs(pref_file).Create(); | 407 PrefServiceMockBuilder().WithUserFilePrefs(pref_file).Create(); |
| 418 Profile::RegisterUserPrefs(prefs); | 408 Profile::RegisterUserPrefs(prefs); |
| 419 browser::RegisterUserPrefs(prefs); | 409 browser::RegisterUserPrefs(prefs); |
| 420 profile->SetPrefService(prefs); | 410 profile->SetPrefService(prefs); |
| 421 | 411 |
| 422 PluginPrefsFactory::GetInstance()->ForceRegisterPrefsForTest(prefs); | 412 PluginPrefsFactory::GetInstance()->ForceRegisterPrefsForTest(prefs); |
| 423 | 413 |
| 424 profile_.reset(profile); | 414 profile_.reset(profile); |
| 425 | 415 |
| 426 service_ = profile->CreateExtensionService( | 416 service_ = static_cast<TestExtensionSystem*>( |
| 427 CommandLine::ForCurrentProcess(), | 417 ExtensionSystemFactory::GetForProfile(profile))->CreateExtensionService( |
| 428 extensions_install_dir, | 418 CommandLine::ForCurrentProcess(), |
| 429 autoupdate_enabled); | 419 extensions_install_dir, |
| 420 autoupdate_enabled); |
| 430 service_->set_extensions_enabled(true); | 421 service_->set_extensions_enabled(true); |
| 431 service_->set_show_extensions_prompts(false); | 422 service_->set_show_extensions_prompts(false); |
| 432 profile->set_extensions_service(service_); | |
| 433 | 423 |
| 434 // When we start up, we want to make sure there is no external provider, | 424 // When we start up, we want to make sure there is no external provider, |
| 435 // since the ExtensionService on Windows will use the Registry as a default | 425 // since the ExtensionService on Windows will use the Registry as a default |
| 436 // provider and if there is something already registered there then it will | 426 // provider and if there is something already registered there then it will |
| 437 // interfere with the tests. Those tests that need an external provider | 427 // interfere with the tests. Those tests that need an external provider |
| 438 // will register one specifically. | 428 // will register one specifically. |
| 439 service_->ClearProvidersForTesting(); | 429 service_->ClearProvidersForTesting(); |
| 440 | 430 |
| 441 expected_extensions_count_ = 0; | 431 expected_extensions_count_ = 0; |
| 442 } | 432 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 456 file_util::CopyDirectory(source_install_dir, extensions_install_dir_, true); | 446 file_util::CopyDirectory(source_install_dir, extensions_install_dir_, true); |
| 457 | 447 |
| 458 InitializeExtensionService(temp_prefs, extensions_install_dir_, false); | 448 InitializeExtensionService(temp_prefs, extensions_install_dir_, false); |
| 459 } | 449 } |
| 460 | 450 |
| 461 void ExtensionServiceTestBase::InitializeEmptyExtensionService() { | 451 void ExtensionServiceTestBase::InitializeEmptyExtensionService() { |
| 462 InitializeExtensionServiceHelper(false); | 452 InitializeExtensionServiceHelper(false); |
| 463 } | 453 } |
| 464 | 454 |
| 465 void ExtensionServiceTestBase::InitializeExtensionProcessManager() { | 455 void ExtensionServiceTestBase::InitializeExtensionProcessManager() { |
| 466 profile_->CreateExtensionProcessManager(); | 456 static_cast<TestExtensionSystem*>( |
| 457 ExtensionSystemFactory::GetForProfile(profile_.get()))-> |
| 458 CreateExtensionProcessManager(); |
| 467 } | 459 } |
| 468 | 460 |
| 469 void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() { | 461 void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() { |
| 470 InitializeExtensionServiceHelper(true); | 462 InitializeExtensionServiceHelper(true); |
| 471 service_->updater()->Start(); | 463 service_->updater()->Start(); |
| 472 } | 464 } |
| 473 | 465 |
| 474 void ExtensionServiceTestBase::InitializeExtensionServiceHelper( | 466 void ExtensionServiceTestBase::InitializeExtensionServiceHelper( |
| 475 bool autoupdate_enabled) { | 467 bool autoupdate_enabled) { |
| 476 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 468 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 477 FilePath path_ = temp_dir_.path(); | 469 FilePath path_ = temp_dir_.path(); |
| 478 path_ = path_.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); | 470 path_ = path_.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); |
| 479 file_util::Delete(path_, true); | 471 file_util::Delete(path_, true); |
| 480 file_util::CreateDirectory(path_); | 472 file_util::CreateDirectory(path_); |
| 481 FilePath prefs_filename = path_ | 473 FilePath prefs_filename = path_ |
| 482 .Append(FILE_PATH_LITERAL("TestPreferences")); | 474 .Append(FILE_PATH_LITERAL("TestPreferences")); |
| 483 extensions_install_dir_ = path_.Append(FILE_PATH_LITERAL("Extensions")); | 475 extensions_install_dir_ = path_.Append(FILE_PATH_LITERAL("Extensions")); |
| 484 file_util::Delete(extensions_install_dir_, true); | 476 file_util::Delete(extensions_install_dir_, true); |
| 485 file_util::CreateDirectory(extensions_install_dir_); | 477 file_util::CreateDirectory(extensions_install_dir_); |
| 486 | 478 |
| 487 InitializeExtensionService(prefs_filename, extensions_install_dir_, | 479 InitializeExtensionService(prefs_filename, extensions_install_dir_, |
| 488 autoupdate_enabled); | 480 autoupdate_enabled); |
| 489 } | 481 } |
| 490 | 482 |
| 491 void ExtensionServiceTestBase::InitializeRequestContext() { | 483 void ExtensionServiceTestBase::InitializeRequestContext() { |
| 492 ASSERT_TRUE(profile_.get()); | 484 ASSERT_TRUE(profile_.get()); |
| 493 ExtensionTestingProfile* profile = | 485 TestingProfile* profile = |
| 494 static_cast<ExtensionTestingProfile*>(profile_.get()); | 486 static_cast<TestingProfile*>(profile_.get()); |
| 495 profile->CreateRequestContext(); | 487 profile->CreateRequestContext(); |
| 496 } | 488 } |
| 497 | 489 |
| 498 // static | 490 // static |
| 499 void ExtensionServiceTestBase::SetUpTestCase() { | 491 void ExtensionServiceTestBase::SetUpTestCase() { |
| 500 ExtensionErrorReporter::Init(false); // no noisy errors | 492 ExtensionErrorReporter::Init(false); // no noisy errors |
| 501 } | 493 } |
| 502 | 494 |
| 503 void ExtensionServiceTestBase::SetUp() { | 495 void ExtensionServiceTestBase::SetUp() { |
| 504 ExtensionErrorReporter::GetInstance()->ClearErrors(); | 496 ExtensionErrorReporter::GetInstance()->ClearErrors(); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 int expected_installed_extension_count = | 723 int expected_installed_extension_count = |
| 732 (expected_state >= INSTALLED) ? 1 : 0; | 724 (expected_state >= INSTALLED) ? 1 : 0; |
| 733 int expected_enabled_extension_count = | 725 int expected_enabled_extension_count = |
| 734 (expected_state >= ENABLED) ? 1 : 0; | 726 (expected_state >= ENABLED) ? 1 : 0; |
| 735 EXPECT_EQ(expected_installed_extension_count, | 727 EXPECT_EQ(expected_installed_extension_count, |
| 736 installed_extension_count); | 728 installed_extension_count); |
| 737 EXPECT_EQ(expected_enabled_extension_count, | 729 EXPECT_EQ(expected_enabled_extension_count, |
| 738 enabled_extension_count); | 730 enabled_extension_count); |
| 739 } | 731 } |
| 740 | 732 |
| 741 // Update() should delete the temporary input file. | 733 // Update() should the temporary input file. |
| 742 EXPECT_FALSE(file_util::PathExists(path)); | 734 EXPECT_FALSE(file_util::PathExists(path)); |
| 743 } | 735 } |
| 744 | 736 |
| 745 void TerminateExtension(const std::string& id) { | 737 void TerminateExtension(const std::string& id) { |
| 746 const Extension* extension = service_->GetInstalledExtension(id); | 738 const Extension* extension = service_->GetInstalledExtension(id); |
| 747 if (!extension) { | 739 if (!extension) { |
| 748 ADD_FAILURE(); | 740 ADD_FAILURE(); |
| 749 return; | 741 return; |
| 750 } | 742 } |
| 751 service_->TrackTerminatedExtensionForTest(extension); | 743 service_->TrackTerminatedExtensionForTest(extension); |
| (...skipping 3061 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3813 content::TestBrowserThread ui_thread(BrowserThread::UI, &loop); | 3805 content::TestBrowserThread ui_thread(BrowserThread::UI, &loop); |
| 3814 content::TestBrowserThread file_thread(BrowserThread::FILE, &loop); | 3806 content::TestBrowserThread file_thread(BrowserThread::FILE, &loop); |
| 3815 scoped_ptr<CommandLine> command_line; | 3807 scoped_ptr<CommandLine> command_line; |
| 3816 FilePath install_dir = profile->GetPath() | 3808 FilePath install_dir = profile->GetPath() |
| 3817 .AppendASCII(ExtensionService::kInstallDirectoryName); | 3809 .AppendASCII(ExtensionService::kInstallDirectoryName); |
| 3818 webkit::npapi::MockPluginList plugin_list(NULL, 0); | 3810 webkit::npapi::MockPluginList plugin_list(NULL, 0); |
| 3819 PluginService::GetInstance()->SetPluginListForTesting(&plugin_list); | 3811 PluginService::GetInstance()->SetPluginListForTesting(&plugin_list); |
| 3820 | 3812 |
| 3821 // By default, we are enabled. | 3813 // By default, we are enabled. |
| 3822 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); | 3814 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); |
| 3823 // Owned by |profile|. | 3815 ExtensionService* service = static_cast<TestExtensionSystem*>( |
| 3824 ExtensionService* service = | 3816 ExtensionSystemFactory::GetForProfile(profile.get()))-> |
| 3825 profile->CreateExtensionService(command_line.get(), | 3817 CreateExtensionService( |
| 3826 install_dir, | 3818 command_line.get(), |
| 3827 false); | 3819 install_dir, |
| 3820 false); |
| 3828 EXPECT_TRUE(service->extensions_enabled()); | 3821 EXPECT_TRUE(service->extensions_enabled()); |
| 3829 service->Init(); | 3822 service->Init(); |
| 3830 loop.RunAllPending(); | 3823 loop.RunAllPending(); |
| 3831 EXPECT_TRUE(recorder.ready()); | 3824 EXPECT_TRUE(recorder.ready()); |
| 3832 | 3825 |
| 3833 // If either the command line or pref is set, we are disabled. | 3826 // If either the command line or pref is set, we are disabled. |
| 3834 recorder.set_ready(false); | 3827 recorder.set_ready(false); |
| 3835 profile.reset(new TestingProfile()); | 3828 profile.reset(new TestingProfile()); |
| 3836 command_line->AppendSwitch(switches::kDisableExtensions); | 3829 command_line->AppendSwitch(switches::kDisableExtensions); |
| 3837 service = profile->CreateExtensionService(command_line.get(), | 3830 service = static_cast<TestExtensionSystem*>( |
| 3838 install_dir, | 3831 ExtensionSystemFactory::GetForProfile(profile.get()))-> |
| 3839 false); | 3832 CreateExtensionService( |
| 3833 command_line.get(), |
| 3834 install_dir, |
| 3835 false); |
| 3840 EXPECT_FALSE(service->extensions_enabled()); | 3836 EXPECT_FALSE(service->extensions_enabled()); |
| 3841 service->Init(); | 3837 service->Init(); |
| 3842 loop.RunAllPending(); | 3838 loop.RunAllPending(); |
| 3843 EXPECT_TRUE(recorder.ready()); | 3839 EXPECT_TRUE(recorder.ready()); |
| 3844 | 3840 |
| 3845 recorder.set_ready(false); | 3841 recorder.set_ready(false); |
| 3846 profile.reset(new TestingProfile()); | 3842 profile.reset(new TestingProfile()); |
| 3847 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); | 3843 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
| 3848 service = profile->CreateExtensionService(command_line.get(), | 3844 service = static_cast<TestExtensionSystem*>( |
| 3849 install_dir, | 3845 ExtensionSystemFactory::GetForProfile(profile.get()))-> |
| 3850 false); | 3846 CreateExtensionService( |
| 3847 command_line.get(), |
| 3848 install_dir, |
| 3849 false); |
| 3851 EXPECT_FALSE(service->extensions_enabled()); | 3850 EXPECT_FALSE(service->extensions_enabled()); |
| 3852 service->Init(); | 3851 service->Init(); |
| 3853 loop.RunAllPending(); | 3852 loop.RunAllPending(); |
| 3854 EXPECT_TRUE(recorder.ready()); | 3853 EXPECT_TRUE(recorder.ready()); |
| 3855 | 3854 |
| 3856 recorder.set_ready(false); | 3855 recorder.set_ready(false); |
| 3857 profile.reset(new TestingProfile()); | 3856 profile.reset(new TestingProfile()); |
| 3858 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); | 3857 profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
| 3859 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); | 3858 command_line.reset(new CommandLine(CommandLine::NO_PROGRAM)); |
| 3860 service = profile->CreateExtensionService(command_line.get(), | 3859 service = static_cast<TestExtensionSystem*>( |
| 3861 install_dir, | 3860 ExtensionSystemFactory::GetForProfile(profile.get()))-> |
| 3862 false); | 3861 CreateExtensionService( |
| 3862 command_line.get(), |
| 3863 install_dir, |
| 3864 false); |
| 3863 EXPECT_FALSE(service->extensions_enabled()); | 3865 EXPECT_FALSE(service->extensions_enabled()); |
| 3864 service->Init(); | 3866 service->Init(); |
| 3865 loop.RunAllPending(); | 3867 loop.RunAllPending(); |
| 3866 EXPECT_TRUE(recorder.ready()); | 3868 EXPECT_TRUE(recorder.ready()); |
| 3867 | 3869 |
| 3868 // Explicitly delete all the resources used in this test. | 3870 // Explicitly delete all the resources used in this test. |
| 3869 profile.reset(); | 3871 profile.reset(); |
| 3870 service = NULL; | 3872 service = NULL; |
| 3871 } | 3873 } |
| 3872 | 3874 |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4784 ASSERT_FALSE(AddPendingSyncInstall()); | 4786 ASSERT_FALSE(AddPendingSyncInstall()); |
| 4785 | 4787 |
| 4786 // Wait for the external source to install. | 4788 // Wait for the external source to install. |
| 4787 WaitForCrxInstall(crx_path_, INSTALL_NEW); | 4789 WaitForCrxInstall(crx_path_, INSTALL_NEW); |
| 4788 ASSERT_TRUE(IsCrxInstalled()); | 4790 ASSERT_TRUE(IsCrxInstalled()); |
| 4789 | 4791 |
| 4790 // Now that the extension is installed, sync request should fail | 4792 // Now that the extension is installed, sync request should fail |
| 4791 // because the extension is already installed. | 4793 // because the extension is already installed. |
| 4792 ASSERT_FALSE(AddPendingSyncInstall()); | 4794 ASSERT_FALSE(AddPendingSyncInstall()); |
| 4793 } | 4795 } |
| OLD | NEW |