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.h" | 5 #include "chrome/browser/extensions/extension_service.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 using extensions::ExternalInstallError; | 175 using extensions::ExternalInstallError; |
176 using extensions::ExternalInstallInfoFile; | 176 using extensions::ExternalInstallInfoFile; |
177 using extensions::ExternalInstallInfoUpdateUrl; | 177 using extensions::ExternalInstallInfoUpdateUrl; |
178 using extensions::ExternalProviderInterface; | 178 using extensions::ExternalProviderInterface; |
179 using extensions::FakeSafeBrowsingDatabaseManager; | 179 using extensions::FakeSafeBrowsingDatabaseManager; |
180 using extensions::FeatureSwitch; | 180 using extensions::FeatureSwitch; |
181 using extensions::Manifest; | 181 using extensions::Manifest; |
182 using extensions::MockExternalProvider; | 182 using extensions::MockExternalProvider; |
183 using extensions::PermissionSet; | 183 using extensions::PermissionSet; |
184 using extensions::TestExtensionSystem; | 184 using extensions::TestExtensionSystem; |
185 using extensions::UnloadedExtensionInfo; | 185 using extensions::UnloadedExtensionReason; |
186 using extensions::URLPatternSet; | 186 using extensions::URLPatternSet; |
187 | 187 |
188 namespace keys = extensions::manifest_keys; | 188 namespace keys = extensions::manifest_keys; |
189 | 189 |
190 namespace { | 190 namespace { |
191 | 191 |
192 // Extension ids used during testing. | 192 // Extension ids used during testing. |
193 const char good0[] = "behllobkkfkfnphdnhnkndlbkcpglgmj"; | 193 const char good0[] = "behllobkkfkfnphdnhnkndlbkcpglgmj"; |
194 const char good1[] = "hpiknbiabeeppbpihjehijgoemciehgk"; | 194 const char good1[] = "hpiknbiabeeppbpihjehijgoemciehgk"; |
195 const char good2[] = "bjafgdebaacbbbecmhlhpofkepfkgcpa"; | 195 const char good2[] = "bjafgdebaacbbbecmhlhpofkepfkgcpa"; |
(...skipping 4214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4410 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 4410 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
4411 EXPECT_EQ(0u, registry()->disabled_extensions().size()); | 4411 EXPECT_EQ(0u, registry()->disabled_extensions().size()); |
4412 } | 4412 } |
4413 | 4413 |
4414 TEST_F(ExtensionServiceTest, UninstallExtension) { | 4414 TEST_F(ExtensionServiceTest, UninstallExtension) { |
4415 InitializeEmptyExtensionService(); | 4415 InitializeEmptyExtensionService(); |
4416 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 4416 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
4417 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 4417 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
4418 UninstallExtension(good_crx, false); | 4418 UninstallExtension(good_crx, false); |
4419 EXPECT_EQ(0u, registry()->enabled_extensions().size()); | 4419 EXPECT_EQ(0u, registry()->enabled_extensions().size()); |
4420 EXPECT_EQ(UnloadedExtensionInfo::REASON_UNINSTALL, unloaded_reason_); | 4420 EXPECT_EQ(UnloadedExtensionReason::UNINSTALL, unloaded_reason_); |
4421 } | 4421 } |
4422 | 4422 |
4423 TEST_F(ExtensionServiceTest, UninstallTerminatedExtension) { | 4423 TEST_F(ExtensionServiceTest, UninstallTerminatedExtension) { |
4424 InitializeEmptyExtensionService(); | 4424 InitializeEmptyExtensionService(); |
4425 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 4425 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
4426 TerminateExtension(good_crx); | 4426 TerminateExtension(good_crx); |
4427 UninstallExtension(good_crx, false); | 4427 UninstallExtension(good_crx, false); |
4428 EXPECT_EQ(UnloadedExtensionInfo::REASON_TERMINATE, unloaded_reason_); | 4428 EXPECT_EQ(UnloadedExtensionReason::TERMINATE, unloaded_reason_); |
4429 } | 4429 } |
4430 | 4430 |
4431 // Tests the uninstaller helper. | 4431 // Tests the uninstaller helper. |
4432 TEST_F(ExtensionServiceTest, UninstallExtensionHelper) { | 4432 TEST_F(ExtensionServiceTest, UninstallExtensionHelper) { |
4433 InitializeEmptyExtensionService(); | 4433 InitializeEmptyExtensionService(); |
4434 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 4434 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
4435 UninstallExtension(good_crx, true); | 4435 UninstallExtension(good_crx, true); |
4436 EXPECT_EQ(UnloadedExtensionInfo::REASON_UNINSTALL, unloaded_reason_); | 4436 EXPECT_EQ(UnloadedExtensionReason::UNINSTALL, unloaded_reason_); |
4437 } | 4437 } |
4438 | 4438 |
4439 TEST_F(ExtensionServiceTest, UninstallExtensionHelperTerminated) { | 4439 TEST_F(ExtensionServiceTest, UninstallExtensionHelperTerminated) { |
4440 InitializeEmptyExtensionService(); | 4440 InitializeEmptyExtensionService(); |
4441 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 4441 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
4442 TerminateExtension(good_crx); | 4442 TerminateExtension(good_crx); |
4443 UninstallExtension(good_crx, true); | 4443 UninstallExtension(good_crx, true); |
4444 EXPECT_EQ(UnloadedExtensionInfo::REASON_TERMINATE, unloaded_reason_); | 4444 EXPECT_EQ(UnloadedExtensionReason::TERMINATE, unloaded_reason_); |
4445 } | 4445 } |
4446 | 4446 |
4447 // An extension disabled because of unsupported requirements should re-enabled | 4447 // An extension disabled because of unsupported requirements should re-enabled |
4448 // if updated to a version with supported requirements as long as there are no | 4448 // if updated to a version with supported requirements as long as there are no |
4449 // other disable reasons. | 4449 // other disable reasons. |
4450 TEST_F(ExtensionServiceTest, UpgradingRequirementsEnabled) { | 4450 TEST_F(ExtensionServiceTest, UpgradingRequirementsEnabled) { |
4451 InitializeEmptyExtensionService(); | 4451 InitializeEmptyExtensionService(); |
4452 content::GpuDataManager::GetInstance()->BlacklistWebGLForTesting(); | 4452 content::GpuDataManager::GetInstance()->BlacklistWebGLForTesting(); |
4453 | 4453 |
4454 base::FilePath path = data_dir().AppendASCII("requirements"); | 4454 base::FilePath path = data_dir().AppendASCII("requirements"); |
(...skipping 2404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6859 id, extensions::UNINSTALL_REASON_USER_INITIATED, | 6859 id, extensions::UNINSTALL_REASON_USER_INITIATED, |
6860 base::Bind(&base::DoNothing), nullptr)); | 6860 base::Bind(&base::DoNothing), nullptr)); |
6861 EXPECT_EQ(nullptr, registry()->GetInstalledExtension(id)); | 6861 EXPECT_EQ(nullptr, registry()->GetInstalledExtension(id)); |
6862 } | 6862 } |
6863 | 6863 |
6864 // Tests a profile being destroyed correctly disables extensions. | 6864 // Tests a profile being destroyed correctly disables extensions. |
6865 TEST_F(ExtensionServiceTest, DestroyingProfileClearsExtensions) { | 6865 TEST_F(ExtensionServiceTest, DestroyingProfileClearsExtensions) { |
6866 InitializeEmptyExtensionService(); | 6866 InitializeEmptyExtensionService(); |
6867 | 6867 |
6868 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 6868 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
6869 EXPECT_NE(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); | 6869 EXPECT_NE(UnloadedExtensionReason::PROFILE_SHUTDOWN, unloaded_reason_); |
6870 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 6870 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
6871 EXPECT_EQ(0u, registry()->disabled_extensions().size()); | 6871 EXPECT_EQ(0u, registry()->disabled_extensions().size()); |
6872 EXPECT_EQ(0u, registry()->terminated_extensions().size()); | 6872 EXPECT_EQ(0u, registry()->terminated_extensions().size()); |
6873 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); | 6873 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); |
6874 | 6874 |
6875 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, | 6875 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, |
6876 content::Source<Profile>(profile()), | 6876 content::Source<Profile>(profile()), |
6877 content::NotificationService::NoDetails()); | 6877 content::NotificationService::NoDetails()); |
6878 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); | 6878 EXPECT_EQ(UnloadedExtensionReason::PROFILE_SHUTDOWN, unloaded_reason_); |
6879 EXPECT_EQ(0u, registry()->enabled_extensions().size()); | 6879 EXPECT_EQ(0u, registry()->enabled_extensions().size()); |
6880 EXPECT_EQ(0u, registry()->disabled_extensions().size()); | 6880 EXPECT_EQ(0u, registry()->disabled_extensions().size()); |
6881 EXPECT_EQ(0u, registry()->terminated_extensions().size()); | 6881 EXPECT_EQ(0u, registry()->terminated_extensions().size()); |
6882 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); | 6882 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); |
6883 } | 6883 } |
6884 | 6884 |
6885 // Test that updating a corrupt extension removes the DISABLE_CORRUPTED disable | 6885 // Test that updating a corrupt extension removes the DISABLE_CORRUPTED disable |
6886 // reason. | 6886 // reason. |
6887 TEST_F(ExtensionServiceTest, CorruptExtensionUpdate) { | 6887 TEST_F(ExtensionServiceTest, CorruptExtensionUpdate) { |
6888 InitializeEmptyExtensionService(); | 6888 InitializeEmptyExtensionService(); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6958 shared_module->manifest()->type()); | 6958 shared_module->manifest()->type()); |
6959 EXPECT_TRUE(registry()->enabled_extensions().Contains(kExtensionId)); | 6959 EXPECT_TRUE(registry()->enabled_extensions().Contains(kExtensionId)); |
6960 | 6960 |
6961 // Reload the extension and wait for it to complete. This previously crashed | 6961 // Reload the extension and wait for it to complete. This previously crashed |
6962 // (see crbug.com/676815). | 6962 // (see crbug.com/676815). |
6963 service()->ReloadExtension(kExtensionId); | 6963 service()->ReloadExtension(kExtensionId); |
6964 base::RunLoop().RunUntilIdle(); | 6964 base::RunLoop().RunUntilIdle(); |
6965 // The shared module should be enabled. | 6965 // The shared module should be enabled. |
6966 EXPECT_TRUE(registry()->enabled_extensions().Contains(kExtensionId)); | 6966 EXPECT_TRUE(registry()->enabled_extensions().Contains(kExtensionId)); |
6967 } | 6967 } |
OLD | NEW |