/** * Namespace: browser.extensionTypes * Generated from Mozilla sources. Do not manually edit! * * The browser.extensionTypes API contains type declarations for WebExtensions. * * Comments found in source JSON schema files: * Copyright 2014 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 { Manifest } from "./manifest"; export namespace ExtensionTypes { /** * The format of an image. */ type ImageFormat = "jpeg" | "png"; /** * Details about the format, quality, area and scale of the capture. */ interface ImageDetails { /** * The format of the resulting image. Default is "jpeg". * Optional. */ format?: ImageFormat; /** * When format is "jpeg", controls the quality of the resulting image. This value is ignored for PNG images. * As quality is decreased, the resulting image will have more visual artifacts, and the number of bytes needed to store * it will decrease. * Optional. */ quality?: number; /** * The area of the document to capture, in CSS pixels, relative to the page. If omitted, capture the visible viewport. * Optional. */ rect?: ImageDetailsRectType; /** * The scale of the resulting image. Defaults to devicePixelRatio. * Optional. */ scale?: number; /** * If true, temporarily resets the scroll position of the document to 0. Only takes effect if rect is also specified. * Optional. */ resetScrollPosition?: boolean; } /** * The soonest that the JavaScript or CSS will be injected into the tab. */ type RunAt = "document_start" | "document_end" | "document_idle"; /** * The origin of the CSS to inject, this affects the cascading order (priority) of the stylesheet. */ type CSSOrigin = "user" | "author"; /** * Details of the script or CSS to inject. Either the code or the file property must be set, * but both may not be set at the same time. */ interface InjectDetails { /** * JavaScript or CSS code to inject.

Warning:
Be careful using the code parameter. * Incorrect use of it may open your extension to * cross site scripting attacks. * Optional. */ code?: string; /** * JavaScript or CSS file to inject. * Optional. */ file?: string; /** * If allFrames is true, implies that the JavaScript or CSS should be injected into all frames of current page. * By default, it's false and is only injected into the top frame. * Optional. */ allFrames?: boolean; /** * If matchAboutBlank is true, then the code is also injected in about:blank and about:srcdoc frames if your extension has * access to its parent document. Code cannot be inserted in top-level about:-frames. By default it is false. * Optional. */ matchAboutBlank?: boolean; /** * The ID of the frame to inject the script into. This may not be used in combination with allFrames. * Optional. */ frameId?: number; /** * The soonest that the JavaScript or CSS will be injected into the tab. Defaults to "document_idle". * Optional. */ runAt?: RunAt; /** * The css origin of the stylesheet to inject. Defaults to "author". * Optional. */ cssOrigin?: CSSOrigin; } type DateType = string | number | Date; type ExtensionFileOrCode = ExtensionFileOrCodeC1Type | ExtensionFileOrCodeC2Type; /** * A plain JSON value */ interface PlainJSONValue { [s: string]: unknown; } /** * The area of the document to capture, in CSS pixels, relative to the page. If omitted, capture the visible viewport. */ interface ImageDetailsRectType { x: number; y: number; width: number; height: number; } interface ExtensionFileOrCodeC1Type { file: Manifest.ExtensionURL; } interface ExtensionFileOrCodeC2Type { code: string; } interface Static { [s: string]: unknown; } }