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

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 140193)
+++ chrome/browser/extensions/extension_management_apitest.cc (working copy)
@@ -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 @@
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 @@
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 @@
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();
« no previous file with comments | « chrome/browser/extensions/extension_management_api_constants.cc ('k') | chrome/browser/extensions/extension_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698