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 773bd6249014a07855af73cdd2f518564e0e2e9c..bb6480a80805a9373b65477e27e741ab0e8cc1ac 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 |
@@ -42,6 +42,7 @@ extern const char kCannotFindItemError[]; |
extern const char kCheckedError[]; |
extern const char kDuplicateIDError[]; |
extern const char kGeneratedIdKey[]; |
+extern const char kActionNotAllowedError[]; |
extern const char kLauncherNotAllowedError[]; |
extern const char kOnclickDisallowedError[]; |
extern const char kParentsMustBeNormalError[]; |
@@ -89,6 +90,14 @@ MenuItem::ContextList GetContexts(const PropertyWithEnumT& property) { |
// 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(); |
} |
@@ -151,6 +160,15 @@ bool CreateMenuItem(const PropertyWithEnumT& create_properties, |
} |
} |
+ if (contexts.Contains(MenuItem::BROWSER_ACTION) || |
+ contexts.Contains(MenuItem::PAGE_ACTION)) { |
+ // Action items are not allowed for <webview>. |
+ if (!extension->is_extension() || is_webview) { |
+ *error = kActionNotAllowedError; |
+ return false; |
+ } |
+ } |
+ |
// Title. |
std::string title; |
if (create_properties.title.get()) |