Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1424)

Unified Diff: chrome/browser/extensions/extension_management_apitest.cc

Issue 10382149: Refactor the various ways to control what users can do to extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698