73 lines
3.1 KiB
Plaintext
Executable File
73 lines
3.1 KiB
Plaintext
Executable File
// Copyright 2023 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Internal namespace for representing content scripts.
|
|
namespace scriptsInternal {
|
|
// The source of the user script. This will also determine certain
|
|
// capabilities of the script (such as whether it can use globs, raw strings
|
|
// for code, etc).
|
|
enum Source {
|
|
DYNAMIC_CONTENT_SCRIPT,
|
|
DYNAMIC_USER_SCRIPT,
|
|
MANIFEST_CONTENT_SCRIPT
|
|
};
|
|
|
|
// The source of the script to inject.
|
|
dictionary ScriptSource {
|
|
// A string containing the JavaScript code to inject. Exactly one of
|
|
// <code>file</code> or <code>code</code> must be specified.
|
|
DOMString? code;
|
|
// The path of the JavaScript file to inject relative to the extension's
|
|
// root directory. Exactly one of <code>file</code> or <code>code</code>
|
|
// must be specified.
|
|
DOMString? file;
|
|
};
|
|
|
|
// Describes a serialized script, intended for storage and persistence across
|
|
// browser sessions.
|
|
// Note: Though it is called "UserScript", this is used for scripts through
|
|
// the scripting API (dynamic content scripts), content scripts in the
|
|
// manifest (static content scripts), and user scripts through the userScripts
|
|
// API. "UserScript" was chosen because it matches the correspodning
|
|
// extenisons::UserScript object (the runtime representation of this) and
|
|
// because "Script" is ambiguous (e.g. background script, general JS script,
|
|
// etc).
|
|
dictionary SerializedUserScript {
|
|
// Whether the script will inject into all frames, regardless if it is not
|
|
// the top-most frame in the tab.
|
|
boolean? allFrames;
|
|
// The list of CSS files to be injected into matching pages. Note that,
|
|
// today, we only expect these to contain files. It is represented as a
|
|
// ScriptSource for compatibility and consistency with `js`.
|
|
ScriptSource[]? css;
|
|
// Excludes pages that this user script would otherwise be injected into.
|
|
DOMString[]? excludeMatches;
|
|
// Specifies wildcard patterns for pages this user script will NOT be
|
|
// injected into.
|
|
DOMString[]? excludeGlobs;
|
|
// The ID of the script.
|
|
DOMString id;
|
|
// Specifies wildcard patterns for pages this user script will be injected
|
|
// into.
|
|
DOMString[]? includeGlobs;
|
|
// The list of sources of javascript to be injected into matching pages.
|
|
ScriptSource[]? js;
|
|
// Specifies which pages this user script will be injected into.
|
|
DOMString[] matches;
|
|
// Whether the script should inject into any frames where the URL belongs to
|
|
// a scheme that would never match a specified Match Pattern, including
|
|
// about:, data:, blob:, and filesystem: schemes.
|
|
boolean? matchOriginAsFallback;
|
|
// Specifies when JavaScript files are injected into the web page.
|
|
extensionTypes.RunAt? runAt;
|
|
// The "source" of the user script.
|
|
Source source;
|
|
// The JavaScript "world" to run the script in.
|
|
extensionTypes.ExecutionWorld world;
|
|
// The ID of the world into which to inject. If omitted, uses the default
|
|
// world.
|
|
DOMString? worldId;
|
|
};
|
|
};
|