diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/html/nsIMenuBuilder.idl | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/html/nsIMenuBuilder.idl')
-rw-r--r-- | dom/html/nsIMenuBuilder.idl | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/dom/html/nsIMenuBuilder.idl b/dom/html/nsIMenuBuilder.idl new file mode 100644 index 0000000000..94200524de --- /dev/null +++ b/dom/html/nsIMenuBuilder.idl @@ -0,0 +1,76 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +webidl Element; + +/** + * An interface used to construct native toolbar or context menus from <menu> + */ + +[scriptable, uuid(93F4A48F-D043-4F45-97FD-9771EA1AF976)] +interface nsIMenuBuilder : nsISupports +{ + + /** + * Create the top level menu or a submenu. The implementation should create + * a new context for this menu, so all subsequent methods will add new items + * to this newly created menu. + */ + void openContainer(in AString aLabel); + + /** + * Add a new menu item. All menu item details can be obtained from + * the element. This method is not called for hidden elements or elements + * with no or empty label. The icon should be loaded only if aCanLoadIcon + * is true. + */ + void addItemFor(in Element aElement, + in boolean aCanLoadIcon); + + /** + * Create a new separator. + */ + void addSeparator(); + + /** + * Remove last added separator. + * Sometimes it's needed to remove last added separator, otherwise it's not + * possible to implement the postprocessing in one pass. + * See http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#building-menus-and-toolbars + */ + void undoAddSeparator(); + + /** + * Set the context to the parent menu. + */ + void closeContainer(); + + /** + * Returns a JSON string representing the menu hierarchy. For a context menu, + * it will be of the form: + * { + * type: "menu", + * children: [ + * { + * type: "menuitem", + * label: "label", + * icon: "image.png" + * }, + * { + * type: "separator", + * }, + * ]; + */ + AString toJSONString(); + + /** + * Invoke the action of the menuitem with assigned id aGeneratedItemId. + * + * @param aGeneratedItemId the menuitem id + */ + void click(in AString aGeneratedItemId); +}; |