| 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 220424ac243f995bb007b295b881ebdbdf2a885a..b434fe71fbf8388f134b5aa4e4ffbd1b647de655 100644
|
| --- a/chrome/browser/extensions/extension_service_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_service_unittest.cc
|
| @@ -2317,6 +2317,86 @@ TEST_F(ExtensionServiceTest, LoadExtensionsCanDowngrade) {
|
| EXPECT_EQ("1.0", loaded_[0]->VersionString());
|
| }
|
|
|
| +#if !defined(OS_CHROMEOS)
|
| +// LOAD extensions with plugins require approval.
|
| +TEST_F(ExtensionServiceTest, LoadExtensionsWithPlugins) {
|
| + FilePath extension_with_plugin_path = data_dir_
|
| + .AppendASCII("good")
|
| + .AppendASCII("Extensions")
|
| + .AppendASCII(good1)
|
| + .AppendASCII("2");
|
| + FilePath extension_no_plugin_path = data_dir_
|
| + .AppendASCII("good")
|
| + .AppendASCII("Extensions")
|
| + .AppendASCII(good2)
|
| + .AppendASCII("1.0");
|
| +
|
| + PluginService::GetInstance()->Init();
|
| + InitializeEmptyExtensionService();
|
| + InitializeExtensionProcessManager();
|
| + service_->set_show_extensions_prompts(true);
|
| +
|
| + // Start by canceling any install prompts.
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kAppsGalleryInstallAutoConfirmForTests,
|
| + "cancel");
|
| +
|
| + // The extension that has a plugin should not install.
|
| + extensions::UnpackedInstaller::Create(service_)->Load(
|
| + extension_with_plugin_path);
|
| + loop_.RunAllPending();
|
| + EXPECT_EQ(0u, GetErrors().size());
|
| + EXPECT_EQ(0u, loaded_.size());
|
| + EXPECT_EQ(0u, service_->extensions()->size());
|
| + EXPECT_EQ(0u, service_->disabled_extensions()->size());
|
| +
|
| + // But the extension with no plugin should since there's no prompt.
|
| + extensions::UnpackedInstaller::Create(service_)->Load(
|
| + extension_no_plugin_path);
|
| + loop_.RunAllPending();
|
| + EXPECT_EQ(0u, GetErrors().size());
|
| + EXPECT_EQ(1u, loaded_.size());
|
| + EXPECT_EQ(1u, service_->extensions()->size());
|
| + EXPECT_EQ(0u, service_->disabled_extensions()->size());
|
| + EXPECT_TRUE(service_->extensions()->Contains(good2));
|
| +
|
| + // The plugin extension should install if we accept the dialog.
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kAppsGalleryInstallAutoConfirmForTests,
|
| + "accept");
|
| +
|
| + extensions::UnpackedInstaller::Create(service_)->Load(
|
| + extension_with_plugin_path);
|
| + loop_.RunAllPending();
|
| + EXPECT_EQ(0u, GetErrors().size());
|
| + EXPECT_EQ(2u, loaded_.size());
|
| + EXPECT_EQ(2u, service_->extensions()->size());
|
| + EXPECT_EQ(0u, service_->disabled_extensions()->size());
|
| + EXPECT_TRUE(service_->extensions()->Contains(good1));
|
| + EXPECT_TRUE(service_->extensions()->Contains(good2));
|
| +
|
| + // Make sure the granted permissions have been setup.
|
| + scoped_refptr<ExtensionPermissionSet> permissions(
|
| + service_->extension_prefs()->GetGrantedPermissions(good1));
|
| + EXPECT_FALSE(permissions->IsEmpty());
|
| + EXPECT_TRUE(permissions->HasEffectiveFullAccess());
|
| + EXPECT_FALSE(permissions->apis().empty());
|
| + EXPECT_TRUE(permissions->HasAPIPermission(ExtensionAPIPermission::kPlugin));
|
| +
|
| + // We should be able to reload the extension without getting another prompt.
|
| + loaded_.clear();
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kAppsGalleryInstallAutoConfirmForTests,
|
| + "cancel");
|
| +
|
| + service_->ReloadExtension(good1);
|
| + loop_.RunAllPending();
|
| + EXPECT_EQ(1u, loaded_.size());
|
| + EXPECT_EQ(2u, service_->extensions()->size());
|
| + EXPECT_EQ(0u, service_->disabled_extensions()->size());
|
| +}
|
| +#endif
|
| +
|
| namespace {
|
|
|
| bool IsExtension(const Extension& extension) {
|
|
|