240 lines
7.1 KiB
Text
240 lines
7.1 KiB
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
interface LoadInfo;
|
|
interface URI;
|
|
interface WindowProxy;
|
|
|
|
typedef (MatchPatternSet or sequence<DOMString>) MatchPatternSetOrStringSequence;
|
|
typedef (MatchGlob or UTF8String) MatchGlobOrString;
|
|
|
|
[ChromeOnly, Exposed=Window]
|
|
interface MozDocumentMatcher {
|
|
[Throws]
|
|
constructor(MozDocumentMatcherInit options);
|
|
|
|
/**
|
|
* Returns true if the script's match and exclude patterns match the given
|
|
* URI, without reference to attributes such as `allFrames`.
|
|
*/
|
|
boolean matchesURI(URI uri);
|
|
|
|
/**
|
|
* Returns true if the given window matches. This should be used to
|
|
* determine whether to run a script in a window at load time. Use
|
|
* ignorePermissions to match without origin permissions in MV3.
|
|
*/
|
|
boolean matchesWindowGlobal(WindowGlobalChild windowGlobal,
|
|
optional boolean ignorePermissions = false);
|
|
|
|
/**
|
|
* If true, match all frames. If false, match only top-level frames.
|
|
*/
|
|
[Constant]
|
|
readonly attribute boolean allFrames;
|
|
|
|
/**
|
|
* If we can't check extension has permissions to access the URI upfront,
|
|
* set the flag to perform the origin check at runtime, upon matching.
|
|
* This is always true in MV3, where host permissions are optional.
|
|
*/
|
|
[Constant]
|
|
readonly attribute boolean checkPermissions;
|
|
|
|
/**
|
|
* If true, this causes us to match about:blank and about:srcdoc documents by
|
|
* the URL of the inherit principal, usually the initial URL of the document
|
|
* that triggered the navigation.
|
|
* If false, we only match frames with an explicit matching URL.
|
|
*/
|
|
[Constant]
|
|
readonly attribute boolean matchAboutBlank;
|
|
|
|
/**
|
|
* If true, this causes us to match documents with opaque URLs (such as
|
|
* about:blank, about:srcdoc, data:, blob:, and sandboxed versions thereof)
|
|
* by the document principal's origin URI. In case of null principals, their
|
|
* precursor is used for matching.
|
|
* When true, matchAboutBlank is implicitly true.
|
|
* If false, we only match frames with an explicit matching URL.
|
|
*/
|
|
[Constant]
|
|
readonly attribute boolean matchOriginAsFallback;
|
|
|
|
/**
|
|
* The outer window ID of the frame in which to run the script, or 0 if it
|
|
* should run in the top-level frame. Should only be used for
|
|
* dynamically-injected scripts.
|
|
*/
|
|
[Constant]
|
|
readonly attribute unsigned long long? frameID;
|
|
|
|
/**
|
|
* The set of match patterns for URIs of pages in which this script should
|
|
* run. This attribute is mandatory, and is a prerequisite for all other
|
|
* match patterns.
|
|
*/
|
|
[Constant]
|
|
readonly attribute MatchPatternSet matches;
|
|
|
|
/**
|
|
* A set of match patterns for URLs in which this script should not run,
|
|
* even if they match other include patterns or globs.
|
|
*/
|
|
[Constant]
|
|
readonly attribute MatchPatternSet? excludeMatches;
|
|
|
|
/**
|
|
* Whether the matcher is used by the MV3 userScripts API.
|
|
* If true, URLs are matched when they match "matches" OR "includeGlobs",
|
|
* instead of the usual AND.
|
|
*/
|
|
[Constant]
|
|
readonly attribute boolean isUserScript;
|
|
|
|
/**
|
|
* The originAttributesPattern for which this script should be enabled for.
|
|
*/
|
|
[Constant, Throws]
|
|
readonly attribute any originAttributesPatterns;
|
|
|
|
/**
|
|
* The policy object for the extension that this matcher belongs to.
|
|
*/
|
|
[Constant]
|
|
readonly attribute WebExtensionPolicy? extension;
|
|
};
|
|
|
|
dictionary MozDocumentMatcherInit {
|
|
boolean allFrames = false;
|
|
|
|
boolean checkPermissions = false;
|
|
|
|
sequence<OriginAttributesPatternDictionary>? originAttributesPatterns = null;
|
|
|
|
boolean matchAboutBlank = false;
|
|
|
|
boolean matchOriginAsFallback = false;
|
|
|
|
unsigned long long? frameID = null;
|
|
|
|
required MatchPatternSetOrStringSequence matches;
|
|
|
|
MatchPatternSetOrStringSequence? excludeMatches = null;
|
|
|
|
sequence<MatchGlobOrString>? includeGlobs = null;
|
|
|
|
sequence<MatchGlobOrString>? excludeGlobs = null;
|
|
|
|
boolean isUserScript = false;
|
|
|
|
boolean hasActiveTabPermission = false;
|
|
};
|
|
|
|
/**
|
|
* Describes the earliest point in the load cycle at which a script should
|
|
* run.
|
|
*/
|
|
enum ContentScriptRunAt {
|
|
/**
|
|
* The point in the load cycle just after the document element has been
|
|
* inserted, before any page scripts have been allowed to run.
|
|
*/
|
|
"document_start",
|
|
/**
|
|
* The point after which the page DOM has fully loaded, but before all page
|
|
* resources have necessarily been loaded. Corresponds approximately to the
|
|
* DOMContentLoaded event.
|
|
*/
|
|
"document_end",
|
|
/**
|
|
* The first point after the page and all of its resources has fully loaded
|
|
* when the event loop is idle, and can run scripts without delaying a paint
|
|
* event.
|
|
*/
|
|
"document_idle",
|
|
};
|
|
|
|
/**
|
|
* Describes the world where a script should run.
|
|
*/
|
|
enum ContentScriptExecutionWorld {
|
|
/**
|
|
* The default execution environment of content scripts.
|
|
* The name refers to "isolated world", which is a concept from Chromium and
|
|
* WebKit, used to enforce isolation of the JavaScript execution environments
|
|
* of content scripts and web pages.
|
|
*
|
|
* Not supported when isUserScript=true.
|
|
*/
|
|
"ISOLATED",
|
|
/**
|
|
* The execution environment of the web page.
|
|
*/
|
|
"MAIN",
|
|
/**
|
|
* The execution environment of a sandbox running scripts registered through
|
|
* the MV3 userScripts API.
|
|
*
|
|
* Only supported when isUserScript=true.
|
|
*/
|
|
"USER_SCRIPT",
|
|
};
|
|
|
|
[ChromeOnly, Exposed=Window]
|
|
interface WebExtensionContentScript : MozDocumentMatcher {
|
|
[Throws]
|
|
constructor(WebExtensionPolicy extension,
|
|
WebExtensionContentScriptInit options);
|
|
|
|
/**
|
|
* The earliest point in the load cycle at which this script should run. For
|
|
* static content scripts, in extensions which were present at browser
|
|
* startup, the browser makes every effort to make sure that the script runs
|
|
* no later than this point in the load cycle. For dynamic content scripts,
|
|
* and scripts from extensions installed during this session, the scripts
|
|
* may run at a later point.
|
|
*/
|
|
[Constant]
|
|
readonly attribute ContentScriptRunAt runAt;
|
|
|
|
/**
|
|
* The world where the script should run.
|
|
*/
|
|
[Constant]
|
|
readonly attribute ContentScriptExecutionWorld world;
|
|
|
|
/**
|
|
* When world is "USER_SCRIPT", worldId can be used to specify a specific
|
|
* extension-specific sandbox to execute in, instead of the default one.
|
|
*/
|
|
[Constant]
|
|
readonly attribute DOMString? worldId;
|
|
|
|
/**
|
|
* A set of paths, relative to the extension root, of CSS sheets to inject
|
|
* into matching pages.
|
|
*/
|
|
[Cached, Constant, Frozen]
|
|
readonly attribute sequence<DOMString> cssPaths;
|
|
|
|
/**
|
|
* A set of paths, relative to the extension root, of JavaScript scripts to
|
|
* execute in matching pages.
|
|
*/
|
|
[Cached, Constant, Frozen]
|
|
readonly attribute sequence<DOMString> jsPaths;
|
|
};
|
|
|
|
dictionary WebExtensionContentScriptInit : MozDocumentMatcherInit {
|
|
ContentScriptRunAt runAt = "document_idle";
|
|
|
|
ContentScriptExecutionWorld world = "ISOLATED";
|
|
|
|
DOMString? worldId = null;
|
|
|
|
sequence<DOMString> cssPaths = [];
|
|
|
|
sequence<DOMString> jsPaths = [];
|
|
};
|