/**
* 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.
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