| Index: chrome/browser/extensions/api/context_menus/context_menus_api_helpers.h
|
| diff --git a/chrome/browser/extensions/api/context_menus/context_menus_api_helpers.h b/chrome/browser/extensions/api/context_menus/context_menus_api_helpers.h
|
| index bcd3a4bb2a5b4edc4269a1834afdff4dff5391e2..9b7ce87d0080c0b671e3f23e863ce2c696906772 100644
|
| --- a/chrome/browser/extensions/api/context_menus/context_menus_api_helpers.h
|
| +++ b/chrome/browser/extensions/api/context_menus/context_menus_api_helpers.h
|
| @@ -9,6 +9,7 @@
|
|
|
| #include "chrome/browser/extensions/menu_manager.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/common/extensions/api/context_menus.h"
|
| #include "extensions/common/error_utils.h"
|
| #include "extensions/common/manifest_handlers/background_info.h"
|
|
|
| @@ -54,74 +55,11 @@ MenuItem* GetParent(MenuItem::Id parent_id,
|
| const MenuManager* menu_manager,
|
| std::string* error);
|
|
|
| -template<typename PropertyWithEnumT>
|
| -MenuItem::ContextList GetContexts(const PropertyWithEnumT& property) {
|
| - MenuItem::ContextList contexts;
|
| - for (size_t i = 0; i < property.contexts->size(); ++i) {
|
| - switch (property.contexts->at(i)) {
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_ALL:
|
| - contexts.Add(extensions::MenuItem::ALL);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_PAGE:
|
| - contexts.Add(extensions::MenuItem::PAGE);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_SELECTION:
|
| - contexts.Add(extensions::MenuItem::SELECTION);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_LINK:
|
| - contexts.Add(extensions::MenuItem::LINK);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_EDITABLE:
|
| - contexts.Add(extensions::MenuItem::EDITABLE);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_IMAGE:
|
| - contexts.Add(extensions::MenuItem::IMAGE);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_VIDEO:
|
| - contexts.Add(extensions::MenuItem::VIDEO);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_AUDIO:
|
| - contexts.Add(extensions::MenuItem::AUDIO);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_FRAME:
|
| - contexts.Add(extensions::MenuItem::FRAME);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_LAUNCHER:
|
| - // Not available for <webview>.
|
| - contexts.Add(extensions::MenuItem::LAUNCHER);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_BROWSER_ACTION:
|
| - // Not available for <webview>.
|
| - contexts.Add(extensions::MenuItem::BROWSER_ACTION);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_PAGE_ACTION:
|
| - // Not available for <webview>.
|
| - contexts.Add(extensions::MenuItem::PAGE_ACTION);
|
| - break;
|
| - case PropertyWithEnumT::CONTEXTS_TYPE_NONE:
|
| - NOTREACHED();
|
| - }
|
| - }
|
| - return contexts;
|
| -}
|
| +MenuItem::ContextList GetContexts(const std::vector<
|
| + extensions::api::context_menus::ContextType>& in_contexts);
|
|
|
| -template<typename PropertyWithEnumT>
|
| -MenuItem::Type GetType(const PropertyWithEnumT& property,
|
| - MenuItem::Type default_type) {
|
| - switch (property.type) {
|
| - case PropertyWithEnumT::TYPE_NONE:
|
| - return default_type;
|
| - case PropertyWithEnumT::TYPE_NORMAL:
|
| - return extensions::MenuItem::NORMAL;
|
| - case PropertyWithEnumT::TYPE_CHECKBOX:
|
| - return extensions::MenuItem::CHECKBOX;
|
| - case PropertyWithEnumT::TYPE_RADIO:
|
| - return extensions::MenuItem::RADIO;
|
| - case PropertyWithEnumT::TYPE_SEPARATOR:
|
| - return extensions::MenuItem::SEPARATOR;
|
| - }
|
| - return extensions::MenuItem::NORMAL;
|
| -}
|
| +MenuItem::Type GetType(extensions::api::context_menus::ItemType type,
|
| + MenuItem::Type default_type);
|
|
|
| // Creates and adds a menu item from |create_properties|.
|
| template<typename PropertyWithEnumT>
|
| @@ -148,7 +86,7 @@ bool CreateMenuItem(const PropertyWithEnumT& create_properties,
|
| // Contexts.
|
| MenuItem::ContextList contexts;
|
| if (create_properties.contexts.get())
|
| - contexts = GetContexts(create_properties);
|
| + contexts = GetContexts(*create_properties.contexts);
|
| else
|
| contexts.Add(MenuItem::PAGE);
|
|
|
| @@ -174,7 +112,7 @@ bool CreateMenuItem(const PropertyWithEnumT& create_properties,
|
| if (create_properties.title.get())
|
| title = *create_properties.title;
|
|
|
| - MenuItem::Type type = GetType(create_properties, MenuItem::NORMAL);
|
| + MenuItem::Type type = GetType(create_properties.type, MenuItem::NORMAL);
|
| if (title.empty() && type != MenuItem::SEPARATOR) {
|
| *error = kTitleNeededError;
|
| return false;
|
| @@ -240,7 +178,7 @@ bool UpdateMenuItem(const PropertyWithEnumT& update_properties,
|
| }
|
|
|
| // Type.
|
| - MenuItem::Type type = GetType(update_properties, item->type());
|
| + MenuItem::Type type = GetType(update_properties.type, item->type());
|
|
|
| if (type != item->type()) {
|
| if (type == MenuItem::RADIO || item->type() == MenuItem::RADIO)
|
| @@ -283,7 +221,7 @@ bool UpdateMenuItem(const PropertyWithEnumT& update_properties,
|
| // Contexts.
|
| MenuItem::ContextList contexts;
|
| if (update_properties.contexts.get()) {
|
| - contexts = GetContexts(update_properties);
|
| + contexts = GetContexts(*update_properties.contexts);
|
|
|
| if (contexts.Contains(MenuItem::LAUNCHER)) {
|
| // Launcher item is not allowed for <webview>.
|
|
|