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 0d7905fbd84226cb78a70a4f73b57e6ce1942bde..8dbaa632688bfb805441f30d5559b88a28ff7388 100644 |
| --- a/chrome/browser/extensions/extension_service_unittest.cc |
| +++ b/chrome/browser/extensions/extension_service_unittest.cc |
| @@ -3584,6 +3584,105 @@ TEST_F(ExtensionServiceTest, ReloadBlacklistedExtension) { |
| #endif // defined(ENABLE_BLACKLIST_TESTS) |
| +// Tests blocking then unblocking extensions after the service has been |
| +// initialized. |
| +TEST_F(ExtensionServiceTest, SetUnsetBlockingState) { |
| + // A profile with 3 extensions installed: good0, good1, and good2. |
| + InitializeGoodInstalledExtensionService(); |
| + service()->Init(); |
| + |
| + const extensions::ExtensionSet& enabled_extensions = |
| + registry()->enabled_extensions(); |
| + const extensions::ExtensionSet& blocked_extensions = |
| + registry()->blocked_extensions(); |
| + |
| + EXPECT_TRUE(enabled_extensions.Contains(good0) && |
| + !blocked_extensions.Contains(good0)); |
| + EXPECT_TRUE(enabled_extensions.Contains(good1) && |
| + !blocked_extensions.Contains(good1)); |
| + EXPECT_TRUE(enabled_extensions.Contains(good2) && |
| + !blocked_extensions.Contains(good2)); |
|
not at google - send to devlin
2014/11/20 18:27:20
It's better to separate the assertions rather than
Mike Lerman
2014/11/21 17:00:13
Done.
|
| + |
| + // Block the extensions. |
| + service()->BlockAllExtensions(); |
| + base::RunLoop().RunUntilIdle(); |
| + |
| + // All extensions should be blocked. |
| + EXPECT_TRUE(!enabled_extensions.Contains(good0) && |
| + blocked_extensions.Contains(good0)); |
| + EXPECT_TRUE(!enabled_extensions.Contains(good1) && |
| + blocked_extensions.Contains(good1)); |
| + EXPECT_TRUE(!enabled_extensions.Contains(good2) && |
| + blocked_extensions.Contains(good2)); |
| + |
| + service()->UnblockAllExtensions(); |
| + base::RunLoop().RunUntilIdle(); |
| + |
|
not at google - send to devlin
2014/11/20 18:27:20
I think it's also important to test some more case
Mike Lerman
2014/11/21 17:00:13
Wrote a helper method to refactor the boiler plate
|
| + EXPECT_TRUE(enabled_extensions.Contains(good0) && |
| + !blocked_extensions.Contains(good0)); |
| + EXPECT_TRUE(enabled_extensions.Contains(good1) && |
| + !blocked_extensions.Contains(good1)); |
| + EXPECT_TRUE(enabled_extensions.Contains(good2) && |
| + !blocked_extensions.Contains(good2)); |
| +} |
| + |
| +// Tests that blocking then unblocking the service doesn't affect component |
| +// extensions. |
|
not at google - send to devlin
2014/11/20 18:27:20
If possible could you also put policy extensions i
Mike Lerman
2014/11/21 17:00:13
I presume by "policy extension" you mean an extens
|
| +TEST_F(ExtensionServiceTest, SetUnsetBlockingStateComponent) { |
| + InitializeEmptyExtensionServiceWithTestingPrefs(); |
| + |
| + service()->BlockAllExtensions(); |
| + |
| + // Install a component extension. |
| + base::FilePath path = data_dir() |
| + .AppendASCII("good") |
| + .AppendASCII("Extensions") |
| + .AppendASCII(good0) |
| + .AppendASCII("1.0.0.0"); |
| + std::string manifest; |
| + ASSERT_TRUE(base::ReadFileToString( |
| + path.Append(extensions::kManifestFilename), &manifest)); |
| + service()->component_loader()->Add(manifest, path); |
| + service()->Init(); |
| + |
| + // Should be enabled. |
| + const extensions::ExtensionSet& enabled_extensions = |
| + registry()->enabled_extensions(); |
| + const extensions::ExtensionSet& blocked_extensions = |
| + registry()->blocked_extensions(); |
| + |
| + EXPECT_TRUE(enabled_extensions.Contains(good0) && |
| + !blocked_extensions.Contains(good0)); |
| + |
| + service()->UnblockAllExtensions(); |
| + base::RunLoop().RunUntilIdle(); |
| + |
| + // Still enabled. |
| + EXPECT_TRUE(enabled_extensions.Contains(good0) && |
| + !blocked_extensions.Contains(good0)); |
| +} |
| + |
| +// Tests that a blocked extension service won't load extensions. |
| +TEST_F(ExtensionServiceTest, WillNotLoadExtensionsWhenBlocked) { |
| + InitializeGoodInstalledExtensionService(); |
| + |
| + service()->BlockAllExtensions(); |
| + |
| + service()->Init(); |
| + |
| + const extensions::ExtensionSet& enabled_extensions = |
| + registry()->enabled_extensions(); |
| + const extensions::ExtensionSet& blocked_extensions = |
| + registry()->blocked_extensions(); |
| + |
| + EXPECT_TRUE(!enabled_extensions.Contains(good0) && |
| + blocked_extensions.Contains(good0)); |
| + EXPECT_TRUE(!enabled_extensions.Contains(good1) && |
| + blocked_extensions.Contains(good1)); |
| + EXPECT_TRUE(!enabled_extensions.Contains(good2) && |
| + blocked_extensions.Contains(good2)); |
| +} |
| + |
| // Will not install extension blacklisted by policy. |
| TEST_F(ExtensionServiceTest, BlacklistedByPolicyWillNotInstall) { |
| InitializeEmptyExtensionServiceWithTestingPrefs(); |