summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_management_apitest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_management_apitest.cc')
-rw-r--r--chrome/browser/extensions/extension_management_apitest.cc68
1 files changed, 60 insertions, 8 deletions
diff --git a/chrome/browser/extensions/extension_management_apitest.cc b/chrome/browser/extensions/extension_management_apitest.cc
index e1d0d8a..e00c58c 100644
--- a/chrome/browser/extensions/extension_management_apitest.cc
+++ b/chrome/browser/extensions/extension_management_apitest.cc
@@ -2,9 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <map>
+
#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 +17,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|.
@@ -41,16 +47,16 @@ class ExtensionManagementApiTest : public ExtensionApiTest {
FilePath basedir = test_data_dir_.AppendASCII("management");
// Load 4 enabled items.
- ASSERT_TRUE(LoadExtension(basedir.AppendASCII("enabled_extension")));
- ASSERT_TRUE(LoadExtension(basedir.AppendASCII("enabled_app")));
- ASSERT_TRUE(LoadExtension(basedir.AppendASCII("description")));
- ASSERT_TRUE(LoadExtension(basedir.AppendASCII("permissions")));
+ InstallNamedExtension(basedir, "enabled_extension");
+ InstallNamedExtension(basedir, "enabled_app");
+ InstallNamedExtension(basedir, "description");
+ InstallNamedExtension(basedir, "permissions");
// Load 2 disabled items.
- ASSERT_TRUE(LoadExtension(basedir.AppendASCII("disabled_extension")));
- DisableExtension(last_loaded_extension_id_);
- ASSERT_TRUE(LoadExtension(basedir.AppendASCII("disabled_app")));
- DisableExtension(last_loaded_extension_id_);
+ InstallNamedExtension(basedir, "disabled_extension");
+ DisableExtension(extension_ids_["disabled_extension"]);
+ InstallNamedExtension(basedir, "disabled_app");
+ DisableExtension(extension_ids_["disabled_app"]);
}
// Load an app, and wait for a message from app "management/launch_on_install"
@@ -65,6 +71,16 @@ class ExtensionManagementApiTest : public ExtensionApiTest {
ASSERT_TRUE(launched_app.WaitUntilSatisfied());
}
+
+ protected:
+ void InstallNamedExtension(FilePath basedir, std::string name) {
+ const Extension* extension = LoadExtension(basedir.AppendASCII(name));
+ ASSERT_TRUE(extension);
+ extension_ids_[name] = extension->id();
+ }
+
+ // Maps installed extension names to their IDs..
+ std::map<std::string, std::string> extension_ids_;
};
IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, Basics) {
@@ -77,6 +93,42 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, Uninstall) {
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();
+ EXPECT_TRUE(service->GetExtensionById(extension_ids_["enabled_extension"],
+ false));
+
+ // 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".
+ EXPECT_FALSE(service->GetExtensionById(extension_ids_["enabled_extension"],
+ true));
+}
+
+// Tests actions on extensions when management policy prohibits those actions.
+IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, ManagementPolicyProhibited) {
+ InstallExtensions();
+ ExtensionService* service = browser()->profile()->GetExtensionService();
+ EXPECT_TRUE(service->GetExtensionById(extension_ids_["enabled_extension"],
+ false));
+
+ // 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();