/** * Namespace: browser.declarativeContent * Generated from Mozilla sources. Do not manually edit! * * Use the chrome.declarativeContent API to take actions depending on the content of a page, * without requiring permission to read the page's content. * * 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 { Events } from "./events"; export namespace DeclarativeContent { /** * See https://developer.mozilla. * org/en-US/docs/Web/API/ImageData. */ 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 UrlFilter 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 * compound selectors 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 * bookmarks permission. * Optional. */ isBookmarked?: boolean; } /** * Please use ShowAction. */ type ShowPageAction = never; /** * Declarative event action that shows the extension's toolbar action ($(ref:pageAction page action) * or $(ref:browserAction browser action)) while the corresponding conditions are met. * This action can be used without host permissions. * If the extension has the activeTab permission, clicking the page action grants access to * the active tab. */ interface ShowAction { [s: string]: unknown; } /** * Declarative event action that sets the n-dip * 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 host permissions, but the extension must have a page or browser action.

* Exactly one of imageData or path must be specified. Both are dictionaries mapping a number of * pixels to an image representation. The image representation in imageData is an ImageData object; for example, from a canvas element, * while the image representation in path is the path to an image file relative to the extension's manifest. * If scale screen pixels fit into a device-independent pixel, the scale * n icon is used. * If that scale is missing, another image is resized to the required size.

*/ interface SetIcon { /** * Either an ImageData 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 scale, * then an image with size scale * n is selected, where n is the size of the icon in the UI. * At least one image must be specified. Note that details.imageData = foo is equivalent to details. * imageData = {'16': foo}. * Optional. */ imageData?: ImageDataType | SetIconImageDataC2Type; } /** * Declarative event action that injects a content script.

WARNING: This action is still experimental and is not * supported on stable builds of Chrome.

*/ 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 * false. * Optional. */ allFrames?: boolean; /** * Whether to insert the content script on about:blank and about:srcdoc. Default is * false. * Optional. */ matchAboutBlank?: boolean; } interface Rule { /** * 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 { /** * Registers rules to handle events. * * @param rules Rules to be registered. These do not replace previously registered rules. */ addRules(rules: Array>): 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>) => 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; } }