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

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

Issue 919733002: [Extensions Toolbar] Have all extensions in the toolbar show a context menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « no previous file | extensions/common/extension.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_context_menu_model_unittest.cc
diff --git a/chrome/browser/extensions/extension_context_menu_model_unittest.cc b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
index afc1ab1b2c6854ff9fc39a36d3c7c33411275021..16fb6959e5f16f54ce39ab696b0ac43f10958027 100644
--- a/chrome/browser/extensions/extension_context_menu_model_unittest.cc
+++ b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
@@ -21,6 +21,7 @@
#include "extensions/browser/test_management_policy.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/feature_switch.h"
+#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/value_builder.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -33,7 +34,8 @@ namespace {
// Build an extension to pass to the menu constructor, with the an action
// specified by |action_key|.
scoped_refptr<const Extension> BuildExtension(const std::string& name,
- const char* action_key) {
+ const char* action_key,
+ Manifest::Location location) {
return ExtensionBuilder()
.SetManifest(DictionaryBuilder()
.Set("name", name)
@@ -41,6 +43,7 @@ scoped_refptr<const Extension> BuildExtension(const std::string& name,
.Set("manifest_version", 2)
.Set(action_key, DictionaryBuilder().Pass()))
.SetID(crx_file::id_util::GenerateId(name))
+ .SetLocation(location)
.Build();
}
@@ -123,10 +126,15 @@ int ExtensionContextMenuModelTest::CountExtensionItems(
// Tests that applicable menu items are disabled when a ManagementPolicy
// prohibits them.
-TEST_F(ExtensionContextMenuModelTest, PolicyDisablesItems) {
+TEST_F(ExtensionContextMenuModelTest, RequiredInstallationsDisablesItems) {
InitializeEmptyExtensionService();
+
+ // First, test that a component extension cannot be uninstalled by the
+ // standard management policy.
scoped_refptr<const Extension> extension =
- BuildExtension("extension", manifest_keys::kPageAction);
+ BuildExtension("component",
+ manifest_keys::kBrowserAction,
+ Manifest::COMPONENT);
ASSERT_TRUE(extension.get());
service()->AddExtension(extension.get());
@@ -135,6 +143,19 @@ TEST_F(ExtensionContextMenuModelTest, PolicyDisablesItems) {
scoped_refptr<ExtensionContextMenuModel> menu(
new ExtensionContextMenuModel(extension.get(), browser.get()));
+ // Uninstallation should be disabled.
+ EXPECT_FALSE(menu->IsCommandIdEnabled(ExtensionContextMenuModel::UNINSTALL));
+
+ // Also test that management policy can determine whether or not
+ // policy-installed extensions can be installed/uninstalled.
+ extension = BuildExtension("extension",
+ manifest_keys::kPageAction,
+ Manifest::INTERNAL);
+ ASSERT_TRUE(extension.get());
+ service()->AddExtension(extension.get());
+
+ menu = new ExtensionContextMenuModel(extension.get(), browser.get());
+
ExtensionSystem* system = ExtensionSystem::Get(profile());
system->management_policy()->UnregisterAllProviders();
@@ -149,13 +170,15 @@ TEST_F(ExtensionContextMenuModelTest, PolicyDisablesItems) {
ASSERT_FALSE(menu->IsCommandIdEnabled(ExtensionContextMenuModel::UNINSTALL));
// Don't leave |policy_provider| dangling.
- system->management_policy()->UnregisterAllProviders();
+ system->management_policy()->UnregisterProvider(&policy_provider);
}
TEST_F(ExtensionContextMenuModelTest, ExtensionItemTest) {
InitializeEmptyExtensionService();
scoped_refptr<const Extension> extension =
- BuildExtension("extension", manifest_keys::kPageAction);
+ BuildExtension("extension",
+ manifest_keys::kPageAction,
+ Manifest::INTERNAL);
ASSERT_TRUE(extension.get());
service()->AddExtension(extension.get());
@@ -214,10 +237,14 @@ TEST_F(ExtensionContextMenuModelTest, ExtensionItemTest) {
TEST_F(ExtensionContextMenuModelTest, ExtensionContextMenuShowAndHide) {
InitializeEmptyExtensionService();
scoped_refptr<const Extension> page_action =
- BuildExtension("page_action_extension", manifest_keys::kPageAction);
+ BuildExtension("page_action_extension",
+ manifest_keys::kPageAction,
+ Manifest::INTERNAL);
ASSERT_TRUE(page_action.get());
scoped_refptr<const Extension> browser_action =
- BuildExtension("browser_action_extension", manifest_keys::kBrowserAction);
+ BuildExtension("browser_action_extension",
+ manifest_keys::kBrowserAction,
+ Manifest::INTERNAL);
ASSERT_TRUE(browser_action.get());
service()->AddExtension(page_action.get());
« no previous file with comments | « no previous file | extensions/common/extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698