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 |