mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			212 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
	
		
			6.3 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;
 | 
						|
 | 
						|
  /**
 | 
						|
   * 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 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.
 | 
						|
   */
 | 
						|
  "ISOLATED",
 | 
						|
  /**
 | 
						|
   * The execution environment of the web page.
 | 
						|
   */
 | 
						|
  "MAIN",
 | 
						|
};
 | 
						|
 | 
						|
[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;
 | 
						|
 | 
						|
  /**
 | 
						|
   * 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";
 | 
						|
 | 
						|
  sequence<DOMString> cssPaths = [];
 | 
						|
 | 
						|
  sequence<DOMString> jsPaths = [];
 | 
						|
};
 |