89 lines
4.1 KiB
Plaintext
Executable File
89 lines
4.1 KiB
Plaintext
Executable File
// Copyright 2022 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Use the <code>offscreen</code> API to create and manage offscreen documents.
|
|
namespace offscreen {
|
|
enum Reason {
|
|
// A reason used for testing purposes only.
|
|
TESTING,
|
|
// Specifies that the offscreen document is responsible for playing audio.
|
|
AUDIO_PLAYBACK,
|
|
// Specifies that the offscreen document needs to embed and script an
|
|
// iframe in order to modify the iframe's content.
|
|
IFRAME_SCRIPTING,
|
|
// Specifies that the offscreen document needs to embed an iframe and
|
|
// scrape its DOM to extract information.
|
|
DOM_SCRAPING,
|
|
// Specifies that the offscreen document needs to interact with Blob
|
|
// objects (including <code>URL.createObjectURL()</code>).
|
|
BLOBS,
|
|
// Specifies that the offscreen document needs to use the
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMParser">DOMParser API</a>.
|
|
DOM_PARSER,
|
|
// Specifies that the offscreen document needs to interact with
|
|
// media streams from user media (e.g. <code>getUserMedia()</code>).
|
|
USER_MEDIA,
|
|
// Specifies that the offscreen document needs to interact with
|
|
// media streams from display media (e.g. <code>getDisplayMedia()</code>).
|
|
DISPLAY_MEDIA,
|
|
// Specifies that the offscreen document needs to use
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API">WebRTC APIs</a>.
|
|
WEB_RTC,
|
|
// Specifies that the offscreen document needs to interact with the
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API">Clipboard API</a>.
|
|
CLIPBOARD,
|
|
// Specifies that the offscreen document needs access to
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage">localStorage</a>.
|
|
LOCAL_STORAGE,
|
|
// Specifies that the offscreen document needs to spawn workers.
|
|
WORKERS,
|
|
// Specifies that the offscreen document needs to use
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API">navigator.getBattery</a>.
|
|
BATTERY_STATUS,
|
|
// Specifies that the offscreen document needs to use
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia">window.matchMedia</a>.
|
|
MATCH_MEDIA,
|
|
// Specifies that the offscreen document needs to use
|
|
// <a href="https://developer.mozilla.org/en-US/docs/Web/API/Navigator/geolocation">navigator.geolocation</a>.
|
|
GEOLOCATION
|
|
};
|
|
|
|
dictionary CreateParameters {
|
|
// The reason(s) the extension is creating the offscreen document.
|
|
Reason[] reasons;
|
|
// The (relative) URL to load in the document.
|
|
DOMString url;
|
|
// A developer-provided string that explains, in more detail, the need for
|
|
// the background context. The user agent _may_ use this in display to the
|
|
// user.
|
|
DOMString justification;
|
|
};
|
|
|
|
callback VoidCallback = void();
|
|
callback BooleanCallback = void(boolean result);
|
|
|
|
interface Functions {
|
|
// Creates a new offscreen document for the extension.
|
|
// |parameters|: The parameters describing the offscreen document to create.
|
|
// |callback|: Invoked when the offscreen document is created and has
|
|
// completed its initial page load.
|
|
static void createDocument(
|
|
CreateParameters parameters,
|
|
VoidCallback callback);
|
|
|
|
// Closes the currently-open offscreen document for the extension.
|
|
// |callback|: Invoked when the offscreen document has been closed.
|
|
static void closeDocument(VoidCallback callback);
|
|
|
|
// Determines whether the extension has an active document.
|
|
// TODO(crbug.com/40849649): This probably isn't something we want to
|
|
// ship in its current form (hence the nodoc). Instead of this, we should
|
|
// integrate offscreen documents into a service worker-compatible getViews()
|
|
// alternative. But this is pretty useful in testing environments.
|
|
// |callback|: Invoked with the result of whether the extension has an
|
|
// active offscreen document.
|
|
[nodoc] static void hasDocument(BooleanCallback callback);
|
|
};
|
|
};
|