Index: chrome/browser/extensions/extensions_service_unittest.cc |
=================================================================== |
--- chrome/browser/extensions/extensions_service_unittest.cc (revision 56844) |
+++ chrome/browser/extensions/extensions_service_unittest.cc (working copy) |
@@ -1844,6 +1844,35 @@ |
EXPECT_EQ(1u, service_->extensions()->size()); |
} |
+// Extension blacklisted by policy get unloaded after installing. |
+TEST_F(ExtensionsServiceTest, BlacklistedByPolicyRemovedIfRunning) { |
+ InitializeEmptyExtensionsService(); |
+ |
+ // Install good_crx. |
+ FilePath extensions_path; |
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
+ extensions_path = extensions_path.AppendASCII("extensions"); |
+ FilePath path = extensions_path.AppendASCII("good.crx"); |
+ service_->InstallExtension(path); |
+ loop_.RunAllPending(); |
+ EXPECT_EQ(1u, service_->extensions()->size()); |
+ |
+ ListValue* blacklist = prefs_->GetMutableList("extensions.install.denylist"); |
+ ASSERT_TRUE(blacklist != NULL); |
+ |
+ // Blacklist this extension. |
+ blacklist->Append(Value::CreateStringValue(good_crx)); |
+ prefs_->ScheduleSavePersistentPrefs(); |
+ |
+ // Programmatically appending to the prefs doesn't seem to notify the |
+ // observers... :/ |
+ prefs_->pref_notifier()->FireObservers("extensions.install.denylist"); |
+ |
+ // Extension should not be running now. |
+ loop_.RunAllPending(); |
+ EXPECT_EQ(0u, service_->extensions()->size()); |
+} |
+ |
// Tests disabling extensions |
TEST_F(ExtensionsServiceTest, DisableExtension) { |
InitializeEmptyExtensionsService(); |
@@ -2365,19 +2394,19 @@ |
// enabled or not. |
TEST(ExtensionsServiceTestSimple, Enabledness) { |
ExtensionsReadyRecorder recorder; |
- TestingProfile profile; |
+ scoped_ptr<TestingProfile> profile(new TestingProfile()); |
MessageLoop loop; |
ChromeThread ui_thread(ChromeThread::UI, &loop); |
ChromeThread file_thread(ChromeThread::FILE, &loop); |
scoped_ptr<CommandLine> command_line; |
scoped_refptr<ExtensionsService> service; |
- FilePath install_dir = profile.GetPath() |
+ FilePath install_dir = profile->GetPath() |
.AppendASCII(ExtensionsService::kInstallDirectoryName); |
// By default, we are enabled. |
command_line.reset(new CommandLine(CommandLine::ARGUMENTS_ONLY)); |
- service = new ExtensionsService(&profile, command_line.get(), |
- profile.GetPrefs(), install_dir, false); |
+ service = new ExtensionsService(profile.get(), command_line.get(), |
+ profile->GetPrefs(), install_dir, false); |
EXPECT_TRUE(service->extensions_enabled()); |
service->Init(); |
loop.RunAllPending(); |
@@ -2385,27 +2414,31 @@ |
// If either the command line or pref is set, we are disabled. |
recorder.set_ready(false); |
+ profile.reset(new TestingProfile()); |
command_line->AppendSwitch(switches::kDisableExtensions); |
- service = new ExtensionsService(&profile, command_line.get(), |
- profile.GetPrefs(), install_dir, false); |
+ service = new ExtensionsService(profile.get(), command_line.get(), |
+ profile->GetPrefs(), install_dir, false); |
EXPECT_FALSE(service->extensions_enabled()); |
service->Init(); |
loop.RunAllPending(); |
EXPECT_TRUE(recorder.ready()); |
recorder.set_ready(false); |
- profile.GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
- service = new ExtensionsService(&profile, command_line.get(), |
- profile.GetPrefs(), install_dir, false); |
+ profile.reset(new TestingProfile()); |
+ profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
+ service = new ExtensionsService(profile.get(), command_line.get(), |
+ profile->GetPrefs(), install_dir, false); |
EXPECT_FALSE(service->extensions_enabled()); |
service->Init(); |
loop.RunAllPending(); |
EXPECT_TRUE(recorder.ready()); |
recorder.set_ready(false); |
+ profile.reset(new TestingProfile()); |
+ profile->GetPrefs()->SetBoolean(prefs::kDisableExtensions, true); |
command_line.reset(new CommandLine(CommandLine::ARGUMENTS_ONLY)); |
- service = new ExtensionsService(&profile, command_line.get(), |
- profile.GetPrefs(), install_dir, false); |
+ service = new ExtensionsService(profile.get(), command_line.get(), |
+ profile->GetPrefs(), install_dir, false); |
EXPECT_FALSE(service->extensions_enabled()); |
service->Init(); |
loop.RunAllPending(); |