OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
413 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor); | 413 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor); |
414 }; | 414 }; |
415 | 415 |
416 ExtensionServiceTestBase::ExtensionServiceInitParams:: | 416 ExtensionServiceTestBase::ExtensionServiceInitParams:: |
417 ExtensionServiceInitParams() | 417 ExtensionServiceInitParams() |
418 : autoupdate_enabled(false), is_first_run(true) { | 418 : autoupdate_enabled(false), is_first_run(true) { |
419 } | 419 } |
420 | 420 |
421 // Our message loop may be used in tests which require it to be an IO loop. | 421 // Our message loop may be used in tests which require it to be an IO loop. |
422 ExtensionServiceTestBase::ExtensionServiceTestBase() | 422 ExtensionServiceTestBase::ExtensionServiceTestBase() |
423 : loop_(MessageLoop::TYPE_IO), | 423 : loop_(base::MessageLoop::TYPE_IO), |
424 service_(NULL), | 424 service_(NULL), |
425 management_policy_(NULL), | 425 management_policy_(NULL), |
426 expected_extensions_count_(0), | 426 expected_extensions_count_(0), |
427 ui_thread_(BrowserThread::UI, &loop_), | 427 ui_thread_(BrowserThread::UI, &loop_), |
428 db_thread_(BrowserThread::DB, &loop_), | 428 db_thread_(BrowserThread::DB, &loop_), |
429 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &loop_), | 429 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &loop_), |
430 file_thread_(BrowserThread::FILE, &loop_), | 430 file_thread_(BrowserThread::FILE, &loop_), |
431 file_user_blocking_thread_(BrowserThread::FILE_USER_BLOCKING, &loop_), | 431 file_user_blocking_thread_(BrowserThread::FILE_USER_BLOCKING, &loop_), |
432 io_thread_(BrowserThread::IO, &loop_) { | 432 io_thread_(BrowserThread::IO, &loop_) { |
433 base::FilePath test_data_dir; | 433 base::FilePath test_data_dir; |
434 if (!PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)) { | 434 if (!PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)) { |
435 ADD_FAILURE(); | 435 ADD_FAILURE(); |
436 return; | 436 return; |
437 } | 437 } |
438 data_dir_ = test_data_dir.AppendASCII("extensions"); | 438 data_dir_ = test_data_dir.AppendASCII("extensions"); |
439 } | 439 } |
440 | 440 |
441 ExtensionServiceTestBase::~ExtensionServiceTestBase() { | 441 ExtensionServiceTestBase::~ExtensionServiceTestBase() { |
442 // Drop our reference to ExtensionService and TestingProfile, so that they | 442 // Drop our reference to ExtensionService and TestingProfile, so that they |
443 // can be destroyed while BrowserThreads and MessageLoop are still around | 443 // can be destroyed while BrowserThreads and MessageLoop are still around |
444 // (they are used in the destruction process). | 444 // (they are used in the destruction process). |
445 service_ = NULL; | 445 service_ = NULL; |
446 MessageLoop::current()->RunUntilIdle(); | 446 base::MessageLoop::current()->RunUntilIdle(); |
447 profile_.reset(NULL); | 447 profile_.reset(NULL); |
448 MessageLoop::current()->RunUntilIdle(); | 448 base::MessageLoop::current()->RunUntilIdle(); |
449 } | 449 } |
450 | 450 |
451 void ExtensionServiceTestBase::InitializeExtensionService( | 451 void ExtensionServiceTestBase::InitializeExtensionService( |
452 const ExtensionServiceTestBase::ExtensionServiceInitParams& params) { | 452 const ExtensionServiceTestBase::ExtensionServiceInitParams& params) { |
453 TestingProfile::Builder profile_builder; | 453 TestingProfile::Builder profile_builder; |
454 // Create a PrefService that only contains user defined preference values. | 454 // Create a PrefService that only contains user defined preference values. |
455 PrefServiceMockBuilder builder; | 455 PrefServiceMockBuilder builder; |
456 builder.WithUserFilePrefs( | 456 builder.WithUserFilePrefs( |
457 params.pref_file, loop_.message_loop_proxy()); | 457 params.pref_file, loop_.message_loop_proxy()); |
458 scoped_refptr<PrefRegistrySyncable> registry(new PrefRegistrySyncable); | 458 scoped_refptr<PrefRegistrySyncable> registry(new PrefRegistrySyncable); |
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1115 // If packing succeeded, we make sure that the package names match our | 1115 // If packing succeeded, we make sure that the package names match our |
1116 // expectations. | 1116 // expectations. |
1117 void PackExtensionTestClient::OnPackSuccess( | 1117 void PackExtensionTestClient::OnPackSuccess( |
1118 const base::FilePath& crx_path, | 1118 const base::FilePath& crx_path, |
1119 const base::FilePath& private_key_path) { | 1119 const base::FilePath& private_key_path) { |
1120 // We got the notification and processed it; we don't expect any further tasks | 1120 // We got the notification and processed it; we don't expect any further tasks |
1121 // to be posted to the current thread, so we should stop blocking and continue | 1121 // to be posted to the current thread, so we should stop blocking and continue |
1122 // on with the rest of the test. | 1122 // on with the rest of the test. |
1123 // This call to |Quit()| matches the call to |Run()| in the | 1123 // This call to |Quit()| matches the call to |Run()| in the |
1124 // |PackPunctuatedExtension| test. | 1124 // |PackPunctuatedExtension| test. |
1125 MessageLoop::current()->Quit(); | 1125 base::MessageLoop::current()->Quit(); |
1126 EXPECT_EQ(expected_crx_path_.value(), crx_path.value()); | 1126 EXPECT_EQ(expected_crx_path_.value(), crx_path.value()); |
1127 EXPECT_EQ(expected_private_key_path_.value(), private_key_path.value()); | 1127 EXPECT_EQ(expected_private_key_path_.value(), private_key_path.value()); |
1128 ASSERT_TRUE(file_util::PathExists(private_key_path)); | 1128 ASSERT_TRUE(file_util::PathExists(private_key_path)); |
1129 } | 1129 } |
1130 | 1130 |
1131 // The tests are designed so that we never expect to see a packing error. | 1131 // The tests are designed so that we never expect to see a packing error. |
1132 void PackExtensionTestClient::OnPackFailure(const std::string& error_message, | 1132 void PackExtensionTestClient::OnPackFailure(const std::string& error_message, |
1133 ExtensionCreator::ErrorType type) { | 1133 ExtensionCreator::ErrorType type) { |
1134 if (type == ExtensionCreator::kCRXExists) | 1134 if (type == ExtensionCreator::kCRXExists) |
1135 FAIL() << "Packing should not fail."; | 1135 FAIL() << "Packing should not fail."; |
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2014 new extensions::PackExtensionJob(&pack_client, output_dir, | 2014 new extensions::PackExtensionJob(&pack_client, output_dir, |
2015 base::FilePath(), | 2015 base::FilePath(), |
2016 ExtensionCreator::kOverwriteCRX)); | 2016 ExtensionCreator::kOverwriteCRX)); |
2017 packer->Start(); | 2017 packer->Start(); |
2018 | 2018 |
2019 // The packer will post a notification task to the current thread's message | 2019 // The packer will post a notification task to the current thread's message |
2020 // loop when it is finished. We manually run the loop here so that we | 2020 // loop when it is finished. We manually run the loop here so that we |
2021 // block and catch the notification; otherwise, the process would exit. | 2021 // block and catch the notification; otherwise, the process would exit. |
2022 // This call to |Run()| is matched by a call to |Quit()| in the | 2022 // This call to |Run()| is matched by a call to |Quit()| in the |
2023 // |PackExtensionTestClient|'s notification handling code. | 2023 // |PackExtensionTestClient|'s notification handling code. |
2024 MessageLoop::current()->Run(); | 2024 base::MessageLoop::current()->Run(); |
2025 | 2025 |
2026 if (HasFatalFailure()) | 2026 if (HasFatalFailure()) |
2027 return; | 2027 return; |
2028 | 2028 |
2029 InstallCRX(expected_crx_path, INSTALL_NEW); | 2029 InstallCRX(expected_crx_path, INSTALL_NEW); |
2030 } | 2030 } |
2031 } | 2031 } |
2032 | 2032 |
2033 TEST_F(ExtensionServiceTest, PackExtensionContainingKeyFails) { | 2033 TEST_F(ExtensionServiceTest, PackExtensionContainingKeyFails) { |
2034 InitializeEmptyExtensionService(); | 2034 InitializeEmptyExtensionService(); |
(...skipping 1763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3798 .AppendASCII("v2_bad_requirements"); | 3798 .AppendASCII("v2_bad_requirements"); |
3799 extensions::UnpackedInstaller::Create(service_)->Load(path); | 3799 extensions::UnpackedInstaller::Create(service_)->Load(path); |
3800 loop_.RunUntilIdle(); | 3800 loop_.RunUntilIdle(); |
3801 EXPECT_EQ(1u, GetErrors().size()); | 3801 EXPECT_EQ(1u, GetErrors().size()); |
3802 EXPECT_EQ(0u, service_->extensions()->size()); | 3802 EXPECT_EQ(0u, service_->extensions()->size()); |
3803 } | 3803 } |
3804 | 3804 |
3805 class ExtensionCookieCallback { | 3805 class ExtensionCookieCallback { |
3806 public: | 3806 public: |
3807 ExtensionCookieCallback() | 3807 ExtensionCookieCallback() |
3808 : result_(false), | 3808 : result_(false), weak_factory_(base::MessageLoop::current()) {} |
brettw
2013/04/28 04:26:27
In other cases you were a bit too aggressive putti
| |
3809 weak_factory_(MessageLoop::current()) {} | |
3810 | 3809 |
3811 void SetCookieCallback(bool result) { | 3810 void SetCookieCallback(bool result) { |
3812 MessageLoop::current()->PostTask( | 3811 base::MessageLoop::current()->PostTask( |
3813 FROM_HERE, base::Bind(&MessageLoop::Quit, weak_factory_.GetWeakPtr())); | 3812 FROM_HERE, |
brettw
2013/04/28 04:26:27
Old way was fine, below also.
| |
3813 base::Bind(&base::MessageLoop::Quit, weak_factory_.GetWeakPtr())); | |
3814 result_ = result; | 3814 result_ = result; |
3815 } | 3815 } |
3816 | 3816 |
3817 void GetAllCookiesCallback(const net::CookieList& list) { | 3817 void GetAllCookiesCallback(const net::CookieList& list) { |
3818 MessageLoop::current()->PostTask( | 3818 base::MessageLoop::current()->PostTask( |
3819 FROM_HERE, base::Bind(&MessageLoop::Quit, weak_factory_.GetWeakPtr())); | 3819 FROM_HERE, |
3820 base::Bind(&base::MessageLoop::Quit, weak_factory_.GetWeakPtr())); | |
3820 list_ = list; | 3821 list_ = list; |
3821 } | 3822 } |
3822 net::CookieList list_; | 3823 net::CookieList list_; |
3823 bool result_; | 3824 bool result_; |
3824 base::WeakPtrFactory<MessageLoop> weak_factory_; | 3825 base::WeakPtrFactory<base::MessageLoop> weak_factory_; |
3825 }; | 3826 }; |
3826 | 3827 |
3827 // Verifies extension state is removed upon uninstall. | 3828 // Verifies extension state is removed upon uninstall. |
3828 TEST_F(ExtensionServiceTest, ClearExtensionData) { | 3829 TEST_F(ExtensionServiceTest, ClearExtensionData) { |
3829 InitializeEmptyExtensionService(); | 3830 InitializeEmptyExtensionService(); |
3830 ExtensionCookieCallback callback; | 3831 ExtensionCookieCallback callback; |
3831 | 3832 |
3832 // Load a test extension. | 3833 // Load a test extension. |
3833 base::FilePath path = data_dir_; | 3834 base::FilePath path = data_dir_; |
3834 path = path.AppendASCII("good.crx"); | 3835 path = path.AppendASCII("good.crx"); |
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4631 // | 4632 // |
4632 // Also tests that we always fire EXTENSIONS_READY, no matter whether we are | 4633 // Also tests that we always fire EXTENSIONS_READY, no matter whether we are |
4633 // enabled or not. | 4634 // enabled or not. |
4634 TEST(ExtensionServiceTestSimple, Enabledness) { | 4635 TEST(ExtensionServiceTestSimple, Enabledness) { |
4635 // Make sure the PluginService singleton is destroyed at the end of the test. | 4636 // Make sure the PluginService singleton is destroyed at the end of the test. |
4636 base::ShadowingAtExitManager at_exit_manager; | 4637 base::ShadowingAtExitManager at_exit_manager; |
4637 | 4638 |
4638 ExtensionErrorReporter::Init(false); // no noisy errors | 4639 ExtensionErrorReporter::Init(false); // no noisy errors |
4639 ExtensionsReadyRecorder recorder; | 4640 ExtensionsReadyRecorder recorder; |
4640 scoped_ptr<TestingProfile> profile(new TestingProfile()); | 4641 scoped_ptr<TestingProfile> profile(new TestingProfile()); |
4641 MessageLoop loop; | 4642 base::MessageLoop loop; |
4642 content::TestBrowserThread ui_thread(BrowserThread::UI, &loop); | 4643 content::TestBrowserThread ui_thread(BrowserThread::UI, &loop); |
4643 content::TestBrowserThread file_thread(BrowserThread::FILE, &loop); | 4644 content::TestBrowserThread file_thread(BrowserThread::FILE, &loop); |
4644 #if defined OS_CHROMEOS | 4645 #if defined OS_CHROMEOS |
4645 chromeos::ScopedTestDeviceSettingsService device_settings_service; | 4646 chromeos::ScopedTestDeviceSettingsService device_settings_service; |
4646 chromeos::ScopedTestCrosSettings cros_settings; | 4647 chromeos::ScopedTestCrosSettings cros_settings; |
4647 scoped_ptr<chromeos::ScopedTestUserManager> user_manager( | 4648 scoped_ptr<chromeos::ScopedTestUserManager> user_manager( |
4648 new chromeos::ScopedTestUserManager); | 4649 new chromeos::ScopedTestUserManager); |
4649 #endif | 4650 #endif |
4650 scoped_ptr<CommandLine> command_line; | 4651 scoped_ptr<CommandLine> command_line; |
4651 base::FilePath install_dir = profile->GetPath() | 4652 base::FilePath install_dir = profile->GetPath() |
(...skipping 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5955 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); | 5956 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); |
5956 AddMockExternalProvider(provider); | 5957 AddMockExternalProvider(provider); |
5957 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); | 5958 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); |
5958 | 5959 |
5959 service_->CheckForExternalUpdates(); | 5960 service_->CheckForExternalUpdates(); |
5960 loop_.RunUntilIdle(); | 5961 loop_.RunUntilIdle(); |
5961 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); | 5962 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); |
5962 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); | 5963 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); |
5963 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); | 5964 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); |
5964 } | 5965 } |
OLD | NEW |