UNPKG

@types/webextension-polyfill

Version:
177 lines (153 loc) 7.24 kB
////////////////////////////////////////////////////// // BEWARE: DO NOT EDIT MANUALLY! Changes will be lost! ////////////////////////////////////////////////////// import { Events } from "./events"; /** * Namespace: browser.declarativeContent */ export namespace DeclarativeContent { /** * See <a href="https://developer.mozilla.org/en-US/docs/Web/API/ImageData">https://developer.mozilla. * org/en-US/docs/Web/API/ImageData</a>. */ interface ImageDataType extends ImageData { [s: string]: unknown; } /** * Matches the state of a web page based on various criteria. */ interface PageStateMatcher { /** * Matches if the conditions of the <code>UrlFilter</code> are fulfilled for the top-level URL of the page. * Optional. */ pageUrl?: Events.UrlFilter; /** * Matches if all of the CSS selectors in the array match displayed elements in a frame with the same origin as the page's * main frame. All selectors in this array must be <a href="http://www.w3.org/TR/selectors4/#compound"> * compound selectors</a> to speed up matching. Note: Listing hundreds of CSS selectors or listing CSS selectors that match * hundreds of times per page can slow down web sites. * Optional. */ css?: string[]; /** * Matches if the bookmarked state of the page is equal to the specified value. Requres the <a * href='/docs/extensions/develop/concepts/declare-permissions'>bookmarks permission</a>. * Optional. */ isBookmarked?: boolean; } /** * Please use ShowAction. */ type ShowPageAction = never; /** * A declarative event action that sets the extension's toolbar $(ref:action action) to an enabled state while the * corresponding conditions are met. This action can be used without <a * href="/docs/extensions/develop/concepts/declare-permissions#host-permissions">host permissions</a>. * If the extension has the <a href="/docs/extensions/develop/concepts/activeTab">activeTab</a> permission, * clicking the page action grants access to the active tab.<p>On pages where the conditions are not met the extension's * toolbar action will be grey-scale, and clicking it will open the context menu, instead of triggering the action.</p> */ interface ShowAction { [s: string]: unknown; } /** * Declarative event action that sets the n-<abbr title="device-independent pixel">dip</abbr> * square icon for the extension's $(ref:pageAction page action) or $(ref:browserAction browser action) * while the corresponding conditions are met. This action can be used without <a * href="/docs/extensions/develop/concepts/declare-permissions#host-permissions">host permissions</a>, * but the extension must have a page or browser action.<p>Exactly one of <code>imageData</code> or <code>path</code> * must be specified. Both are dictionaries mapping a number of pixels to an image representation. * The image representation in <code>imageData</code> is an <a href="https://developer.mozilla. * org/en-US/docs/Web/API/ImageData">ImageData</a> object; for example, from a <code>canvas</code> element, * while the image representation in <code>path</code> is the path to an image file relative to the extension's manifest. * If <code>scale</code> screen pixels fit into a device-independent pixel, the <code>scale * n</code> icon is used. * If that scale is missing, another image is resized to the required size.</p> */ interface SetIcon { /** * Either an <code>ImageData</code> object or a dictionary {size -> ImageData} representing an icon to be set. * If the icon is specified as a dictionary, the image used is chosen depending on the screen's pixel density. * If the number of image pixels that fit into one screen space unit equals <code>scale</code>, * then an image with size <code>scale * n</code> is selected, where <i>n</i> is the size of the icon in the UI. * At least one image must be specified. Note that <code>details.imageData = foo</code> is equivalent to <code>details. * imageData = {'16': foo}</code>. * Optional. */ imageData?: ImageDataType | SetIconImageDataC2Type; } /** * Declarative event action that injects a content script. <p><b>WARNING:</b> This action is still experimental and is not * supported on stable builds of Chrome.</p> */ interface RequestContentScript { /** * Names of CSS files to be injected as a part of the content script. * Optional. */ css?: string[]; /** * Names of JavaScript files to be injected as a part of the content script. * Optional. */ js?: string[]; /** * Whether the content script runs in all frames of the matching page, or in only the top frame. Default is <code> * false</code>. * Optional. */ allFrames?: boolean; /** * Whether to insert the content script on <code>about:blank</code> and <code>about:srcdoc</code>. Default is <code> * false</code>. * Optional. */ matchAboutBlank?: boolean; } interface Rule<TCondition, TAction> { /** * List of conditions that can trigger the actions. */ conditions: TCondition[]; /** * List of actions that are triggered if one of the conditions is fulfilled. */ actions: TAction[]; } /** * An object which allows the addition and removal of rules for declarative content. */ interface RuleEvent<TCondition, TAction> { /** * Registers rules to handle events. * * @param rules Rules to be registered. These do not replace previously registered rules. */ addRules(rules: Array<Rule<TCondition, TAction>>): void; /** * Fetches currently registered rules. * * @param rules Optional. Rule ids to fetch. * @param callback Optional. Called when rules have been fetched. */ getRules(rules?: string[], callback?: (rules: Array<Rule<TCondition, TAction>>) => void): void; /** * Unregisters currently registered rules. * * @param rules Optional. Rule ids to be unregistered. * @param callback Optional. Called when rules were unregistered. */ removeRules(rules?: string[], callback?: () => void): void; } interface SetIconImageDataC2Type { [s: string]: unknown; } interface Static { PageStateMatcher: { new(options?: PageStateMatcher): PageStateMatcher }; ShowAction: { new(options?: ShowAction): ShowAction }; SetIcon: { new(options?: SetIcon): SetIcon }; RequestContentScript: { new(options?: RequestContentScript): RequestContentScript }; onPageChanged: RuleEvent<PageStateMatcher, RequestContentScript | SetIcon | ShowPageAction | ShowAction>; } }