Chromium Code Reviews| Index: chrome/browser/extensions/extension_management_apitest.cc |
| =================================================================== |
| --- chrome/browser/extensions/extension_management_apitest.cc (revision 138227) |
| +++ chrome/browser/extensions/extension_management_apitest.cc (working copy) |
| @@ -4,7 +4,9 @@ |
| #include "chrome/browser/extensions/extension_apitest.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| +#include "chrome/browser/extensions/extension_system.h" |
| #include "chrome/browser/extensions/extension_test_message_listener.h" |
| +#include "chrome/browser/extensions/test_management_policy.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_finder.h" |
| @@ -13,6 +15,8 @@ |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| +using extensions::Extension; |
| + |
| namespace { |
| // Find a browser other than |browser|. |
| @@ -65,6 +69,28 @@ |
| ASSERT_TRUE(launched_app.WaitUntilSatisfied()); |
| } |
| + |
| + // Returns the extension ID of the first extension found with the given |name| |
| + // (from its manifest), or an empty string if no match was found. Includes |
| + // both enabled and disabled extensions. |
| + std::string GetExtensionIdByName(const ExtensionService* service, |
|
Aaron Boodman
2012/05/22 15:56:11
LoadExtension() returns Extension*. You can just s
|
| + const std::string& name) { |
| + for (ExtensionSet::const_iterator iter = service->extensions()->begin(); |
| + iter != service->extensions()->end(); ++iter) { |
| + const Extension* extension = (*iter); |
| + if (extension->name() == name) |
| + return extension->id(); |
| + } |
| + for (ExtensionSet::const_iterator iter = |
| + service->disabled_extensions()->begin(); |
| + iter != service->disabled_extensions()->end(); |
| + ++iter) { |
| + const Extension* extension = (*iter); |
| + if (extension->name() == name) |
| + return extension->id(); |
| + } |
| + return ""; |
| + } |
| }; |
| IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, Basics) { |
| @@ -77,6 +103,42 @@ |
| ASSERT_TRUE(RunExtensionSubtest("management/test", "uninstall.html")); |
| } |
| +// Tests actions on extensions when no management policy is in place. |
| +IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, ManagementPolicyAllowed) { |
| + InstallExtensions(); |
| + ExtensionService* service = browser()->profile()->GetExtensionService(); |
| + std::string id = GetExtensionIdByName(service, "enabled_extension"); |
| + EXPECT_NE("", id); |
| + |
| + // Ensure that all actions are allowed. |
| + ExtensionSystem::Get(browser()->profile())->management_policy() |
| + ->UnregisterAllProviders(); |
| + |
| + ASSERT_TRUE(RunExtensionSubtest("management/management_policy", |
| + "allowed.html")); |
| + // The last thing the test does is uninstall the "enabled_extension". |
| + id = GetExtensionIdByName(service, "enabled_extension"); |
| + EXPECT_EQ("", id); |
| +} |
| + |
| +// Tests actions on extensions when management policy prohibits those actions. |
| +IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, ManagementPolicyProhibited) { |
| + InstallExtensions(); |
| + ExtensionService* service = browser()->profile()->GetExtensionService(); |
| + std::string id = GetExtensionIdByName(service, "enabled_extension"); |
| + EXPECT_NE("", id); |
| + |
| + // Prohibit status changes. |
| + extensions::ManagementPolicy* policy = |
| + ExtensionSystem::Get(browser()->profile())->management_policy(); |
| + policy->UnregisterAllProviders(); |
| + extensions::TestManagementPolicyProvider provider( |
| + extensions::TestManagementPolicyProvider::PROHIBIT_MODIFY_STATUS); |
| + policy->RegisterProvider(&provider); |
| + ASSERT_TRUE(RunExtensionSubtest("management/management_policy", |
| + "prohibited.html")); |
| +} |
| + |
| IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, LaunchPanelApp) { |
| ExtensionService* service = browser()->profile()->GetExtensionService(); |