516 lines
16 KiB
TypeScript
Executable File
516 lines
16 KiB
TypeScript
Executable File
/**
|
|
* Namespace: browser.menus
|
|
* Generated from Mozilla sources. Do not manually edit!
|
|
*
|
|
* Use the browser.menus API to add items to the browser's menus. You can choose what types of objects your context menu
|
|
* additions apply to, such as images, hyperlinks, and pages.
|
|
* Permissions: "menus"
|
|
*
|
|
* Comments found in source JSON schema files:
|
|
* Copyright (c) 2012 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.
|
|
*/
|
|
import { Extension } from "./extension";
|
|
import { Tabs } from "./tabs";
|
|
import { Events } from "./events";
|
|
|
|
export namespace Menus {
|
|
/**
|
|
* The different contexts a menu can appear in. Specifying 'all' is equivalent to the combination of all other contexts
|
|
* except for 'tab' and 'tools_menu'.
|
|
*/
|
|
type ContextType =
|
|
| "all"
|
|
| "page"
|
|
| "frame"
|
|
| "selection"
|
|
| "link"
|
|
| "editable"
|
|
| "password"
|
|
| "image"
|
|
| "video"
|
|
| "audio"
|
|
| "launcher"
|
|
| "bookmark"
|
|
| "tab"
|
|
| "tools_menu"
|
|
| "browser_action"
|
|
| "page_action"
|
|
| "action";
|
|
|
|
/**
|
|
* The type of menu item.
|
|
*/
|
|
type ItemType = "normal" | "checkbox" | "radio" | "separator";
|
|
|
|
/**
|
|
* Information sent when a context menu item is clicked.
|
|
*/
|
|
interface OnClickData {
|
|
/**
|
|
* The ID of the menu item that was clicked.
|
|
*/
|
|
menuItemId: number | string;
|
|
|
|
/**
|
|
* The parent ID, if any, for the item clicked.
|
|
* Optional.
|
|
*/
|
|
parentMenuItemId?: number | string;
|
|
|
|
/**
|
|
* The type of view where the menu is clicked. May be unset if the menu is not associated with a view.
|
|
* Optional.
|
|
*/
|
|
viewType?: Extension.ViewType;
|
|
|
|
/**
|
|
* One of 'image', 'video', or 'audio' if the context menu was activated on one of these types of elements.
|
|
* Optional.
|
|
*/
|
|
mediaType?: string;
|
|
|
|
/**
|
|
* If the element is a link, the text of that link.
|
|
* Optional.
|
|
*/
|
|
linkText?: string;
|
|
|
|
/**
|
|
* If the element is a link, the URL it points to.
|
|
* Optional.
|
|
*/
|
|
linkUrl?: string;
|
|
|
|
/**
|
|
* Will be present for elements with a 'src' URL.
|
|
* Optional.
|
|
*/
|
|
srcUrl?: string;
|
|
|
|
/**
|
|
* The URL of the page where the menu item was clicked. This property is not set if the click occured in a context where
|
|
* there is no current page, such as in a launcher context menu.
|
|
* Optional.
|
|
*/
|
|
pageUrl?: string;
|
|
|
|
/**
|
|
* The id of the frame of the element where the context menu was clicked.
|
|
* Optional.
|
|
*/
|
|
frameId?: number;
|
|
|
|
/**
|
|
* The URL of the frame of the element where the context menu was clicked, if it was in a frame.
|
|
* Optional.
|
|
*/
|
|
frameUrl?: string;
|
|
|
|
/**
|
|
* The text for the context selection, if any.
|
|
* Optional.
|
|
*/
|
|
selectionText?: string;
|
|
|
|
/**
|
|
* A flag indicating whether the element is editable (text input, textarea, etc.).
|
|
*/
|
|
editable: boolean;
|
|
|
|
/**
|
|
* A flag indicating the state of a checkbox or radio item before it was clicked.
|
|
* Optional.
|
|
*/
|
|
wasChecked?: boolean;
|
|
|
|
/**
|
|
* A flag indicating the state of a checkbox or radio item after it is clicked.
|
|
* Optional.
|
|
*/
|
|
checked?: boolean;
|
|
|
|
/**
|
|
* The id of the bookmark where the context menu was clicked, if it was on a bookmark.
|
|
*/
|
|
bookmarkId: string;
|
|
|
|
/**
|
|
* An array of keyboard modifiers that were held while the menu item was clicked.
|
|
*/
|
|
modifiers: OnClickDataModifiersItemEnum[];
|
|
|
|
/**
|
|
* An integer value of button by which menu item was clicked.
|
|
* Optional.
|
|
*/
|
|
button?: number;
|
|
|
|
/**
|
|
* An identifier of the clicked element, if any. Use menus.getTargetElement in the page to find the corresponding element.
|
|
* Optional.
|
|
*/
|
|
targetElementId?: number;
|
|
}
|
|
|
|
interface CreateCreatePropertiesType {
|
|
/**
|
|
* The type of menu item. Defaults to 'normal' if not specified.
|
|
* Optional.
|
|
*/
|
|
type?: ItemType;
|
|
|
|
/**
|
|
* The unique ID to assign to this item. Mandatory for event pages. Cannot be the same as another ID for this extension.
|
|
* Optional.
|
|
*/
|
|
id?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
icons?: Record<string, string>;
|
|
|
|
/**
|
|
* The text to be displayed in the item; this is <em>required</em> unless <code>type</code> is 'separator'.
|
|
* When the context is 'selection', you can use <code>%s</code> within the string to show the selected text. For example,
|
|
* if this parameter's value is "Translate '%s' to Pig Latin" and the user selects the word "cool",
|
|
* the context menu item for the selection is "Translate 'cool' to Pig Latin".
|
|
* Optional.
|
|
*/
|
|
title?: string;
|
|
|
|
/**
|
|
* The initial state of a checkbox or radio item: true for selected and false for unselected.
|
|
* Only one radio item can be selected at a time in a given group of radio items.
|
|
* Optional.
|
|
*/
|
|
checked?: boolean;
|
|
|
|
/**
|
|
* List of contexts this menu item will appear in. Defaults to ['page'] if not specified.
|
|
* Optional.
|
|
*/
|
|
contexts?: ContextType[];
|
|
|
|
/**
|
|
* List of view types where the menu item will be shown. Defaults to any view, including those without a viewType.
|
|
* Optional.
|
|
*/
|
|
viewTypes?: Extension.ViewType[];
|
|
|
|
/**
|
|
* Whether the item is visible in the menu.
|
|
* Optional.
|
|
*/
|
|
visible?: boolean;
|
|
|
|
/**
|
|
* A function that will be called back when the menu item is clicked. Event pages cannot use this; instead,
|
|
* they should register a listener for $(ref:contextMenus.onClicked).
|
|
*
|
|
* @param info Information about the item clicked and the context where the click happened.
|
|
* @param tab The details of the tab where the click took place. Note: this parameter only present for extensions.
|
|
*/
|
|
onclick?(info: OnClickData, tab: Tabs.Tab): void;
|
|
|
|
/**
|
|
* The ID of a parent menu item; this makes the item a child of a previously added item.
|
|
* Optional.
|
|
*/
|
|
parentId?: number | string;
|
|
|
|
/**
|
|
* Lets you restrict the item to apply only to documents whose URL matches one of the given patterns.
|
|
* (This applies to frames as well.) For details on the format of a pattern, see $(topic:match_patterns)[Match Patterns].
|
|
* Optional.
|
|
*/
|
|
documentUrlPatterns?: string[];
|
|
|
|
/**
|
|
* Similar to documentUrlPatterns, but lets you filter based on the src attribute of img/audio/video tags and the href of
|
|
* anchor tags.
|
|
* Optional.
|
|
*/
|
|
targetUrlPatterns?: string[];
|
|
|
|
/**
|
|
* Whether this context menu item is enabled or disabled. Defaults to true.
|
|
* Optional.
|
|
*/
|
|
enabled?: boolean;
|
|
|
|
/**
|
|
* Specifies a command to issue for the context click.
|
|
* Optional.
|
|
*/
|
|
command?:
|
|
| string
|
|
| "_execute_browser_action"
|
|
| "_execute_page_action"
|
|
| "_execute_sidebar_action"
|
|
| "_execute_action"
|
|
| "_execute_page_action"
|
|
| "_execute_sidebar_action";
|
|
}
|
|
|
|
/**
|
|
* The properties to update. Accepts the same values as the create function.
|
|
*/
|
|
interface UpdateUpdatePropertiesType {
|
|
/**
|
|
* Optional.
|
|
*/
|
|
type?: ItemType;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
icons?: Record<string, string>;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
title?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
checked?: boolean;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
contexts?: ContextType[];
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
viewTypes?: Extension.ViewType[];
|
|
|
|
/**
|
|
* Whether the item is visible in the menu.
|
|
* Optional.
|
|
*/
|
|
visible?: boolean;
|
|
|
|
/**
|
|
* @param info
|
|
* @param tab The details of the tab where the click took place. Note: this parameter only present for extensions.
|
|
*/
|
|
onclick?(info: OnClickData, tab: Tabs.Tab): void;
|
|
|
|
/**
|
|
* Note: You cannot change an item to be a child of one of its own descendants.
|
|
* Optional.
|
|
*/
|
|
parentId?: number | string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
documentUrlPatterns?: string[];
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
targetUrlPatterns?: string[];
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
enabled?: boolean;
|
|
}
|
|
|
|
interface OverrideContextContextOptionsType {
|
|
/**
|
|
* Whether to also include default menu items in the menu.
|
|
* Optional.
|
|
*/
|
|
showDefaults?: boolean;
|
|
|
|
/**
|
|
* ContextType to override, to allow menu items from other extensions in the menu. Currently only 'bookmark' and 'tab' are
|
|
* supported. showDefaults cannot be used with this option.
|
|
* Optional.
|
|
*/
|
|
context?: OverrideContextContextOptionsTypeContextEnum;
|
|
|
|
/**
|
|
* Required when context is 'bookmark'. Requires 'bookmark' permission.
|
|
* Optional.
|
|
*/
|
|
bookmarkId?: string;
|
|
|
|
/**
|
|
* Required when context is 'tab'. Requires 'tabs' permission.
|
|
* Optional.
|
|
*/
|
|
tabId?: number;
|
|
}
|
|
|
|
/**
|
|
* Information about the context of the menu action and the created menu items. For more information about each property,
|
|
* see OnClickData. The following properties are only set if the extension has host permissions for the given context:
|
|
* linkUrl, linkText, srcUrl, pageUrl, frameUrl, selectionText.
|
|
*/
|
|
interface OnShownInfoType {
|
|
/**
|
|
* A list of IDs of the menu items that were shown.
|
|
*/
|
|
menuIds: Array<number | string>;
|
|
|
|
/**
|
|
* A list of all contexts that apply to the menu.
|
|
*/
|
|
contexts: ContextType[];
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
viewType?: Extension.ViewType;
|
|
|
|
editable: boolean;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
mediaType?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
linkUrl?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
linkText?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
srcUrl?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
pageUrl?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
frameUrl?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
selectionText?: string;
|
|
|
|
/**
|
|
* Optional.
|
|
*/
|
|
targetElementId?: number;
|
|
}
|
|
|
|
type OnClickDataModifiersItemEnum = "Shift" | "Alt" | "Command" | "Ctrl" | "MacCtrl";
|
|
|
|
/**
|
|
* ContextType to override, to allow menu items from other extensions in the menu. Currently only 'bookmark' and 'tab' are
|
|
* supported. showDefaults cannot be used with this option.
|
|
*/
|
|
type OverrideContextContextOptionsTypeContextEnum = "bookmark" | "tab";
|
|
|
|
interface Static {
|
|
/**
|
|
* Creates a new context menu item. Note that if an error occurs during creation, you may not find out until the creation
|
|
* callback fires (the details will be in $(ref:runtime.lastError)).
|
|
*
|
|
* @param createProperties
|
|
* @param callback Optional. Called when the item has been created in the browser. If there were any problems creating the
|
|
* item, details will be available in $(ref:runtime.lastError).
|
|
* @returns The ID of the newly created item.
|
|
*/
|
|
create(createProperties: CreateCreatePropertiesType, callback?: () => void): number | string;
|
|
|
|
/**
|
|
* Updates a previously created context menu item.
|
|
*
|
|
* @param id The ID of the item to update.
|
|
* @param updateProperties The properties to update. Accepts the same values as the create function.
|
|
* @returns Called when the context menu has been updated.
|
|
*/
|
|
update(id: number | string, updateProperties: UpdateUpdatePropertiesType): Promise<void>;
|
|
|
|
/**
|
|
* Removes a context menu item.
|
|
*
|
|
* @param menuItemId The ID of the context menu item to remove.
|
|
* @returns Called when the context menu has been removed.
|
|
*/
|
|
remove(menuItemId: number | string): Promise<void>;
|
|
|
|
/**
|
|
* Removes all context menu items added by this extension.
|
|
*
|
|
* @returns Called when removal is complete.
|
|
*/
|
|
removeAll(): Promise<void>;
|
|
|
|
/**
|
|
* Show the matching menu items from this extension instead of the default menu. This should be called during a
|
|
* 'contextmenu' DOM event handler, and only applies to the menu that opens after this event.
|
|
*
|
|
* @param contextOptions
|
|
*/
|
|
overrideContext(contextOptions: OverrideContextContextOptionsType): void;
|
|
|
|
/**
|
|
* Updates the extension items in the shown menu, including changes that have been made since the menu was shown.
|
|
* Has no effect if the menu is hidden. Rebuilding a shown menu is an expensive operation,
|
|
* only invoke this method when necessary.
|
|
*/
|
|
refresh(): Promise<void>;
|
|
|
|
/**
|
|
* Retrieve the element that was associated with a recent contextmenu event.
|
|
*
|
|
* @param targetElementId The identifier of the clicked element, available as info.targetElementId in the menus.onShown,
|
|
* onClicked or onclick event.
|
|
*/
|
|
getTargetElement(targetElementId: number): Element;
|
|
|
|
/**
|
|
* Fired when a context menu item is clicked.
|
|
*
|
|
* @param info Information about the item clicked and the context where the click happened.
|
|
* @param tab Optional. The details of the tab where the click took place. If the click did not take place in a tab,
|
|
* this parameter will be missing.
|
|
*/
|
|
onClicked: Events.Event<(info: OnClickData, tab: Tabs.Tab | undefined) => void>;
|
|
|
|
/**
|
|
* Fired when a menu is shown. The extension can add, modify or remove menu items and call menus.refresh()
|
|
* to update the menu.
|
|
*
|
|
* @param info Information about the context of the menu action and the created menu items.
|
|
* For more information about each property, see OnClickData. The following properties are only set if the extension has
|
|
* host permissions for the given context: linkUrl, linkText, srcUrl, pageUrl, frameUrl, selectionText.
|
|
* @param tab The details of the tab where the menu was opened.
|
|
*/
|
|
onShown: Events.Event<(info: OnShownInfoType, tab: Tabs.Tab) => void>;
|
|
|
|
/**
|
|
* Fired when a menu is hidden. This event is only fired if onShown has fired before.
|
|
*/
|
|
onHidden: Events.Event<() => void>;
|
|
|
|
/**
|
|
* The maximum number of top level extension items that can be added to an extension action context menu.
|
|
* Any items beyond this limit will be ignored.
|
|
*/
|
|
ACTION_MENU_TOP_LEVEL_LIMIT: 6;
|
|
}
|
|
}
|