| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Definition of helper functions for the ContextMenus API. | 5 // Definition of helper functions for the ContextMenus API. |
| 6 | 6 |
| 7 #ifndef CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS_H_ | 7 #ifndef CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS_H_ |
| 8 #define CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS_H_ | 8 #define CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS_H_ |
| 9 | 9 |
| 10 #include "chrome/browser/extensions/menu_manager.h" | 10 #include "chrome/browser/extensions/menu_manager.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 parent_id->uid = *property.parent_id->as_integer; | 31 parent_id->uid = *property.parent_id->as_integer; |
| 32 else if (property.parent_id->as_string) | 32 else if (property.parent_id->as_string) |
| 33 parent_id->string_uid = *property.parent_id->as_string; | 33 parent_id->string_uid = *property.parent_id->as_string; |
| 34 else | 34 else |
| 35 NOTREACHED(); | 35 NOTREACHED(); |
| 36 return parent_id.Pass(); | 36 return parent_id.Pass(); |
| 37 } | 37 } |
| 38 | 38 |
| 39 } // namespace | 39 } // namespace |
| 40 | 40 |
| 41 extern const char kActionNotAllowedError[]; | |
| 42 extern const char kCannotFindItemError[]; | 41 extern const char kCannotFindItemError[]; |
| 43 extern const char kCheckedError[]; | 42 extern const char kCheckedError[]; |
| 44 extern const char kDuplicateIDError[]; | 43 extern const char kDuplicateIDError[]; |
| 45 extern const char kGeneratedIdKey[]; | 44 extern const char kGeneratedIdKey[]; |
| 46 extern const char kLauncherNotAllowedError[]; | 45 extern const char kLauncherNotAllowedError[]; |
| 47 extern const char kOnclickDisallowedError[]; | 46 extern const char kOnclickDisallowedError[]; |
| 48 extern const char kParentsMustBeNormalError[]; | 47 extern const char kParentsMustBeNormalError[]; |
| 49 extern const char kTitleNeededError[]; | 48 extern const char kTitleNeededError[]; |
| 50 | 49 |
| 51 std::string GetIDString(const MenuItem::Id& id); | 50 std::string GetIDString(const MenuItem::Id& id); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 case PropertyWithEnumT::CONTEXTS_TYPE_AUDIO: | 82 case PropertyWithEnumT::CONTEXTS_TYPE_AUDIO: |
| 84 contexts.Add(extensions::MenuItem::AUDIO); | 83 contexts.Add(extensions::MenuItem::AUDIO); |
| 85 break; | 84 break; |
| 86 case PropertyWithEnumT::CONTEXTS_TYPE_FRAME: | 85 case PropertyWithEnumT::CONTEXTS_TYPE_FRAME: |
| 87 contexts.Add(extensions::MenuItem::FRAME); | 86 contexts.Add(extensions::MenuItem::FRAME); |
| 88 break; | 87 break; |
| 89 case PropertyWithEnumT::CONTEXTS_TYPE_LAUNCHER: | 88 case PropertyWithEnumT::CONTEXTS_TYPE_LAUNCHER: |
| 90 // Not available for <webview>. | 89 // Not available for <webview>. |
| 91 contexts.Add(extensions::MenuItem::LAUNCHER); | 90 contexts.Add(extensions::MenuItem::LAUNCHER); |
| 92 break; | 91 break; |
| 93 case PropertyWithEnumT::CONTEXTS_TYPE_BROWSER_ACTION: | |
| 94 // Not available for <webview>. | |
| 95 contexts.Add(extensions::MenuItem::BROWSER_ACTION); | |
| 96 break; | |
| 97 case PropertyWithEnumT::CONTEXTS_TYPE_PAGE_ACTION: | |
| 98 // Not available for <webview>. | |
| 99 contexts.Add(extensions::MenuItem::PAGE_ACTION); | |
| 100 break; | |
| 101 case PropertyWithEnumT::CONTEXTS_TYPE_NONE: | 92 case PropertyWithEnumT::CONTEXTS_TYPE_NONE: |
| 102 NOTREACHED(); | 93 NOTREACHED(); |
| 103 } | 94 } |
| 104 } | 95 } |
| 105 return contexts; | 96 return contexts; |
| 106 } | 97 } |
| 107 | 98 |
| 108 template<typename PropertyWithEnumT> | 99 template<typename PropertyWithEnumT> |
| 109 MenuItem::Type GetType(const PropertyWithEnumT& property, | 100 MenuItem::Type GetType(const PropertyWithEnumT& property, |
| 110 MenuItem::Type default_type) { | 101 MenuItem::Type default_type) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 contexts.Add(MenuItem::PAGE); | 144 contexts.Add(MenuItem::PAGE); |
| 154 | 145 |
| 155 if (contexts.Contains(MenuItem::LAUNCHER)) { | 146 if (contexts.Contains(MenuItem::LAUNCHER)) { |
| 156 // Launcher item is not allowed for <webview>. | 147 // Launcher item is not allowed for <webview>. |
| 157 if (!extension->is_platform_app() || is_webview) { | 148 if (!extension->is_platform_app() || is_webview) { |
| 158 *error = kLauncherNotAllowedError; | 149 *error = kLauncherNotAllowedError; |
| 159 return false; | 150 return false; |
| 160 } | 151 } |
| 161 } | 152 } |
| 162 | 153 |
| 163 if (contexts.Contains(MenuItem::BROWSER_ACTION) || | |
| 164 contexts.Contains(MenuItem::PAGE_ACTION)) { | |
| 165 // Action items are not allowed for <webview>. | |
| 166 if (!extension->is_extension() || is_webview) { | |
| 167 *error = kActionNotAllowedError; | |
| 168 return false; | |
| 169 } | |
| 170 } | |
| 171 | |
| 172 // Title. | 154 // Title. |
| 173 std::string title; | 155 std::string title; |
| 174 if (create_properties.title.get()) | 156 if (create_properties.title.get()) |
| 175 title = *create_properties.title; | 157 title = *create_properties.title; |
| 176 | 158 |
| 177 MenuItem::Type type = GetType(create_properties, MenuItem::NORMAL); | 159 MenuItem::Type type = GetType(create_properties, MenuItem::NORMAL); |
| 178 if (title.empty() && type != MenuItem::SEPARATOR) { | 160 if (title.empty() && type != MenuItem::SEPARATOR) { |
| 179 *error = kTitleNeededError; | 161 *error = kTitleNeededError; |
| 180 return false; | 162 return false; |
| 181 } | 163 } |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 return false; | 302 return false; |
| 321 | 303 |
| 322 menu_manager->WriteToStorage(extension, item_id.extension_key); | 304 menu_manager->WriteToStorage(extension, item_id.extension_key); |
| 323 return true; | 305 return true; |
| 324 } | 306 } |
| 325 | 307 |
| 326 } // namespace context_menus_api_helpers | 308 } // namespace context_menus_api_helpers |
| 327 } // namespace extensions | 309 } // namespace extensions |
| 328 | 310 |
| 329 #endif // CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS
_H_ | 311 #endif // CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS
_H_ |
| OLD | NEW |