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 24 matching lines...) Expand all Loading... |
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 kCannotFindItemError[]; | 41 extern const char kCannotFindItemError[]; |
42 extern const char kCheckedError[]; | 42 extern const char kCheckedError[]; |
43 extern const char kDuplicateIDError[]; | 43 extern const char kDuplicateIDError[]; |
44 extern const char kGeneratedIdKey[]; | 44 extern const char kGeneratedIdKey[]; |
| 45 extern const char kActionNotAllowedError[]; |
45 extern const char kLauncherNotAllowedError[]; | 46 extern const char kLauncherNotAllowedError[]; |
46 extern const char kOnclickDisallowedError[]; | 47 extern const char kOnclickDisallowedError[]; |
47 extern const char kParentsMustBeNormalError[]; | 48 extern const char kParentsMustBeNormalError[]; |
48 extern const char kTitleNeededError[]; | 49 extern const char kTitleNeededError[]; |
49 | 50 |
50 std::string GetIDString(const MenuItem::Id& id); | 51 std::string GetIDString(const MenuItem::Id& id); |
51 | 52 |
52 MenuItem* GetParent(MenuItem::Id parent_id, | 53 MenuItem* GetParent(MenuItem::Id parent_id, |
53 const MenuManager* menu_manager, | 54 const MenuManager* menu_manager, |
54 std::string* error); | 55 std::string* error); |
(...skipping 27 matching lines...) Expand all Loading... |
82 case PropertyWithEnumT::CONTEXTS_TYPE_AUDIO: | 83 case PropertyWithEnumT::CONTEXTS_TYPE_AUDIO: |
83 contexts.Add(extensions::MenuItem::AUDIO); | 84 contexts.Add(extensions::MenuItem::AUDIO); |
84 break; | 85 break; |
85 case PropertyWithEnumT::CONTEXTS_TYPE_FRAME: | 86 case PropertyWithEnumT::CONTEXTS_TYPE_FRAME: |
86 contexts.Add(extensions::MenuItem::FRAME); | 87 contexts.Add(extensions::MenuItem::FRAME); |
87 break; | 88 break; |
88 case PropertyWithEnumT::CONTEXTS_TYPE_LAUNCHER: | 89 case PropertyWithEnumT::CONTEXTS_TYPE_LAUNCHER: |
89 // Not available for <webview>. | 90 // Not available for <webview>. |
90 contexts.Add(extensions::MenuItem::LAUNCHER); | 91 contexts.Add(extensions::MenuItem::LAUNCHER); |
91 break; | 92 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; |
92 case PropertyWithEnumT::CONTEXTS_TYPE_NONE: | 101 case PropertyWithEnumT::CONTEXTS_TYPE_NONE: |
93 NOTREACHED(); | 102 NOTREACHED(); |
94 } | 103 } |
95 } | 104 } |
96 return contexts; | 105 return contexts; |
97 } | 106 } |
98 | 107 |
99 template<typename PropertyWithEnumT> | 108 template<typename PropertyWithEnumT> |
100 MenuItem::Type GetType(const PropertyWithEnumT& property, | 109 MenuItem::Type GetType(const PropertyWithEnumT& property, |
101 MenuItem::Type default_type) { | 110 MenuItem::Type default_type) { |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 contexts.Add(MenuItem::PAGE); | 153 contexts.Add(MenuItem::PAGE); |
145 | 154 |
146 if (contexts.Contains(MenuItem::LAUNCHER)) { | 155 if (contexts.Contains(MenuItem::LAUNCHER)) { |
147 // Launcher item is not allowed for <webview>. | 156 // Launcher item is not allowed for <webview>. |
148 if (!extension->is_platform_app() || is_webview) { | 157 if (!extension->is_platform_app() || is_webview) { |
149 *error = kLauncherNotAllowedError; | 158 *error = kLauncherNotAllowedError; |
150 return false; | 159 return false; |
151 } | 160 } |
152 } | 161 } |
153 | 162 |
| 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 |
154 // Title. | 172 // Title. |
155 std::string title; | 173 std::string title; |
156 if (create_properties.title.get()) | 174 if (create_properties.title.get()) |
157 title = *create_properties.title; | 175 title = *create_properties.title; |
158 | 176 |
159 MenuItem::Type type = GetType(create_properties, MenuItem::NORMAL); | 177 MenuItem::Type type = GetType(create_properties, MenuItem::NORMAL); |
160 if (title.empty() && type != MenuItem::SEPARATOR) { | 178 if (title.empty() && type != MenuItem::SEPARATOR) { |
161 *error = kTitleNeededError; | 179 *error = kTitleNeededError; |
162 return false; | 180 return false; |
163 } | 181 } |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 return false; | 320 return false; |
303 | 321 |
304 menu_manager->WriteToStorage(extension, item_id.extension_key); | 322 menu_manager->WriteToStorage(extension, item_id.extension_key); |
305 return true; | 323 return true; |
306 } | 324 } |
307 | 325 |
308 } // namespace context_menus_api_helpers | 326 } // namespace context_menus_api_helpers |
309 } // namespace extensions | 327 } // namespace extensions |
310 | 328 |
311 #endif // CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS
_H_ | 329 #endif // CHROME_BROWSER_EXTENSIONS_API_CONTEXT_MENUS_CONTEXT_MENUS_API_HELPERS
_H_ |
OLD | NEW |