Moved ExtensionMenuManager and ExtensionMenuItem into extensions namespace; rename them to MenuManager and MenuItem.
BUG=134711, 117261
Review URL: https://chromiumcodereview.appspot.com/10664037
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145550 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/api/context_menu/context_menu_api.cc b/chrome/browser/extensions/api/context_menu/context_menu_api.cc
index f9e330a..acc80a44 100644
--- a/chrome/browser/extensions/api/context_menu/context_menu_api.cc
+++ b/chrome/browser/extensions/api/context_menu/context_menu_api.cc
@@ -44,7 +44,7 @@
const char kTitleNeededError[] =
"All menu items except for separators must have a title";
-std::string GetIDString(const ExtensionMenuItem::Id& id) {
+std::string GetIDString(const extensions::MenuItem::Id& id) {
if (id.uid == 0)
return id.string_uid;
else
@@ -58,12 +58,12 @@
bool ExtensionContextMenuFunction::ParseContexts(
const DictionaryValue& properties,
const char* key,
- ExtensionMenuItem::ContextList* result) {
+ MenuItem::ContextList* result) {
ListValue* list = NULL;
if (!properties.GetList(key, &list)) {
return true;
}
- ExtensionMenuItem::ContextList tmp_result;
+ MenuItem::ContextList tmp_result;
std::string value;
for (size_t i = 0; i < list->GetSize(); i++) {
@@ -71,23 +71,23 @@
return false;
if (value == "all") {
- tmp_result.Add(ExtensionMenuItem::ALL);
+ tmp_result.Add(MenuItem::ALL);
} else if (value == "page") {
- tmp_result.Add(ExtensionMenuItem::PAGE);
+ tmp_result.Add(MenuItem::PAGE);
} else if (value == "selection") {
- tmp_result.Add(ExtensionMenuItem::SELECTION);
+ tmp_result.Add(MenuItem::SELECTION);
} else if (value == "link") {
- tmp_result.Add(ExtensionMenuItem::LINK);
+ tmp_result.Add(MenuItem::LINK);
} else if (value == "editable") {
- tmp_result.Add(ExtensionMenuItem::EDITABLE);
+ tmp_result.Add(MenuItem::EDITABLE);
} else if (value == "image") {
- tmp_result.Add(ExtensionMenuItem::IMAGE);
+ tmp_result.Add(MenuItem::IMAGE);
} else if (value == "video") {
- tmp_result.Add(ExtensionMenuItem::VIDEO);
+ tmp_result.Add(MenuItem::VIDEO);
} else if (value == "audio") {
- tmp_result.Add(ExtensionMenuItem::AUDIO);
+ tmp_result.Add(MenuItem::AUDIO);
} else if (value == "frame") {
- tmp_result.Add(ExtensionMenuItem::FRAME);
+ tmp_result.Add(MenuItem::FRAME);
} else {
error_ = ExtensionErrorUtils::FormatErrorMessage(kInvalidValueError, key);
return false;
@@ -99,8 +99,8 @@
bool ExtensionContextMenuFunction::ParseType(
const DictionaryValue& properties,
- const ExtensionMenuItem::Type& default_value,
- ExtensionMenuItem::Type* result) {
+ const MenuItem::Type& default_value,
+ MenuItem::Type* result) {
DCHECK(result);
if (!properties.HasKey(kTypeKey)) {
*result = default_value;
@@ -112,13 +112,13 @@
return false;
if (type_string == "normal") {
- *result = ExtensionMenuItem::NORMAL;
+ *result = MenuItem::NORMAL;
} else if (type_string == "checkbox") {
- *result = ExtensionMenuItem::CHECKBOX;
+ *result = MenuItem::CHECKBOX;
} else if (type_string == "radio") {
- *result = ExtensionMenuItem::RADIO;
+ *result = MenuItem::RADIO;
} else if (type_string == "separator") {
- *result = ExtensionMenuItem::SEPARATOR;
+ *result = MenuItem::SEPARATOR;
} else {
error_ = ExtensionErrorUtils::FormatErrorMessage(kInvalidTypeStringError,
type_string);
@@ -128,7 +128,7 @@
}
bool ExtensionContextMenuFunction::ParseChecked(
- ExtensionMenuItem::Type type,
+ MenuItem::Type type,
const DictionaryValue& properties,
bool default_value,
bool* checked) {
@@ -138,40 +138,37 @@
}
if (!properties.GetBoolean(kCheckedKey, checked))
return false;
- if (checked && type != ExtensionMenuItem::CHECKBOX &&
- type != ExtensionMenuItem::RADIO) {
+ if (checked && type != MenuItem::CHECKBOX && type != MenuItem::RADIO) {
error_ = kCheckedError;
return false;
}
return true;
}
-bool ExtensionContextMenuFunction::ParseID(
- const Value* value,
- ExtensionMenuItem::Id* result) {
+bool ExtensionContextMenuFunction::ParseID(const Value* value,
+ MenuItem::Id* result) {
return (value->GetAsInteger(&result->uid) ||
value->GetAsString(&result->string_uid));
}
-bool ExtensionContextMenuFunction::GetParent(
- const DictionaryValue& properties,
- const ExtensionMenuManager& manager,
- ExtensionMenuItem** result) {
+bool ExtensionContextMenuFunction::GetParent(const DictionaryValue& properties,
+ const MenuManager& manager,
+ MenuItem** result) {
if (!properties.HasKey(kParentIdKey))
return true;
- ExtensionMenuItem::Id parent_id(profile()->IsOffTheRecord(), extension_id());
+ MenuItem::Id parent_id(profile()->IsOffTheRecord(), extension_id());
Value* parent_id_value = NULL;
if (properties.Get(kParentIdKey, &parent_id_value) &&
!ParseID(parent_id_value, &parent_id))
return false;
- ExtensionMenuItem* parent = manager.GetItemById(parent_id);
+ MenuItem* parent = manager.GetItemById(parent_id);
if (!parent) {
error_ = ExtensionErrorUtils::FormatErrorMessage(
kCannotFindItemError, GetIDString(parent_id));
return false;
}
- if (parent->type() != ExtensionMenuItem::NORMAL) {
+ if (parent->type() != MenuItem::NORMAL) {
error_ = kParentsMustBeNormalError;
return false;
}
@@ -184,7 +181,7 @@
EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &properties));
EXTENSION_FUNCTION_VALIDATE(properties != NULL);
- ExtensionMenuItem::Id id(profile()->IsOffTheRecord(), extension_id());
+ MenuItem::Id id(profile()->IsOffTheRecord(), extension_id());
if (properties->HasKey(kIdKey)) {
EXTENSION_FUNCTION_VALIDATE(properties->GetString(kIdKey,
&id.string_uid));
@@ -202,8 +199,7 @@
!properties->GetString(kTitleKey, &title))
return false;
- ExtensionMenuManager* menu_manager =
- profile()->GetExtensionService()->menu_manager();
+ MenuManager* menu_manager = profile()->GetExtensionService()->menu_manager();
if (menu_manager->GetItemById(id)) {
error_ = ExtensionErrorUtils::FormatErrorMessage(kDuplicateIDError,
@@ -217,15 +213,15 @@
return false;
}
- ExtensionMenuItem::ContextList contexts(ExtensionMenuItem::PAGE);
+ MenuItem::ContextList contexts(MenuItem::PAGE);
if (!ParseContexts(*properties, kContextsKey, &contexts))
return false;
- ExtensionMenuItem::Type type;
- if (!ParseType(*properties, ExtensionMenuItem::NORMAL, &type))
+ MenuItem::Type type;
+ if (!ParseType(*properties, MenuItem::NORMAL, &type))
return false;
- if (title.empty() && type != ExtensionMenuItem::SEPARATOR) {
+ if (title.empty() && type != MenuItem::SEPARATOR) {
error_ = kTitleNeededError;
return false;
}
@@ -238,8 +234,8 @@
if (properties->HasKey(kEnabledKey))
EXTENSION_FUNCTION_VALIDATE(properties->GetBoolean(kEnabledKey, &enabled));
- scoped_ptr<ExtensionMenuItem> item(
- new ExtensionMenuItem(id, title, checked, enabled, type, contexts));
+ scoped_ptr<MenuItem> item(
+ new MenuItem(id, title, checked, enabled, type, contexts));
if (!item->PopulateURLPatterns(
*properties, kDocumentUrlPatternsKey, kTargetUrlPatternsKey, &error_))
@@ -247,7 +243,7 @@
bool success = true;
if (properties->HasKey(kParentIdKey)) {
- ExtensionMenuItem* parent = NULL;
+ MenuItem* parent = NULL;
if (!GetParent(*properties, *menu_manager, &parent))
return false;
success = menu_manager->AddChildItem(parent->id(), item.release());
@@ -264,14 +260,14 @@
bool UpdateContextMenuFunction::RunImpl() {
bool radioItemUpdated = false;
- ExtensionMenuItem::Id item_id(profile()->IsOffTheRecord(), extension_id());
+ MenuItem::Id item_id(profile()->IsOffTheRecord(), extension_id());
Value* id_value = NULL;
EXTENSION_FUNCTION_VALIDATE(args_->Get(0, &id_value));
EXTENSION_FUNCTION_VALIDATE(ParseID(id_value, &item_id));
ExtensionService* service = profile()->GetExtensionService();
- ExtensionMenuManager* manager = service->menu_manager();
- ExtensionMenuItem* item = manager->GetItemById(item_id);
+ MenuManager* manager = service->menu_manager();
+ MenuItem* item = manager->GetItemById(item_id);
if (!item || item->extension_id() != extension_id()) {
error_ = ExtensionErrorUtils::FormatErrorMessage(
kCannotFindItemError, GetIDString(item_id));
@@ -283,12 +279,11 @@
EXTENSION_FUNCTION_VALIDATE(properties != NULL);
// Type.
- ExtensionMenuItem::Type type;
+ MenuItem::Type type;
if (!ParseType(*properties, item->type(), &type))
return false;
if (type != item->type()) {
- if (type == ExtensionMenuItem::RADIO ||
- item->type() == ExtensionMenuItem::RADIO) {
+ if (type == MenuItem::RADIO || item->type() == MenuItem::RADIO) {
radioItemUpdated = true;
}
item->set_type(type);
@@ -298,7 +293,7 @@
if (properties->HasKey(kTitleKey)) {
std::string title;
EXTENSION_FUNCTION_VALIDATE(properties->GetString(kTitleKey, &title));
- if (title.empty() && type != ExtensionMenuItem::SEPARATOR) {
+ if (title.empty() && type != MenuItem::SEPARATOR) {
error_ = kTitleNeededError;
return false;
}
@@ -323,14 +318,14 @@
}
// Contexts.
- ExtensionMenuItem::ContextList contexts(item->contexts());
+ MenuItem::ContextList contexts(item->contexts());
if (!ParseContexts(*properties, kContextsKey, &contexts))
return false;
if (contexts != item->contexts())
item->set_contexts(contexts);
// Parent id.
- ExtensionMenuItem* parent = NULL;
+ MenuItem* parent = NULL;
if (!GetParent(*properties, *manager, &parent))
return false;
if (parent && !manager->ChangeParent(item->id(), &parent->id()))
@@ -350,14 +345,14 @@
}
bool RemoveContextMenuFunction::RunImpl() {
- ExtensionMenuItem::Id id(profile()->IsOffTheRecord(), extension_id());
+ MenuItem::Id id(profile()->IsOffTheRecord(), extension_id());
Value* id_value = NULL;
EXTENSION_FUNCTION_VALIDATE(args_->Get(0, &id_value));
EXTENSION_FUNCTION_VALIDATE(ParseID(id_value, &id));
ExtensionService* service = profile()->GetExtensionService();
- ExtensionMenuManager* manager = service->menu_manager();
+ MenuManager* manager = service->menu_manager();
- ExtensionMenuItem* item = manager->GetItemById(id);
+ MenuItem* item = manager->GetItemById(id);
// Ensure one extension can't remove another's menu items.
if (!item || item->extension_id() != extension_id()) {
error_ = ExtensionErrorUtils::FormatErrorMessage(
@@ -373,7 +368,7 @@
bool RemoveAllContextMenusFunction::RunImpl() {
ExtensionService* service = profile()->GetExtensionService();
- ExtensionMenuManager* manager = service->menu_manager();
+ MenuManager* manager = service->menu_manager();
manager->RemoveAllContextItems(GetExtension()->id());
manager->WriteToStorage(GetExtension());
return true;
diff --git a/chrome/browser/extensions/api/context_menu/context_menu_api.h b/chrome/browser/extensions/api/context_menu/context_menu_api.h
index fe09370..61e4823 100644
--- a/chrome/browser/extensions/api/context_menu/context_menu_api.h
+++ b/chrome/browser/extensions/api/context_menu/context_menu_api.h
@@ -7,10 +7,10 @@
#pragma once
#include "chrome/browser/extensions/extension_function.h"
-#include "chrome/browser/extensions/extension_menu_manager.h"
+#include "chrome/browser/extensions/menu_manager.h"
#include "chrome/common/extensions/url_pattern_set.h"
-class ExtensionMenuItem;
+class MenuItem;
namespace base {
class DictionaryValue;
@@ -25,36 +25,35 @@
// Helper function to read and parse a list of menu item contexts.
bool ParseContexts(const base::DictionaryValue& properties,
const char* key,
- ExtensionMenuItem::ContextList* result);
+ MenuItem::ContextList* result);
// Looks in properties for the "type" key, and reads the value in |result|. On
// error, returns false and puts an error message into error_. If the key is
// not present, |result| is set to |default_value| and the return value is
// true.
bool ParseType(const base::DictionaryValue& properties,
- const ExtensionMenuItem::Type& default_value,
- ExtensionMenuItem::Type* result);
+ const MenuItem::Type& default_value,
+ MenuItem::Type* result);
// Helper to read and parse the "checked" property.
- bool ParseChecked(ExtensionMenuItem::Type type,
+ bool ParseChecked(MenuItem::Type type,
const base::DictionaryValue& properties,
bool default_value,
bool* checked);
// Helper to read an ID from the Value*. The ID can be either a string or
// integer.
- bool ParseID(const Value* value,
- ExtensionMenuItem::Id* result);
+ bool ParseID(const Value* value, MenuItem::Id* result);
// If the parentId key was specified in properties, this will try looking up
- // an ExtensionMenuItem with that id and set it into |result|. Returns false
+ // an MenuItem with that id and set it into |result|. Returns false
// on error, with an explanation written into error_. Note that if the
// parentId key is not in properties, this will return true and leave |result|
// unset. Also, it is considered an error if the item found has a type other
// than NORMAL.
bool GetParent(const base::DictionaryValue& properties,
- const ExtensionMenuManager& manager,
- ExtensionMenuItem** result);
+ const MenuManager& manager,
+ MenuItem** result);
};
class CreateContextMenuFunction : public ExtensionContextMenuFunction {
diff --git a/chrome/browser/extensions/extension_context_menu_browsertest.cc b/chrome/browser/extensions/extension_context_menu_browsertest.cc
index 0338d113..e54cb3a 100644
--- a/chrome/browser/extensions/extension_context_menu_browsertest.cc
+++ b/chrome/browser/extensions/extension_context_menu_browsertest.cc
@@ -25,6 +25,7 @@
using WebKit::WebContextMenuData;
using content::WebContents;
+using extensions::MenuItem;
using ui::MenuModel;
namespace {
@@ -41,9 +42,9 @@
bool HasExtensionItemWithLabel(const std::string& label) {
string16 label16 = UTF8ToUTF16(label);
- std::map<int, ExtensionMenuItem::Id>::iterator i;
+ std::map<int, MenuItem::Id>::iterator i;
for (i = extension_item_map_.begin(); i != extension_item_map_.end(); ++i) {
- const ExtensionMenuItem::Id& id = i->second;
+ const MenuItem::Id& id = i->second;
string16 tmp_label;
EXPECT_TRUE(GetItemLabel(id, &tmp_label));
if (tmp_label == label16)
@@ -55,7 +56,7 @@
// Looks in the menu for an extension item with |id|, and if it is found and
// has a label, that is put in |result| and we return true. Otherwise returns
// false.
- bool GetItemLabel(const ExtensionMenuItem::Id& id, string16* result) {
+ bool GetItemLabel(const MenuItem::Id& id, string16* result) {
int command_id = 0;
if (!FindCommandId(id, &command_id))
return false;
@@ -97,8 +98,8 @@
// Given an extension menu item id, tries to find the corresponding command id
// in the menu.
- bool FindCommandId(const ExtensionMenuItem::Id& id, int* command_id) {
- std::map<int, ExtensionMenuItem::Id>::const_iterator i;
+ bool FindCommandId(const MenuItem::Id& id, int* command_id) {
+ std::map<int, MenuItem::Id>::const_iterator i;
for (i = extension_item_map_.begin(); i != extension_item_map_.end(); ++i) {
if (i->second == id) {
*command_id = i->first;
@@ -156,8 +157,8 @@
return menu;
}
- // Shortcut to return the current ExtensionMenuManager.
- ExtensionMenuManager* menu_manager() {
+ // Shortcut to return the current MenuManager.
+ extensions::MenuManager* menu_manager() {
return browser()->profile()->GetExtensionService()->menu_manager();
}
@@ -177,12 +178,12 @@
// This gets all the items that any extension has registered for possible
// inclusion in context menus.
- ExtensionMenuItem::List GetItems() {
- ExtensionMenuItem::List result;
+ MenuItem::List GetItems() {
+ MenuItem::List result;
std::set<std::string> extension_ids = menu_manager()->ExtensionIds();
std::set<std::string>::iterator i;
for (i = extension_ids.begin(); i != extension_ids.end(); ++i) {
- const ExtensionMenuItem::List* list = menu_manager()->MenuItems(*i);
+ const MenuItem::List* list = menu_manager()->MenuItems(*i);
result.insert(result.end(), list->begin(), list->end());
}
return result;
@@ -303,9 +304,9 @@
// Make sure we have an item registered with a long title.
size_t limit = RenderViewContextMenu::kMaxExtensionItemTitleLength;
- ExtensionMenuItem::List items = GetItems();
+ MenuItem::List items = GetItems();
ASSERT_EQ(1u, items.size());
- ExtensionMenuItem* item = items.at(0);
+ MenuItem* item = items.at(0);
ASSERT_GT(item->title().size(), limit);
// Create a context menu, then find the item's label. It should be properly
@@ -579,7 +580,7 @@
LazyBackgroundObserver checkbox_checked;
scoped_ptr<TestRenderViewContextMenu> menu(
CreateMenu(browser(), about_blank, GURL(), GURL()));
- ExtensionMenuItem::Id id(false, extension->id());
+ MenuItem::Id id(false, extension->id());
id.string_uid = "checkbox1";
int command_id = -1;
ASSERT_TRUE(menu->FindCommandId(id, &command_id));
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 7d210b9..4a5e4e9 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -9,7 +9,6 @@
#include "base/utf_string_conversions.h"
#include "chrome/browser/extensions/admin_policy.h"
#include "chrome/browser/extensions/api/omnibox/omnibox_api.h"
-#include "chrome/browser/extensions/extension_menu_manager.h"
#include "chrome/browser/extensions/extension_pref_store.h"
#include "chrome/browser/extensions/extension_sorting.h"
#include "chrome/browser/prefs/pref_notifier.h"
diff --git a/chrome/browser/extensions/extension_prefs.h b/chrome/browser/extensions/extension_prefs.h
index e142fe1..bea4b2b 100644
--- a/chrome/browser/extensions/extension_prefs.h
+++ b/chrome/browser/extensions/extension_prefs.h
@@ -14,7 +14,6 @@
#include "base/time.h"
#include "base/values.h"
#include "chrome/browser/extensions/api/content_settings/content_settings_store.h"
-#include "chrome/browser/extensions/extension_menu_manager.h"
#include "chrome/browser/extensions/extension_prefs_scope.h"
#include "chrome/browser/extensions/extension_scoped_prefs.h"
#include "chrome/browser/extensions/management_policy.h"
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 0b055b8..9537be6 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -28,7 +28,6 @@
#include "chrome/browser/extensions/app_sync_bundle.h"
#include "chrome/browser/extensions/apps_promo.h"
#include "chrome/browser/extensions/extension_icon_manager.h"
-#include "chrome/browser/extensions/extension_menu_manager.h"
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extension_sync_bundle.h"
@@ -36,6 +35,7 @@
#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/extensions/extensions_quota_service.h"
#include "chrome/browser/extensions/external_extension_provider_interface.h"
+#include "chrome/browser/extensions/menu_manager.h"
#include "chrome/browser/extensions/pending_extension_manager.h"
#include "chrome/browser/extensions/process_map.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
@@ -493,7 +493,7 @@
ExtensionsQuotaService* quota_service() { return "a_service_; }
- ExtensionMenuManager* menu_manager() { return &menu_manager_; }
+ extensions::MenuManager* menu_manager() { return &menu_manager_; }
AppNotificationManager* app_notification_manager() {
return app_notification_manager_.get();
@@ -784,7 +784,7 @@
scoped_ptr<extensions::ComponentLoader> component_loader_;
// Keeps track of menu items added by extensions.
- ExtensionMenuManager menu_manager_;
+ extensions::MenuManager menu_manager_;
// Keeps track of app notifications.
scoped_refptr<AppNotificationManager> app_notification_manager_;
diff --git a/chrome/browser/extensions/extension_menu_manager.cc b/chrome/browser/extensions/menu_manager.cc
similarity index 73%
rename from chrome/browser/extensions/extension_menu_manager.cc
rename to chrome/browser/extensions/menu_manager.cc
index 48903fa..1ec34801 100644
--- a/chrome/browser/extensions/extension_menu_manager.cc
+++ b/chrome/browser/extensions/menu_manager.cc
@@ -2,7 +2,7 @@
// 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_menu_manager.h"
+#include "chrome/browser/extensions/menu_manager.h"
#include <algorithm>
@@ -32,6 +32,8 @@
using content::WebContents;
+namespace extensions {
+
namespace {
// Keys for serialization to and from Value to store in the preferences.
@@ -50,16 +52,16 @@
void SetIdKeyValue(base::DictionaryValue* properties,
const char* key,
- const ExtensionMenuItem::Id& id) {
+ const MenuItem::Id& id) {
if (id.uid == 0)
properties->SetString(key, id.string_uid);
else
properties->SetInteger(key, id.uid);
}
-ExtensionMenuItem::List MenuItemsFromValue(const std::string& extension_id,
- base::Value* value) {
- ExtensionMenuItem::List items;
+MenuItem::List MenuItemsFromValue(const std::string& extension_id,
+ base::Value* value) {
+ MenuItem::List items;
base::ListValue* list = NULL;
if (!value || !value->GetAsList(&list))
@@ -69,7 +71,7 @@
base::DictionaryValue* dict = NULL;
if (!list->GetDictionary(i, &dict))
continue;
- ExtensionMenuItem* item = ExtensionMenuItem::Populate(
+ MenuItem* item = MenuItem::Populate(
extension_id, *dict, NULL);
if (!item)
continue;
@@ -78,8 +80,7 @@
return items;
}
-scoped_ptr<base::Value> MenuItemsToValue(
- const ExtensionMenuItem::List& items) {
+scoped_ptr<base::Value> MenuItemsToValue(const MenuItem::List& items) {
scoped_ptr<base::ListValue> list(new ListValue());
for (size_t i = 0; i < items.size(); ++i)
list->Append(items[i]->ToValue().release());
@@ -88,12 +89,12 @@
} // namespace
-ExtensionMenuItem::ExtensionMenuItem(const Id& id,
- const std::string& title,
- bool checked,
- bool enabled,
- Type type,
- const ContextList& contexts)
+MenuItem::MenuItem(const Id& id,
+ const std::string& title,
+ bool checked,
+ bool enabled,
+ Type type,
+ const ContextList& contexts)
: id_(id),
title_(title),
type_(type),
@@ -103,14 +104,14 @@
parent_id_(0) {
}
-ExtensionMenuItem::~ExtensionMenuItem() {
+MenuItem::~MenuItem() {
STLDeleteElements(&children_);
}
-ExtensionMenuItem* ExtensionMenuItem::ReleaseChild(const Id& child_id,
- bool recursive) {
+MenuItem* MenuItem::ReleaseChild(const Id& child_id,
+ bool recursive) {
for (List::iterator i = children_.begin(); i != children_.end(); ++i) {
- ExtensionMenuItem* child = NULL;
+ MenuItem* child = NULL;
if ((*i)->id() == child_id) {
child = *i;
children_.erase(i);
@@ -124,16 +125,16 @@
return NULL;
}
-void ExtensionMenuItem::GetFlattenedSubtree(ExtensionMenuItem::List* list) {
+void MenuItem::GetFlattenedSubtree(MenuItem::List* list) {
list->push_back(this);
for (List::iterator i = children_.begin(); i != children_.end(); ++i)
(*i)->GetFlattenedSubtree(list);
}
-std::set<ExtensionMenuItem::Id> ExtensionMenuItem::RemoveAllDescendants() {
+std::set<MenuItem::Id> MenuItem::RemoveAllDescendants() {
std::set<Id> result;
for (List::iterator i = children_.begin(); i != children_.end(); ++i) {
- ExtensionMenuItem* child = *i;
+ MenuItem* child = *i;
result.insert(child->id());
std::set<Id> removed = child->RemoveAllDescendants();
result.insert(removed.begin(), removed.end());
@@ -142,7 +143,7 @@
return result;
}
-string16 ExtensionMenuItem::TitleWithReplacement(
+string16 MenuItem::TitleWithReplacement(
const string16& selection, size_t max_length) const {
string16 result = UTF8ToUTF16(title_);
// TODO(asargent) - Change this to properly handle %% escaping so you can
@@ -154,19 +155,19 @@
return result;
}
-bool ExtensionMenuItem::SetChecked(bool checked) {
+bool MenuItem::SetChecked(bool checked) {
if (type_ != CHECKBOX && type_ != RADIO)
return false;
checked_ = checked;
return true;
}
-void ExtensionMenuItem::AddChild(ExtensionMenuItem* item) {
+void MenuItem::AddChild(MenuItem* item) {
item->parent_id_.reset(new Id(id_));
children_.push_back(item);
}
-scoped_ptr<DictionaryValue> ExtensionMenuItem::ToValue() const {
+scoped_ptr<DictionaryValue> MenuItem::ToValue() const {
scoped_ptr<DictionaryValue> value(new DictionaryValue);
// Should only be called for extensions with event pages, which only have
// string IDs for items.
@@ -191,9 +192,9 @@
}
// static
-ExtensionMenuItem* ExtensionMenuItem::Populate(const std::string& extension_id,
- const DictionaryValue& value,
- std::string* error) {
+MenuItem* MenuItem::Populate(const std::string& extension_id,
+ const DictionaryValue& value,
+ std::string* error) {
bool incognito = false;
if (!value.GetBoolean(kIncognitoKey, &incognito))
return NULL;
@@ -223,7 +224,7 @@
if (!contexts.Populate(*contexts_value))
return NULL;
- scoped_ptr<ExtensionMenuItem> result(new ExtensionMenuItem(
+ scoped_ptr<MenuItem> result(new MenuItem(
id, title, checked, enabled, type, contexts));
if (!result->PopulateURLPatterns(
@@ -241,11 +242,10 @@
return result.release();
}
-bool ExtensionMenuItem::PopulateURLPatterns(
- const DictionaryValue& properties,
- const char* document_url_patterns_key,
- const char* target_url_patterns_key,
- std::string* error) {
+bool MenuItem::PopulateURLPatterns(const DictionaryValue& properties,
+ const char* document_url_patterns_key,
+ const char* target_url_patterns_key,
+ std::string* error) {
if (properties.HasKey(document_url_patterns_key)) {
ListValue* list = NULL;
if (!properties.GetList(document_url_patterns_key, &list))
@@ -267,26 +267,26 @@
return true;
}
-ExtensionMenuManager::ExtensionMenuManager(Profile* profile)
+MenuManager::MenuManager(Profile* profile)
: profile_(profile) {
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED,
content::Source<Profile>(profile));
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
content::Source<Profile>(profile));
- extensions::StateStore* store = ExtensionSystem::Get(profile_)->state_store();
+ StateStore* store = ExtensionSystem::Get(profile_)->state_store();
if (store)
store->RegisterKey(kContextMenusKey);
}
-ExtensionMenuManager::~ExtensionMenuManager() {
+MenuManager::~MenuManager() {
MenuItemMap::iterator i;
for (i = context_items_.begin(); i != context_items_.end(); ++i) {
STLDeleteElements(&(i->second));
}
}
-std::set<std::string> ExtensionMenuManager::ExtensionIds() {
+std::set<std::string> MenuManager::ExtensionIds() {
std::set<std::string> id_set;
for (MenuItemMap::const_iterator i = context_items_.begin();
i != context_items_.end(); ++i) {
@@ -295,7 +295,7 @@
return id_set;
}
-const ExtensionMenuItem::List* ExtensionMenuManager::MenuItems(
+const MenuItem::List* MenuManager::MenuItems(
const std::string& extension_id) {
MenuItemMap::iterator i = context_items_.find(extension_id);
if (i != context_items_.end()) {
@@ -304,9 +304,9 @@
return NULL;
}
-bool ExtensionMenuManager::AddContextItem(
- const extensions::Extension* extension,
- ExtensionMenuItem* item) {
+bool MenuManager::AddContextItem(
+ const Extension* extension,
+ MenuItem* item) {
const std::string& extension_id = item->extension_id();
// The item must have a non-empty extension id, and not have already been
// added.
@@ -319,7 +319,7 @@
context_items_[extension_id].push_back(item);
items_by_id_[item->id()] = item;
- if (item->type() == ExtensionMenuItem::RADIO) {
+ if (item->type() == MenuItem::RADIO) {
if (item->checked())
RadioItemSelected(item);
else
@@ -333,10 +333,10 @@
return true;
}
-bool ExtensionMenuManager::AddChildItem(const ExtensionMenuItem::Id& parent_id,
- ExtensionMenuItem* child) {
- ExtensionMenuItem* parent = GetItemById(parent_id);
- if (!parent || parent->type() != ExtensionMenuItem::NORMAL ||
+bool MenuManager::AddChildItem(const MenuItem::Id& parent_id,
+ MenuItem* child) {
+ MenuItem* parent = GetItemById(parent_id);
+ if (!parent || parent->type() != MenuItem::NORMAL ||
parent->incognito() != child->incognito() ||
parent->extension_id() != child->extension_id() ||
ContainsKey(items_by_id_, child->id()))
@@ -344,21 +344,20 @@
parent->AddChild(child);
items_by_id_[child->id()] = child;
- if (child->type() == ExtensionMenuItem::RADIO)
+ if (child->type() == MenuItem::RADIO)
SanitizeRadioList(parent->children());
return true;
}
-bool ExtensionMenuManager::DescendantOf(
- ExtensionMenuItem* item,
- const ExtensionMenuItem::Id& ancestor_id) {
+bool MenuManager::DescendantOf(MenuItem* item,
+ const MenuItem::Id& ancestor_id) {
// Work our way up the tree until we find the ancestor or NULL.
- ExtensionMenuItem::Id* id = item->parent_id();
+ MenuItem::Id* id = item->parent_id();
while (id != NULL) {
DCHECK(*id != item->id()); // Catch circular graphs.
if (*id == ancestor_id)
return true;
- ExtensionMenuItem* next = GetItemById(*id);
+ MenuItem* next = GetItemById(*id);
if (!next) {
NOTREACHED();
return false;
@@ -368,11 +367,10 @@
return false;
}
-bool ExtensionMenuManager::ChangeParent(
- const ExtensionMenuItem::Id& child_id,
- const ExtensionMenuItem::Id* parent_id) {
- ExtensionMenuItem* child = GetItemById(child_id);
- ExtensionMenuItem* new_parent = parent_id ? GetItemById(*parent_id) : NULL;
+bool MenuManager::ChangeParent(const MenuItem::Id& child_id,
+ const MenuItem::Id* parent_id) {
+ MenuItem* child = GetItemById(child_id);
+ MenuItem* new_parent = parent_id ? GetItemById(*parent_id) : NULL;
if ((parent_id && (child_id == *parent_id)) || !child ||
(!new_parent && parent_id != NULL) ||
(new_parent && (DescendantOf(new_parent, child_id) ||
@@ -380,14 +378,14 @@
child->extension_id() != new_parent->extension_id())))
return false;
- ExtensionMenuItem::Id* old_parent_id = child->parent_id();
+ MenuItem::Id* old_parent_id = child->parent_id();
if (old_parent_id != NULL) {
- ExtensionMenuItem* old_parent = GetItemById(*old_parent_id);
+ MenuItem* old_parent = GetItemById(*old_parent_id);
if (!old_parent) {
NOTREACHED();
return false;
}
- ExtensionMenuItem* taken =
+ MenuItem* taken =
old_parent->ReleaseChild(child_id, false /* non-recursive search*/);
DCHECK(taken == child);
SanitizeRadioList(old_parent->children());
@@ -399,8 +397,8 @@
NOTREACHED();
return false;
}
- ExtensionMenuItem::List& list = i->second;
- ExtensionMenuItem::List::iterator j = std::find(list.begin(), list.end(),
+ MenuItem::List& list = i->second;
+ MenuItem::List::iterator j = std::find(list.begin(), list.end(),
child);
if (j == list.end()) {
NOTREACHED();
@@ -421,12 +419,11 @@
return true;
}
-bool ExtensionMenuManager::RemoveContextMenuItem(
- const ExtensionMenuItem::Id& id) {
+bool MenuManager::RemoveContextMenuItem(const MenuItem::Id& id) {
if (!ContainsKey(items_by_id_, id))
return false;
- ExtensionMenuItem* menu_item = GetItemById(id);
+ MenuItem* menu_item = GetItemById(id);
DCHECK(menu_item);
std::string extension_id = menu_item->extension_id();
MenuItemMap::iterator i = context_items_.find(extension_id);
@@ -436,9 +433,9 @@
}
bool result = false;
- std::set<ExtensionMenuItem::Id> items_removed;
- ExtensionMenuItem::List& list = i->second;
- ExtensionMenuItem::List::iterator j;
+ std::set<MenuItem::Id> items_removed;
+ MenuItem::List& list = i->second;
+ MenuItem::List::iterator j;
for (j = list.begin(); j < list.end(); ++j) {
// See if the current top-level item is a match.
if ((*j)->id() == id) {
@@ -452,7 +449,7 @@
} else {
// See if the item to remove was found as a descendant of the current
// top-level item.
- ExtensionMenuItem* child = (*j)->ReleaseChild(id, true /* recursive */);
+ MenuItem* child = (*j)->ReleaseChild(id, true /* recursive */);
if (child) {
items_removed = child->RemoveAllDescendants();
items_removed.insert(id);
@@ -466,7 +463,7 @@
DCHECK(result); // The check at the very top should have prevented this.
// Clear entries from the items_by_id_ map.
- std::set<ExtensionMenuItem::Id>::iterator removed_iter;
+ std::set<MenuItem::Id>::iterator removed_iter;
for (removed_iter = items_removed.begin();
removed_iter != items_removed.end();
++removed_iter) {
@@ -480,17 +477,16 @@
return result;
}
-void ExtensionMenuManager::RemoveAllContextItems(
- const std::string& extension_id) {
- ExtensionMenuItem::List::iterator i;
+void MenuManager::RemoveAllContextItems(const std::string& extension_id) {
+ MenuItem::List::iterator i;
for (i = context_items_[extension_id].begin();
i != context_items_[extension_id].end(); ++i) {
- ExtensionMenuItem* item = *i;
+ MenuItem* item = *i;
items_by_id_.erase(item->id());
// Remove descendants from this item and erase them from the lookup cache.
- std::set<ExtensionMenuItem::Id> removed_ids = item->RemoveAllDescendants();
- std::set<ExtensionMenuItem::Id>::const_iterator j;
+ std::set<MenuItem::Id> removed_ids = item->RemoveAllDescendants();
+ std::set<MenuItem::Id>::const_iterator j;
for (j = removed_ids.begin(); j != removed_ids.end(); ++j) {
items_by_id_.erase(*j);
}
@@ -500,9 +496,8 @@
icon_manager_.RemoveIcon(extension_id);
}
-ExtensionMenuItem* ExtensionMenuManager::GetItemById(
- const ExtensionMenuItem::Id& id) const {
- std::map<ExtensionMenuItem::Id, ExtensionMenuItem*>::const_iterator i =
+MenuItem* MenuManager::GetItemById(const MenuItem::Id& id) const {
+ std::map<MenuItem::Id, MenuItem*>::const_iterator i =
items_by_id_.find(id);
if (i != items_by_id_.end())
return i->second;
@@ -510,12 +505,12 @@
return NULL;
}
-void ExtensionMenuManager::RadioItemSelected(ExtensionMenuItem* item) {
+void MenuManager::RadioItemSelected(MenuItem* item) {
// If this is a child item, we need to get a handle to the list from its
// parent. Otherwise get a handle to the top-level list.
- const ExtensionMenuItem::List* list = NULL;
+ const MenuItem::List* list = NULL;
if (item->parent_id()) {
- ExtensionMenuItem* parent = GetItemById(*item->parent_id());
+ MenuItem* parent = GetItemById(*item->parent_id());
if (!parent) {
NOTREACHED();
return;
@@ -530,7 +525,7 @@
}
// Find where |item| is in the list.
- ExtensionMenuItem::List::const_iterator item_location;
+ MenuItem::List::const_iterator item_location;
for (item_location = list->begin(); item_location != list->end();
++item_location) {
if (*item_location == item)
@@ -542,12 +537,12 @@
}
// Iterate backwards from |item| and uncheck any adjacent radio items.
- ExtensionMenuItem::List::const_iterator i;
+ MenuItem::List::const_iterator i;
if (item_location != list->begin()) {
i = item_location;
do {
--i;
- if ((*i)->type() != ExtensionMenuItem::RADIO)
+ if ((*i)->type() != MenuItem::RADIO)
break;
(*i)->SetChecked(false);
} while (i != list->begin());
@@ -555,7 +550,7 @@
// Now iterate forwards from |item| and uncheck any adjacent radio items.
for (i = item_location + 1; i != list->end(); ++i) {
- if ((*i)->type() != ExtensionMenuItem::RADIO)
+ if ((*i)->type() != MenuItem::RADIO)
break;
(*i)->SetChecked(false);
}
@@ -567,26 +562,25 @@
dictionary->SetString(key, url.possibly_invalid_spec());
}
-void ExtensionMenuManager::ExecuteCommand(
- Profile* profile,
- WebContents* web_contents,
- const content::ContextMenuParams& params,
- const ExtensionMenuItem::Id& menu_item_id) {
+void MenuManager::ExecuteCommand(Profile* profile,
+ WebContents* web_contents,
+ const content::ContextMenuParams& params,
+ const MenuItem::Id& menu_item_id) {
ExtensionEventRouter* event_router = profile->GetExtensionEventRouter();
if (!event_router)
return;
- ExtensionMenuItem* item = GetItemById(menu_item_id);
+ MenuItem* item = GetItemById(menu_item_id);
if (!item)
return;
// ExtensionService/Extension can be NULL in unit tests :(
ExtensionService* service =
ExtensionSystem::Get(profile_)->extension_service();
- const extensions::Extension* extension = service ?
+ const Extension* extension = service ?
service->extensions()->GetByID(menu_item_id.extension_id) : NULL;
- if (item->type() == ExtensionMenuItem::RADIO)
+ if (item->type() == MenuItem::RADIO)
RadioItemSelected(item);
ListValue args;
@@ -628,15 +622,15 @@
else
args.Append(new DictionaryValue());
- if (item->type() == ExtensionMenuItem::CHECKBOX ||
- item->type() == ExtensionMenuItem::RADIO) {
+ if (item->type() == MenuItem::CHECKBOX ||
+ item->type() == MenuItem::RADIO) {
bool was_checked = item->checked();
properties->SetBoolean("wasChecked", was_checked);
// RADIO items always get set to true when you click on them, but CHECKBOX
// items get their state toggled.
bool checked =
- (item->type() == ExtensionMenuItem::RADIO) ? true : !was_checked;
+ (item->type() == MenuItem::RADIO) ? true : !was_checked;
item->SetChecked(checked);
properties->SetBoolean("checked", item->checked());
@@ -664,11 +658,10 @@
ExtensionEventRouter::USER_GESTURE_ENABLED);
}
-void ExtensionMenuManager::SanitizeRadioList(
- const ExtensionMenuItem::List& item_list) {
- ExtensionMenuItem::List::const_iterator i = item_list.begin();
+void MenuManager::SanitizeRadioList(const MenuItem::List& item_list) {
+ MenuItem::List::const_iterator i = item_list.begin();
while (i != item_list.end()) {
- if ((*i)->type() != ExtensionMenuItem::RADIO) {
+ if ((*i)->type() != MenuItem::RADIO) {
++i;
break;
}
@@ -676,11 +669,11 @@
// Uncheck any checked radio items in the run, and at the end reset
// the appropriate one to checked. If no check radio items were found,
// then check the first radio item in the run.
- ExtensionMenuItem::List::const_iterator last_checked = item_list.end();
- ExtensionMenuItem::List::const_iterator radio_run_iter;
+ MenuItem::List::const_iterator last_checked = item_list.end();
+ MenuItem::List::const_iterator radio_run_iter;
for (radio_run_iter = i; radio_run_iter != item_list.end();
++radio_run_iter) {
- if ((*radio_run_iter)->type() != ExtensionMenuItem::RADIO) {
+ if ((*radio_run_iter)->type() != MenuItem::RADIO) {
break;
}
@@ -699,11 +692,11 @@
}
}
-bool ExtensionMenuManager::ItemUpdated(const ExtensionMenuItem::Id& id) {
+bool MenuManager::ItemUpdated(const MenuItem::Id& id) {
if (!ContainsKey(items_by_id_, id))
return false;
- ExtensionMenuItem* menu_item = GetItemById(id);
+ MenuItem* menu_item = GetItemById(id);
DCHECK(menu_item);
if (menu_item->parent_id()) {
@@ -721,41 +714,40 @@
return true;
}
-void ExtensionMenuManager::WriteToStorage(
- const extensions::Extension* extension) {
+void MenuManager::WriteToStorage(const Extension* extension) {
if (!extension->has_lazy_background_page())
return;
- const ExtensionMenuItem::List* top_items = MenuItems(extension->id());
- ExtensionMenuItem::List all_items;
+ const MenuItem::List* top_items = MenuItems(extension->id());
+ MenuItem::List all_items;
if (top_items) {
- for (ExtensionMenuItem::List::const_iterator i = top_items->begin();
+ for (MenuItem::List::const_iterator i = top_items->begin();
i != top_items->end(); ++i) {
(*i)->GetFlattenedSubtree(&all_items);
}
}
- extensions::StateStore* store = ExtensionSystem::Get(profile_)->state_store();
+ StateStore* store = ExtensionSystem::Get(profile_)->state_store();
if (store)
store->SetExtensionValue(extension->id(), kContextMenusKey,
MenuItemsToValue(all_items));
}
-void ExtensionMenuManager::ReadFromStorage(const std::string& extension_id,
- scoped_ptr<base::Value> value) {
- const extensions::Extension* extension =
+void MenuManager::ReadFromStorage(const std::string& extension_id,
+ scoped_ptr<base::Value> value) {
+ const Extension* extension =
ExtensionSystem::Get(profile_)->extension_service()->extensions()->
GetByID(extension_id);
if (!extension)
return;
- ExtensionMenuItem::List items = MenuItemsFromValue(extension_id, value.get());
+ MenuItem::List items = MenuItemsFromValue(extension_id, value.get());
for (size_t i = 0; i < items.size(); ++i) {
if (items[i]->parent_id()) {
// Parent IDs are stored in the parent_id field for convenience, but
// they have not yet been validated. Separate them out here.
// Because of the order in which we store items in the prefs, parents will
// precede children, so we should already know about any parent items.
- scoped_ptr<ExtensionMenuItem::Id> parent_id;
+ scoped_ptr<MenuItem::Id> parent_id;
parent_id.swap(items[i]->parent_id_);
AddChildItem(*parent_id, items[i]);
} else {
@@ -764,59 +756,57 @@
}
}
-void ExtensionMenuManager::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
+void MenuManager::Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
if (type == chrome::NOTIFICATION_EXTENSION_UNLOADED) {
// Remove menu items for disabled/uninstalled extensions.
- const extensions::Extension* extension =
- content::Details<extensions::UnloadedExtensionInfo>(details)->extension;
+ const Extension* extension =
+ content::Details<UnloadedExtensionInfo>(details)->extension;
if (ContainsKey(context_items_, extension->id())) {
RemoveAllContextItems(extension->id());
}
} else if (type == chrome::NOTIFICATION_EXTENSION_LOADED) {
- const extensions::Extension* extension =
- content::Details<const extensions::Extension>(details).ptr();
- extensions::StateStore* store =
- ExtensionSystem::Get(profile_)->state_store();
+ const Extension* extension =
+ content::Details<const Extension>(details).ptr();
+ StateStore* store = ExtensionSystem::Get(profile_)->state_store();
if (store && extension->has_lazy_background_page()) {
store->GetExtensionValue(extension->id(), kContextMenusKey,
- base::Bind(&ExtensionMenuManager::ReadFromStorage,
+ base::Bind(&MenuManager::ReadFromStorage,
AsWeakPtr(), extension->id()));
}
}
}
-const SkBitmap& ExtensionMenuManager::GetIconForExtension(
+const SkBitmap& MenuManager::GetIconForExtension(
const std::string& extension_id) {
return icon_manager_.GetIcon(extension_id);
}
-ExtensionMenuItem::Id::Id()
+MenuItem::Id::Id()
: incognito(false), extension_id(""), uid(0), string_uid("") {
}
-ExtensionMenuItem::Id::Id(bool incognito, const std::string& extension_id)
+MenuItem::Id::Id(bool incognito, const std::string& extension_id)
: incognito(incognito), extension_id(extension_id), uid(0),
string_uid("") {
}
-ExtensionMenuItem::Id::~Id() {
+MenuItem::Id::~Id() {
}
-bool ExtensionMenuItem::Id::operator==(const Id& other) const {
+bool MenuItem::Id::operator==(const Id& other) const {
return (incognito == other.incognito &&
extension_id == other.extension_id &&
uid == other.uid &&
string_uid == other.string_uid);
}
-bool ExtensionMenuItem::Id::operator!=(const Id& other) const {
+bool MenuItem::Id::operator!=(const Id& other) const {
return !(*this == other);
}
-bool ExtensionMenuItem::Id::operator<(const Id& other) const {
+bool MenuItem::Id::operator<(const Id& other) const {
if (incognito < other.incognito)
return true;
if (incognito == other.incognito) {
@@ -831,3 +821,5 @@
}
return false;
}
+
+} // namespace extensions
diff --git a/chrome/browser/extensions/extension_menu_manager.h b/chrome/browser/extensions/menu_manager.h
similarity index 77%
rename from chrome/browser/extensions/extension_menu_manager.h
rename to chrome/browser/extensions/menu_manager.h
index 0bacba74..38ef3f7 100644
--- a/chrome/browser/extensions/extension_menu_manager.h
+++ b/chrome/browser/extensions/menu_manager.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_MENU_MANAGER_H_
-#define CHROME_BROWSER_EXTENSIONS_EXTENSION_MENU_MANAGER_H_
+#ifndef CHROME_BROWSER_EXTENSIONS_MENU_MANAGER_H_
+#define CHROME_BROWSER_EXTENSIONS_MENU_MANAGER_H_
#pragma once
#include <map>
@@ -34,13 +34,12 @@
namespace extensions {
class Extension;
-}
// Represents a menu item added by an extension.
-class ExtensionMenuItem {
+class MenuItem {
public:
- // A list of ExtensionMenuItem's.
- typedef std::vector<ExtensionMenuItem*> List;
+ // A list of MenuItems.
+ typedef std::vector<MenuItem*> List;
// An Id uniquely identifies a context menu item registered by an extension.
struct Id {
@@ -126,13 +125,13 @@
uint32 value_; // A bitmask of Context values.
};
- ExtensionMenuItem(const Id& id,
- const std::string& title,
- bool checked,
- bool enabled,
- Type type,
- const ContextList& contexts);
- virtual ~ExtensionMenuItem();
+ MenuItem(const Id& id,
+ const std::string& title,
+ bool checked,
+ bool enabled,
+ Type type,
+ const ContextList& contexts);
+ virtual ~MenuItem();
// Simple accessor methods.
bool incognito() const { return id_.incognito; }
@@ -176,11 +175,11 @@
// Converts to Value for serialization to preferences.
scoped_ptr<base::DictionaryValue> ToValue() const;
- // Returns a new ExtensionMenuItem created from |value|, or NULL if there is
- // an error. The caller takes ownership of the ExtensionMenuItem.
- static ExtensionMenuItem* Populate(const std::string& extension_id,
- const DictionaryValue& value,
- std::string* error);
+ // Returns a new MenuItem created from |value|, or NULL if there is
+ // an error. The caller takes ownership of the MenuItem.
+ static MenuItem* Populate(const std::string& extension_id,
+ const DictionaryValue& value,
+ std::string* error);
// Sets any document and target URL patterns from |properties|.
bool PopulateURLPatterns(const base::DictionaryValue& properties,
@@ -189,18 +188,18 @@
std::string* error);
protected:
- friend class ExtensionMenuManager;
+ friend class MenuManager;
// Takes ownership of |item| and sets its parent_id_.
- void AddChild(ExtensionMenuItem* item);
+ void AddChild(MenuItem* item);
// Takes the child item from this parent. The item is returned and the caller
// then owns the pointer.
- ExtensionMenuItem* ReleaseChild(const Id& child_id, bool recursive);
+ MenuItem* ReleaseChild(const Id& child_id, bool recursive);
// Recursively appends all descendant items (children, grandchildren, etc.)
// to the output |list|.
- void GetFlattenedSubtree(ExtensionMenuItem::List* list);
+ void GetFlattenedSubtree(MenuItem::List* list);
// Recursively removes all descendant items (children, grandchildren, etc.),
// returning the ids of the removed items.
@@ -239,16 +238,15 @@
// Any children this item may have.
List children_;
- DISALLOW_COPY_AND_ASSIGN(ExtensionMenuItem);
+ DISALLOW_COPY_AND_ASSIGN(MenuItem);
};
// This class keeps track of menu items added by extensions.
-class ExtensionMenuManager
- : public content::NotificationObserver,
- public base::SupportsWeakPtr<ExtensionMenuManager> {
+class MenuManager : public content::NotificationObserver,
+ public base::SupportsWeakPtr<MenuManager> {
public:
- explicit ExtensionMenuManager(Profile* profile);
- virtual ~ExtensionMenuManager();
+ explicit MenuManager(Profile* profile);
+ virtual ~MenuManager();
// Returns the ids of extensions which have menu items registered.
std::set<std::string> ExtensionIds();
@@ -258,49 +256,48 @@
// AddChildItem); although those can be reached via the top-level items'
// children. A view can then decide how to display these, including whether to
// put them into a submenu if there are more than 1.
- const ExtensionMenuItem::List* MenuItems(const std::string& extension_id);
+ const MenuItem::List* MenuItems(const std::string& extension_id);
// Adds a top-level menu item for an extension, requiring the |extension|
// pointer so it can load the icon for the extension. Takes ownership of
// |item|. Returns a boolean indicating success or failure.
- bool AddContextItem(const extensions::Extension* extension,
- ExtensionMenuItem* item);
+ bool AddContextItem(const Extension* extension, MenuItem* item);
// Add an item as a child of another item which has been previously added, and
// takes ownership of |item|. Returns a boolean indicating success or failure.
- bool AddChildItem(const ExtensionMenuItem::Id& parent_id,
- ExtensionMenuItem* child);
+ bool AddChildItem(const MenuItem::Id& parent_id,
+ MenuItem* child);
// Makes existing item with |child_id| a child of the item with |parent_id|.
// If the child item was already a child of another parent, this will remove
// it from that parent first. It is an error to try and move an item to be a
// child of one of its own descendants. It is legal to pass NULL for
// |parent_id|, which means the item should be moved to the top-level.
- bool ChangeParent(const ExtensionMenuItem::Id& child_id,
- const ExtensionMenuItem::Id* parent_id);
+ bool ChangeParent(const MenuItem::Id& child_id,
+ const MenuItem::Id* parent_id);
// Removes a context menu item with the given id (whether it is a top-level
// item or a child of some other item), returning true if the item was found
// and removed or false otherwise.
- bool RemoveContextMenuItem(const ExtensionMenuItem::Id& id);
+ bool RemoveContextMenuItem(const MenuItem::Id& id);
// Removes all items for the given extension id.
void RemoveAllContextItems(const std::string& extension_id);
// Returns the item with the given |id| or NULL.
- ExtensionMenuItem* GetItemById(const ExtensionMenuItem::Id& id) const;
+ MenuItem* GetItemById(const MenuItem::Id& id) const;
- // Notify the ExtensionMenuManager that an item has been updated not through
- // an explicit call into ExtensionMenuManager. For example, if an item is
+ // Notify the MenuManager that an item has been updated not through
+ // an explicit call into MenuManager. For example, if an item is
// acquired by a call to GetItemById and changed, then this should be called.
// Returns true if the item was found or false otherwise.
- bool ItemUpdated(const ExtensionMenuItem::Id& id);
+ bool ItemUpdated(const MenuItem::Id& id);
// Called when a menu item is clicked on by the user.
void ExecuteCommand(Profile* profile,
content::WebContents* web_contents,
const content::ContextMenuParams& params,
- const ExtensionMenuItem::Id& menu_item_id);
+ const MenuItem::Id& menu_item_id);
// This returns a bitmap of width/height kFaviconSize, loaded either from an
// entry specified in the extension's 'icon' section of the manifest, or a
@@ -312,7 +309,7 @@
const content::NotificationDetails& details) OVERRIDE;
// Stores the menu items for the extension in the state storage.
- void WriteToStorage(const extensions::Extension* extension);
+ void WriteToStorage(const Extension* extension);
// Reads menu items for the extension from the state storage. Any invalid
// items are ignored.
@@ -320,31 +317,30 @@
scoped_ptr<base::Value> value);
private:
- FRIEND_TEST_ALL_PREFIXES(ExtensionMenuManagerTest, DeleteParent);
- FRIEND_TEST_ALL_PREFIXES(ExtensionMenuManagerTest, RemoveOneByOne);
+ FRIEND_TEST_ALL_PREFIXES(MenuManagerTest, DeleteParent);
+ FRIEND_TEST_ALL_PREFIXES(MenuManagerTest, RemoveOneByOne);
// This is a helper function which takes care of de-selecting any other radio
// items in the same group (i.e. that are adjacent in the list).
- void RadioItemSelected(ExtensionMenuItem* item);
+ void RadioItemSelected(MenuItem* item);
// Make sure that there is only one radio item selected at once in any run.
// If there are no radio items selected, then the first item in the run
// will get selected. If there are multiple radio items selected, then only
// the last one will get selcted.
- void SanitizeRadioList(const ExtensionMenuItem::List& item_list);
+ void SanitizeRadioList(const MenuItem::List& item_list);
// Returns true if item is a descendant of an item with id |ancestor_id|.
- bool DescendantOf(ExtensionMenuItem* item,
- const ExtensionMenuItem::Id& ancestor_id);
+ bool DescendantOf(MenuItem* item, const MenuItem::Id& ancestor_id);
// We keep items organized by mapping an extension id to a list of items.
- typedef std::map<std::string, ExtensionMenuItem::List> MenuItemMap;
+ typedef std::map<std::string, MenuItem::List> MenuItemMap;
MenuItemMap context_items_;
- // This lets us make lookup by id fast. It maps id to ExtensionMenuItem* for
+ // This lets us make lookup by id fast. It maps id to MenuItem* for
// all items the menu manager knows about, including all children of top-level
// items.
- std::map<ExtensionMenuItem::Id, ExtensionMenuItem*> items_by_id_;
+ std::map<MenuItem::Id, MenuItem*> items_by_id_;
content::NotificationRegistrar registrar_;
@@ -352,7 +348,9 @@
Profile* profile_;
- DISALLOW_COPY_AND_ASSIGN(ExtensionMenuManager);
+ DISALLOW_COPY_AND_ASSIGN(MenuManager);
};
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MENU_MANAGER_H_
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_MENU_MANAGER_H_
diff --git a/chrome/browser/extensions/extension_menu_manager_unittest.cc b/chrome/browser/extensions/menu_manager_unittest.cc
similarity index 78%
rename from chrome/browser/extensions/extension_menu_manager_unittest.cc
rename to chrome/browser/extensions/menu_manager_unittest.cc
index a88b32f..fb238e86 100644
--- a/chrome/browser/extensions/extension_menu_manager_unittest.cc
+++ b/chrome/browser/extensions/menu_manager_unittest.cc
@@ -13,7 +13,7 @@
#include "base/values.h"
#include "chrome/browser/extensions/extension_event_names.h"
#include "chrome/browser/extensions/extension_event_router.h"
-#include "chrome/browser/extensions/extension_menu_manager.h"
+#include "chrome/browser/extensions/menu_manager.h"
#include "chrome/browser/extensions/test_extension_prefs.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_paths.h"
@@ -27,40 +27,40 @@
#include "testing/gtest/include/gtest/gtest.h"
using content::BrowserThread;
-using extensions::Extension;
using testing::_;
using testing::AtLeast;
using testing::InSequence;
using testing::Return;
using testing::SaveArg;
+namespace extensions {
+
// Base class for tests.
-class ExtensionMenuManagerTest : public testing::Test {
+class MenuManagerTest : public testing::Test {
public:
- ExtensionMenuManagerTest()
- : ui_thread_(BrowserThread::UI, &message_loop_),
- file_thread_(BrowserThread::FILE, &message_loop_),
- manager_(&profile_),
- next_id_(1) {
+ MenuManagerTest() : ui_thread_(BrowserThread::UI, &message_loop_),
+ file_thread_(BrowserThread::FILE, &message_loop_),
+ manager_(&profile_),
+ next_id_(1) {
}
// Returns a test item.
- ExtensionMenuItem* CreateTestItem(Extension* extension) {
- ExtensionMenuItem::Type type = ExtensionMenuItem::NORMAL;
- ExtensionMenuItem::ContextList contexts(ExtensionMenuItem::ALL);
- ExtensionMenuItem::Id id(false, extension->id());
+ MenuItem* CreateTestItem(Extension* extension) {
+ MenuItem::Type type = MenuItem::NORMAL;
+ MenuItem::ContextList contexts(MenuItem::ALL);
+ MenuItem::Id id(false, extension->id());
id.uid = next_id_++;
- return new ExtensionMenuItem(id, "test", false, true, type, contexts);
+ return new MenuItem(id, "test", false, true, type, contexts);
}
// Returns a test item with the given string ID.
- ExtensionMenuItem* CreateTestItemWithID(Extension* extension,
- const std::string& string_id) {
- ExtensionMenuItem::Type type = ExtensionMenuItem::NORMAL;
- ExtensionMenuItem::ContextList contexts(ExtensionMenuItem::ALL);
- ExtensionMenuItem::Id id(false, extension->id());
+ MenuItem* CreateTestItemWithID(Extension* extension,
+ const std::string& string_id) {
+ MenuItem::Type type = MenuItem::NORMAL;
+ MenuItem::ContextList contexts(MenuItem::ALL);
+ MenuItem::Id id(false, extension->id());
id.string_uid = string_id;
- return new ExtensionMenuItem(id, "test", false, true, type, contexts);
+ return new MenuItem(id, "test", false, true, type, contexts);
}
// Creates and returns a test Extension. The caller does *not* own the return
@@ -77,31 +77,30 @@
content::TestBrowserThread ui_thread_;
content::TestBrowserThread file_thread_;
- ExtensionMenuManager manager_;
- extensions::ExtensionList extensions_;
+ MenuManager manager_;
+ ExtensionList extensions_;
TestExtensionPrefs prefs_;
int next_id_;
private:
- DISALLOW_COPY_AND_ASSIGN(ExtensionMenuManagerTest);
+ DISALLOW_COPY_AND_ASSIGN(MenuManagerTest);
};
// Tests adding, getting, and removing items.
-TEST_F(ExtensionMenuManagerTest, AddGetRemoveItems) {
+TEST_F(MenuManagerTest, AddGetRemoveItems) {
Extension* extension = AddExtension("test");
// Add a new item, make sure you can get it back.
- ExtensionMenuItem* item1 = CreateTestItem(extension);
+ MenuItem* item1 = CreateTestItem(extension);
ASSERT_TRUE(item1 != NULL);
ASSERT_TRUE(manager_.AddContextItem(extension, item1));
ASSERT_EQ(item1, manager_.GetItemById(item1->id()));
- const ExtensionMenuItem::List* items =
- manager_.MenuItems(item1->extension_id());
+ const MenuItem::List* items = manager_.MenuItems(item1->extension_id());
ASSERT_EQ(1u, items->size());
ASSERT_EQ(item1, items->at(0));
// Add a second item, make sure it comes back too.
- ExtensionMenuItem* item2 = CreateTestItemWithID(extension, "id2");
+ MenuItem* item2 = CreateTestItemWithID(extension, "id2");
ASSERT_TRUE(manager_.AddContextItem(extension, item2));
ASSERT_EQ(item2, manager_.GetItemById(item2->id()));
items = manager_.MenuItems(item2->extension_id());
@@ -110,8 +109,8 @@
ASSERT_EQ(item2, items->at(1));
// Try adding item 3, then removing it.
- ExtensionMenuItem* item3 = CreateTestItem(extension);
- ExtensionMenuItem::Id id3 = item3->id();
+ MenuItem* item3 = CreateTestItem(extension);
+ MenuItem::Id id3 = item3->id();
std::string extension_id = item3->extension_id();
ASSERT_TRUE(manager_.AddContextItem(extension, item3));
ASSERT_EQ(item3, manager_.GetItemById(id3));
@@ -121,49 +120,48 @@
ASSERT_EQ(2u, manager_.MenuItems(extension_id)->size());
// Make sure removing a non-existent item returns false.
- ExtensionMenuItem::Id id(false, extension->id());
+ MenuItem::Id id(false, extension->id());
id.uid = id3.uid + 50;
ASSERT_FALSE(manager_.RemoveContextMenuItem(id));
// Make sure adding an item with the same string ID returns false.
- scoped_ptr<ExtensionMenuItem> item2too(
- CreateTestItemWithID(extension, "id2"));
+ scoped_ptr<MenuItem> item2too(CreateTestItemWithID(extension, "id2"));
ASSERT_FALSE(manager_.AddContextItem(extension, item2too.get()));
// But the same string ID should not collide with another extension.
Extension* extension2 = AddExtension("test2");
- ExtensionMenuItem* item2other = CreateTestItemWithID(extension2, "id2");
+ MenuItem* item2other = CreateTestItemWithID(extension2, "id2");
ASSERT_TRUE(manager_.AddContextItem(extension2, item2other));
}
// Test adding/removing child items.
-TEST_F(ExtensionMenuManagerTest, ChildFunctions) {
+TEST_F(MenuManagerTest, ChildFunctions) {
Extension* extension1 = AddExtension("1111");
Extension* extension2 = AddExtension("2222");
Extension* extension3 = AddExtension("3333");
- ExtensionMenuItem* item1 = CreateTestItem(extension1);
- ExtensionMenuItem* item2 = CreateTestItem(extension2);
- ExtensionMenuItem* item2_child = CreateTestItemWithID(extension2, "2child");
- ExtensionMenuItem* item2_grandchild = CreateTestItem(extension2);
+ MenuItem* item1 = CreateTestItem(extension1);
+ MenuItem* item2 = CreateTestItem(extension2);
+ MenuItem* item2_child = CreateTestItemWithID(extension2, "2child");
+ MenuItem* item2_grandchild = CreateTestItem(extension2);
// This third item we expect to fail inserting, so we use a scoped_ptr to make
// sure it gets deleted.
- scoped_ptr<ExtensionMenuItem> item3(CreateTestItem(extension3));
+ scoped_ptr<MenuItem> item3(CreateTestItem(extension3));
// Add in the first two items.
ASSERT_TRUE(manager_.AddContextItem(extension1, item1));
ASSERT_TRUE(manager_.AddContextItem(extension2, item2));
- ExtensionMenuItem::Id id1 = item1->id();
- ExtensionMenuItem::Id id2 = item2->id();
+ MenuItem::Id id1 = item1->id();
+ MenuItem::Id id2 = item2->id();
// Try adding item3 as a child of item2 - this should fail because item3 has
// a different extension id.
ASSERT_FALSE(manager_.AddChildItem(id2, item3.get()));
// Add item2_child as a child of item2.
- ExtensionMenuItem::Id id2_child = item2_child->id();
+ MenuItem::Id id2_child = item2_child->id();
ASSERT_TRUE(manager_.AddChildItem(id2, item2_child));
ASSERT_EQ(1, item2->child_count());
ASSERT_EQ(0, item1->child_count());
@@ -173,7 +171,7 @@
ASSERT_EQ(item1, manager_.MenuItems(item1->extension_id())->at(0));
// Add item2_grandchild as a child of item2_child, then remove it.
- ExtensionMenuItem::Id id2_grandchild = item2_grandchild->id();
+ MenuItem::Id id2_grandchild = item2_grandchild->id();
ASSERT_TRUE(manager_.AddChildItem(id2_child, item2_grandchild));
ASSERT_EQ(1, item2->child_count());
ASSERT_EQ(1, item2_child->child_count());
@@ -192,22 +190,22 @@
}
// Tests that deleting a parent properly removes descendants.
-TEST_F(ExtensionMenuManagerTest, DeleteParent) {
+TEST_F(MenuManagerTest, DeleteParent) {
Extension* extension = AddExtension("1111");
// Set up 5 items to add.
- ExtensionMenuItem* item1 = CreateTestItem(extension);
- ExtensionMenuItem* item2 = CreateTestItem(extension);
- ExtensionMenuItem* item3 = CreateTestItemWithID(extension, "id3");
- ExtensionMenuItem* item4 = CreateTestItemWithID(extension, "id4");
- ExtensionMenuItem* item5 = CreateTestItem(extension);
- ExtensionMenuItem* item6 = CreateTestItem(extension);
- ExtensionMenuItem::Id item1_id = item1->id();
- ExtensionMenuItem::Id item2_id = item2->id();
- ExtensionMenuItem::Id item3_id = item3->id();
- ExtensionMenuItem::Id item4_id = item4->id();
- ExtensionMenuItem::Id item5_id = item5->id();
- ExtensionMenuItem::Id item6_id = item6->id();
+ MenuItem* item1 = CreateTestItem(extension);
+ MenuItem* item2 = CreateTestItem(extension);
+ MenuItem* item3 = CreateTestItemWithID(extension, "id3");
+ MenuItem* item4 = CreateTestItemWithID(extension, "id4");
+ MenuItem* item5 = CreateTestItem(extension);
+ MenuItem* item6 = CreateTestItem(extension);
+ MenuItem::Id item1_id = item1->id();
+ MenuItem::Id item2_id = item2->id();
+ MenuItem::Id item3_id = item3->id();
+ MenuItem::Id item4_id = item4->id();
+ MenuItem::Id item5_id = item5->id();
+ MenuItem::Id item6_id = item6->id();
// Add the items in the hierarchy
// item1 -> item2 -> item3 -> item4 -> item5 -> item6.
@@ -257,25 +255,24 @@
}
// Tests changing parents.
-TEST_F(ExtensionMenuManagerTest, ChangeParent) {
+TEST_F(MenuManagerTest, ChangeParent) {
Extension* extension1 = AddExtension("1111");
// First create two items and add them both to the manager.
- ExtensionMenuItem* item1 = CreateTestItem(extension1);
- ExtensionMenuItem* item2 = CreateTestItem(extension1);
+ MenuItem* item1 = CreateTestItem(extension1);
+ MenuItem* item2 = CreateTestItem(extension1);
ASSERT_TRUE(manager_.AddContextItem(extension1, item1));
ASSERT_TRUE(manager_.AddContextItem(extension1, item2));
- const ExtensionMenuItem::List* items =
- manager_.MenuItems(item1->extension_id());
+ const MenuItem::List* items = manager_.MenuItems(item1->extension_id());
ASSERT_EQ(2u, items->size());
ASSERT_EQ(item1, items->at(0));
ASSERT_EQ(item2, items->at(1));
// Now create a third item, initially add it as a child of item1, then move
// it to be a child of item2.
- ExtensionMenuItem* item3 = CreateTestItem(extension1);
+ MenuItem* item3 = CreateTestItem(extension1);
ASSERT_TRUE(manager_.AddChildItem(item1->id(), item3));
ASSERT_EQ(1, item1->child_count());
@@ -326,7 +323,7 @@
// Make sure you can't move a node to be a child of another extension's item.
Extension* extension2 = AddExtension("2222");
- ExtensionMenuItem* item4 = CreateTestItem(extension2);
+ MenuItem* item4 = CreateTestItem(extension2);
ASSERT_TRUE(manager_.AddContextItem(extension2, item4));
ASSERT_FALSE(manager_.ChangeParent(item4->id(), &item1->id()));
ASSERT_FALSE(manager_.ChangeParent(item1->id(), &item4->id()));
@@ -337,7 +334,7 @@
// Tests that we properly remove an extension's menu item when that extension is
// unloaded.
-TEST_F(ExtensionMenuManagerTest, ExtensionUnloadRemovesMenuItems) {
+TEST_F(MenuManagerTest, ExtensionUnloadRemovesMenuItems) {
content::NotificationService* notifier =
content::NotificationService::current();
ASSERT_TRUE(notifier != NULL);
@@ -345,26 +342,26 @@
// Create a test extension.
Extension* extension1 = AddExtension("1111");
- // Create an ExtensionMenuItem and put it into the manager.
- ExtensionMenuItem* item1 = CreateTestItem(extension1);
- ExtensionMenuItem::Id id1 = item1->id();
+ // Create an MenuItem and put it into the manager.
+ MenuItem* item1 = CreateTestItem(extension1);
+ MenuItem::Id id1 = item1->id();
ASSERT_EQ(extension1->id(), item1->extension_id());
ASSERT_TRUE(manager_.AddContextItem(extension1, item1));
ASSERT_EQ(1u, manager_.MenuItems(extension1->id())->size());
// Create a menu item with a different extension id and add it to the manager.
Extension* extension2 = AddExtension("2222");
- ExtensionMenuItem* item2 = CreateTestItem(extension2);
+ MenuItem* item2 = CreateTestItem(extension2);
ASSERT_NE(item1->extension_id(), item2->extension_id());
ASSERT_TRUE(manager_.AddContextItem(extension2, item2));
// Notify that the extension was unloaded, and make sure the right item is
// gone.
- extensions::UnloadedExtensionInfo details(
+ UnloadedExtensionInfo details(
extension1, extension_misc::UNLOAD_REASON_DISABLE);
notifier->Notify(chrome::NOTIFICATION_EXTENSION_UNLOADED,
content::Source<Profile>(&profile_),
- content::Details<extensions::UnloadedExtensionInfo>(
+ content::Details<UnloadedExtensionInfo>(
&details));
ASSERT_EQ(NULL, manager_.MenuItems(extension1->id()));
ASSERT_EQ(1u, manager_.MenuItems(extension2->id())->size());
@@ -372,7 +369,7 @@
ASSERT_TRUE(manager_.GetItemById(item2->id()) != NULL);
}
-// A mock message service for tests of ExtensionMenuManager::ExecuteCommand.
+// A mock message service for tests of MenuManager::ExecuteCommand.
class MockExtensionEventRouter : public ExtensionEventRouter {
public:
explicit MockExtensionEventRouter(Profile* profile) :
@@ -391,7 +388,7 @@
DISALLOW_COPY_AND_ASSIGN(MockExtensionEventRouter);
};
-// A mock profile for tests of ExtensionMenuManager::ExecuteCommand.
+// A mock profile for tests of MenuManager::ExecuteCommand.
class MockTestingProfile : public TestingProfile {
public:
MockTestingProfile() {}
@@ -402,22 +399,22 @@
};
// Tests the RemoveAll functionality.
-TEST_F(ExtensionMenuManagerTest, RemoveAll) {
+TEST_F(MenuManagerTest, RemoveAll) {
// Try removing all items for an extension id that doesn't have any items.
manager_.RemoveAllContextItems("CCCC");
// Add 2 top-level and one child item for extension 1.
Extension* extension1 = AddExtension("1111");
- ExtensionMenuItem* item1 = CreateTestItem(extension1);
- ExtensionMenuItem* item2 = CreateTestItem(extension1);
- ExtensionMenuItem* item3 = CreateTestItem(extension1);
+ MenuItem* item1 = CreateTestItem(extension1);
+ MenuItem* item2 = CreateTestItem(extension1);
+ MenuItem* item3 = CreateTestItem(extension1);
ASSERT_TRUE(manager_.AddContextItem(extension1, item1));
ASSERT_TRUE(manager_.AddContextItem(extension1, item2));
ASSERT_TRUE(manager_.AddChildItem(item1->id(), item3));
// Add one top-level item for extension 2.
Extension* extension2 = AddExtension("2222");
- ExtensionMenuItem* item4 = CreateTestItem(extension2);
+ MenuItem* item4 = CreateTestItem(extension2);
ASSERT_TRUE(manager_.AddContextItem(extension2, item4));
EXPECT_EQ(2u, manager_.MenuItems(extension1->id())->size());
@@ -434,12 +431,12 @@
}
// Tests that removing all items one-by-one doesn't leave an entry around.
-TEST_F(ExtensionMenuManagerTest, RemoveOneByOne) {
+TEST_F(MenuManagerTest, RemoveOneByOne) {
// Add 2 test items.
Extension* extension1 = AddExtension("1111");
- ExtensionMenuItem* item1 = CreateTestItem(extension1);
- ExtensionMenuItem* item2 = CreateTestItem(extension1);
- ExtensionMenuItem* item3 = CreateTestItemWithID(extension1, "id3");
+ MenuItem* item1 = CreateTestItem(extension1);
+ MenuItem* item2 = CreateTestItem(extension1);
+ MenuItem* item3 = CreateTestItemWithID(extension1, "id3");
ASSERT_TRUE(manager_.AddContextItem(extension1, item1));
ASSERT_TRUE(manager_.AddContextItem(extension1, item2));
ASSERT_TRUE(manager_.AddContextItem(extension1, item3));
@@ -453,7 +450,7 @@
ASSERT_TRUE(manager_.context_items_.empty());
}
-TEST_F(ExtensionMenuManagerTest, ExecuteCommand) {
+TEST_F(MenuManagerTest, ExecuteCommand) {
MockTestingProfile profile;
scoped_ptr<MockExtensionEventRouter> mock_event_router(
@@ -467,8 +464,8 @@
params.is_editable = false;
Extension* extension = AddExtension("test");
- ExtensionMenuItem* item = CreateTestItem(extension);
- ExtensionMenuItem::Id id = item->id();
+ MenuItem* item = CreateTestItem(extension);
+ MenuItem::Id id = item->id();
ASSERT_TRUE(manager_.AddContextItem(extension, item));
EXPECT_CALL(profile, GetExtensionEventRouter())
@@ -538,13 +535,13 @@
}
// Test that there is always only one radio item selected.
-TEST_F(ExtensionMenuManagerTest, SanitizeRadioButtons) {
+TEST_F(MenuManagerTest, SanitizeRadioButtons) {
Extension* extension = AddExtension("test");
// A single unchecked item should get checked
- ExtensionMenuItem* item1 = CreateTestItem(extension);
+ MenuItem* item1 = CreateTestItem(extension);
- item1->set_type(ExtensionMenuItem::RADIO);
+ item1->set_type(MenuItem::RADIO);
item1->SetChecked(false);
ASSERT_FALSE(item1->checked());
manager_.AddContextItem(extension, item1);
@@ -552,8 +549,8 @@
// In a run of two unchecked items, the first should get selected.
item1->SetChecked(false);
- ExtensionMenuItem* item2 = CreateTestItem(extension);
- item2->set_type(ExtensionMenuItem::RADIO);
+ MenuItem* item2 = CreateTestItem(extension);
+ item2->set_type(MenuItem::RADIO);
item2->SetChecked(false);
ASSERT_FALSE(item1->checked());
ASSERT_FALSE(item2->checked());
@@ -582,8 +579,8 @@
// If a checked item is added to a run that already has a checked item,
// then the new item should get checked.
item1->SetChecked(true);
- ExtensionMenuItem* new_item = CreateTestItem(extension);
- new_item->set_type(ExtensionMenuItem::RADIO);
+ MenuItem* new_item = CreateTestItem(extension);
+ new_item->set_type(MenuItem::RADIO);
new_item->SetChecked(true);
ASSERT_TRUE(item1->checked());
ASSERT_TRUE(new_item->checked());
@@ -591,13 +588,13 @@
ASSERT_FALSE(item1->checked());
ASSERT_TRUE(new_item->checked());
// Make sure that children are checked as well.
- ExtensionMenuItem* parent = CreateTestItem(extension);
+ MenuItem* parent = CreateTestItem(extension);
manager_.AddContextItem(extension, parent);
- ExtensionMenuItem* child1 = CreateTestItem(extension);
- child1->set_type(ExtensionMenuItem::RADIO);
+ MenuItem* child1 = CreateTestItem(extension);
+ child1->set_type(MenuItem::RADIO);
child1->SetChecked(false);
- ExtensionMenuItem* child2 = CreateTestItem(extension);
- child2->set_type(ExtensionMenuItem::RADIO);
+ MenuItem* child2 = CreateTestItem(extension);
+ child2->set_type(MenuItem::RADIO);
child2->SetChecked(true);
ASSERT_FALSE(child1->checked());
ASSERT_TRUE(child2->checked());
@@ -627,3 +624,5 @@
ASSERT_FALSE(new_item->checked());
ASSERT_TRUE(child1->checked());
}
+
+} // namespace extensions