| Index: chrome/browser/extensions/extension_management_apitest.cc
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_management_apitest.cc (revision 136836)
|
| +++ chrome/browser/extensions/extension_management_apitest.cc (working copy)
|
| @@ -1,10 +1,11 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| #include "chrome/browser/extensions/extension_apitest.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/extension_test_message_listener.h"
|
| +#include "chrome/browser/extensions/test_extension_management_policy.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| @@ -64,6 +65,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,
|
| + 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) {
|
| @@ -76,6 +99,37 @@
|
| ASSERT_TRUE(RunExtensionSubtest("management/test", "uninstall.html"));
|
| }
|
|
|
| +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.
|
| + service->extension_management_policy()->UnregisterAllDelegates();
|
| +
|
| + 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);
|
| +}
|
| +
|
| +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.
|
| + service->extension_management_policy()->UnregisterAllDelegates();
|
| + TestExtensionManagementPolicyDelegate management_policy(
|
| + TestExtensionManagementPolicyDelegate::PROHIBIT_MODIFY_STATUS);
|
| + service->extension_management_policy()->RegisterDelegate(&management_policy);
|
| + ASSERT_TRUE(RunExtensionSubtest("management/management_policy",
|
| + "prohibited.html"));
|
| +}
|
| +
|
| IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, LaunchPanelApp) {
|
| ExtensionService* service = browser()->profile()->GetExtensionService();
|
|
|
|
|