diff options
Diffstat (limited to 'chrome/browser/extensions/extension_context_menu_api.h')
-rw-r--r-- | chrome/browser/extensions/extension_context_menu_api.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_context_menu_api.h b/chrome/browser/extensions/extension_context_menu_api.h new file mode 100644 index 0000000..3f73251 --- /dev/null +++ b/chrome/browser/extensions/extension_context_menu_api.h @@ -0,0 +1,84 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_API_H__ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_API_H__ + +#include "chrome/browser/extensions/extension_function.h" +#include "chrome/browser/extensions/extension_menu_manager.h" +#include "chrome/common/extensions/extension_extent.h" + +class ExtensionMenuItem; + +class ExtensionContextMenuFunction : public SyncExtensionFunction { + public: + ~ExtensionContextMenuFunction() {} + + protected: + // Helper function to read and parse a list of menu item contexts. + bool ParseContexts(const DictionaryValue& properties, + const wchar_t* key, + ExtensionMenuItem::ContextList* result); + + // Looks in properties for the "type" key, and reads the value in |result|. On + // error, returns false and puts an error message into error_. If the key is + // not present, |result| is set to |default_value| and the return value is + // true. + bool ParseType(const DictionaryValue& properties, + const ExtensionMenuItem::Type& default_value, + ExtensionMenuItem::Type* result); + + // Helper to read and parse the "checked" property. + bool ParseChecked(ExtensionMenuItem::Type type, + const DictionaryValue& properties, + bool default_value, + bool* checked); + + // Helper to read in a set of url patterns from a property with the given key + // name. + bool ParseURLPatterns(const DictionaryValue& properties, + const wchar_t* key, + ExtensionExtent* result); + + // Reads in any document and targetUrl patterns from |properties| and sets + // them on |item|. + bool SetURLPatterns(const DictionaryValue& properties, + ExtensionMenuItem* item); + + // If the parentId key was specified in properties, this will try looking up + // an ExtensionMenuItem with that id and set it into |result|. Returns false + // on error, with an explanation written into error_. Note that if the + // parentId key is not in properties, this will return true and leave |result| + // unset. Also, it is considered an error if the item found has a type other + // than NORMAL. + bool GetParent(const DictionaryValue& properties, + const ExtensionMenuManager& manager, + ExtensionMenuItem** result); +}; + +class CreateContextMenuFunction : public ExtensionContextMenuFunction { + ~CreateContextMenuFunction() {} + virtual bool RunImpl(); + DECLARE_EXTENSION_FUNCTION_NAME("contextMenus.create") +}; + +class UpdateContextMenuFunction : public ExtensionContextMenuFunction { + ~UpdateContextMenuFunction() {} + virtual bool RunImpl(); + DECLARE_EXTENSION_FUNCTION_NAME("contextMenus.update") +}; + +class RemoveContextMenuFunction : public ExtensionContextMenuFunction { + ~RemoveContextMenuFunction() {} + virtual bool RunImpl(); + DECLARE_EXTENSION_FUNCTION_NAME("contextMenus.remove") +}; + +class RemoveAllContextMenusFunction : public ExtensionContextMenuFunction { + ~RemoveAllContextMenusFunction() {} + virtual bool RunImpl(); + DECLARE_EXTENSION_FUNCTION_NAME("contextMenus.removeAll") +}; + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_API_H__ |