Chromium Code Reviews| Index: chrome/browser/extensions/extension_service_unittest.cc |
| diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc |
| index 0433e03a85195cb8339742dec1f51aa7496ea880..b66298ad1d16bd2ac72e6f508414542cbf606988 100644 |
| --- a/chrome/browser/extensions/extension_service_unittest.cc |
| +++ b/chrome/browser/extensions/extension_service_unittest.cc |
| @@ -258,6 +258,19 @@ size_t GetExternalInstallBubbleCount(ExtensionService* service) { |
| return bubble_count; |
| } |
| +scoped_refptr<Extension> CreateExtension(const base::string16& name, |
| + const base::FilePath& path, |
| + Manifest::Location location) { |
| + base::DictionaryValue manifest; |
| + manifest.SetString(extensions::manifest_keys::kVersion, "1.0.0.0"); |
| + manifest.SetString(extensions::manifest_keys::kName, name); |
| + std::string error; |
| + scoped_refptr<Extension> extension = |
| + Extension::Create(path, location, manifest, Extension::NO_FLAGS, &error); |
| + EXPECT_TRUE(extension.get() != nullptr) << error; |
| + return extension; |
| +} |
| + |
| } // namespace |
| class MockExtensionProvider : public extensions::ExternalProviderInterface { |
| @@ -6408,6 +6421,39 @@ TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) { |
| EXPECT_TRUE(service()->IsExtensionEnabled(page_action)); |
| } |
| +// As for components, only non-external component extensions can be disabled. |
|
lazyboy
2017/01/24 03:30:01
external instead of non-external?
mtomasz
2017/01/26 08:47:06
Done.
|
| +TEST_F(ExtensionServiceTest, DisablingComponentExtensions) { |
| + InitializeEmptyExtensionService(); |
| + service_->Init(); |
| + |
| + base::ScopedTempDir temp_dir; |
|
lazyboy
2017/01/24 03:30:01
Do you need this?
mtomasz
2017/01/26 08:47:06
Nope! Done.
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| + |
| + scoped_refptr<Extension> external_component_extension = CreateExtension( |
| + base::ASCIIToUTF16("external_component_extension"), |
| + base::FilePath(FILE_PATH_LITERAL("//external_component_extension")), |
| + Manifest::EXTERNAL_COMPONENT); |
| + service_->AddExtension(external_component_extension.get()); |
| + EXPECT_TRUE(registry()->enabled_extensions().Contains( |
| + external_component_extension->id())); |
| + service_->DisableExtension(external_component_extension->id(), |
| + extensions::Extension::DISABLE_USER_ACTION); |
| + EXPECT_TRUE(registry()->disabled_extensions().Contains( |
| + external_component_extension->id())); |
| + |
| + scoped_refptr<Extension> component_extension = CreateExtension( |
| + base::ASCIIToUTF16("component_extension"), |
| + base::FilePath(FILE_PATH_LITERAL("//component_extension")), |
| + Manifest::COMPONENT); |
| + service_->AddExtension(component_extension.get()); |
| + EXPECT_TRUE( |
| + registry()->enabled_extensions().Contains(component_extension->id())); |
| + service_->DisableExtension(component_extension->id(), |
| + extensions::Extension::DISABLE_USER_ACTION); |
| + EXPECT_FALSE( |
| + registry()->disabled_extensions().Contains(component_extension->id())); |
| +} |
| + |
| // Test that installing multiple external extensions works. |
| // Flaky on windows; http://crbug.com/295757 . |
| // Causes race conditions with an in-process utility thread, so disable under |