192 lines
7.4 KiB
Text
192 lines
7.4 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/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
interface nsIPrincipal;
|
|
|
|
[scriptable, builtinclass, uuid(e6862533-8844-4207-a6ab-04748a29d859)]
|
|
interface mozIExtensionServiceWorkerInfo : nsISupports
|
|
{
|
|
readonly attribute nsIPrincipal principal;
|
|
readonly attribute AString scriptURL;
|
|
readonly attribute AString clientInfoId;
|
|
readonly attribute unsigned long long descriptorId;
|
|
};
|
|
|
|
[scriptable, uuid(876d45db-5c1b-4c9b-9148-1c86b33d120b)]
|
|
interface mozIExtensionListenerCallOptions : nsISupports
|
|
{
|
|
cenum APIObjectType: 8 {
|
|
// Default: no api object is prepended to the event listener call arguments.
|
|
NONE,
|
|
|
|
// A runtime.Port instance is prepended to the event listener call arguments.
|
|
RUNTIME_PORT,
|
|
};
|
|
|
|
readonly attribute mozIExtensionListenerCallOptions_APIObjectType apiObjectType;
|
|
|
|
// An optional javascript object that should provide the attributes expected
|
|
// by related apiObjectType webidl dictionary type (e.g. ExtensionPortDescriptor
|
|
// if apiObjectType is RUNTIME_PORT).
|
|
readonly attribute jsval apiObjectDescriptor;
|
|
|
|
// An optional boolean to be set to true if the api object should be
|
|
// prepended to the rest of the call arguments (by default it is appended).
|
|
readonly attribute boolean apiObjectPrepended;
|
|
|
|
cenum CallbackType: 8 {
|
|
// Default: no callback argument is passed to the call to the event listener.
|
|
CALLBACK_NONE,
|
|
|
|
// The event listener will be called with a function as the last call parameter
|
|
// that behaves like the runtime.onMessage's sendResponse parameter:
|
|
//
|
|
// - if the event listener already returned false, sendResponse calls are ignored
|
|
// (if it has not been called already)
|
|
// - if the event listener already returned true, the first sendResponse call
|
|
// resolves the promise returned by the mozIExtensionCallback method call
|
|
// - if the event listener already returned a Promise, sendResponse calls
|
|
// are ignored
|
|
CALLBACK_SEND_RESPONSE,
|
|
};
|
|
|
|
attribute mozIExtensionListenerCallOptions_CallbackType callbackType;
|
|
};
|
|
|
|
[scriptable, builtinclass, uuid(e68e3c19-1b35-4112-8faa-5c5b84086a5b)]
|
|
interface mozIExtensionEventListener : nsISupports
|
|
{
|
|
[implicit_jscontext, can_run_script]
|
|
Promise callListener(
|
|
in Array<jsval> args,
|
|
[optional] in mozIExtensionListenerCallOptions listenerCallOptions);
|
|
};
|
|
|
|
[scriptable, builtinclass, uuid(0fee1c8f-e363-46a6-bd0c-d3c3338e2534)]
|
|
interface mozIExtensionAPIRequest : nsISupports
|
|
{
|
|
AUTF8String toString();
|
|
|
|
// Determine what the caller and receiver should expect, e.g. what should
|
|
// be provided to the API request handler and what to expect it to return.
|
|
cenum RequestType: 8 {
|
|
CALL_FUNCTION,
|
|
CALL_FUNCTION_NO_RETURN,
|
|
CALL_FUNCTION_ASYNC,
|
|
ADD_LISTENER,
|
|
REMOVE_LISTENER,
|
|
GET_PROPERTY,
|
|
};
|
|
|
|
// The type of the request.
|
|
readonly attribute AUTF8String requestType;
|
|
|
|
// WebExtension API namespace (e.g. tabs, runtime, webRequest, ...)
|
|
readonly attribute AUTF8String apiNamespace;
|
|
// method or event name
|
|
readonly attribute AUTF8String apiName;
|
|
|
|
// API object type (e.g. Port, Panel, ...) and its unique id, this
|
|
// properties are used by API requests originated by an API object
|
|
// instance (like a runtime Port returned by browser.runtime.connect).
|
|
readonly attribute AUTF8String apiObjectType;
|
|
readonly attribute AUTF8String apiObjectId;
|
|
|
|
// An array of API call arguments.
|
|
[implicit_jscontext] readonly attribute jsval args;
|
|
|
|
// A property to store on the request objects the arguments normalized
|
|
// based on the API jsonschema, so that they are being propagated along
|
|
// with the API request object.
|
|
// TODO: change this attribute to a readonly attribute if we moved
|
|
// the parameters validation and normalization to the C++ layer.
|
|
[implicit_jscontext] attribute jsval normalizedArgs;
|
|
|
|
// The caller SavedFrame (only set for calls originated off of the main thread
|
|
// from a service worker).
|
|
[implicit_jscontext] readonly attribute jsval callerSavedFrame;
|
|
|
|
// Set for requests coming from an extension service worker.
|
|
readonly attribute mozIExtensionServiceWorkerInfo serviceWorkerInfo;
|
|
|
|
// Set for `addListener`/`removeListener` API requests.
|
|
readonly attribute mozIExtensionEventListener eventListener;
|
|
};
|
|
|
|
[scriptable, uuid(59fd4097-d88e-40fd-8664-fedd8ab67ab6)]
|
|
interface mozIExtensionAPIRequestResult : nsISupports
|
|
{
|
|
cenum ResultType: 8 {
|
|
// The result is a value to be returned as a result for the API request.
|
|
// The value attribute can be set to:
|
|
// - a structured clonable result value (which may be the result of the
|
|
// API call itself, or be used by the API method webidl implementation
|
|
// to initialize a webidl object to return to the caller, e.g.
|
|
// ExtensionPort returned by a call to browser.runtime.connect())
|
|
// - an error object (which also include internally converted to and from
|
|
// ClonedErrorHolder to make it structured clonable).
|
|
// - a Promise (which can be resolved to a structured clonable value or
|
|
// an error object).
|
|
RETURN_VALUE,
|
|
|
|
// The result is an error object that should be thrown as an extension error
|
|
// to the caller on the thread that originated the request.
|
|
EXTENSION_ERROR,
|
|
};
|
|
|
|
readonly attribute mozIExtensionAPIRequestResult_ResultType type;
|
|
readonly attribute jsval value;
|
|
};
|
|
|
|
[scriptable, uuid(0c61bd33-0557-43a2-9497-96c449f39e33)]
|
|
interface mozIExtensionAPIRequestHandler : nsISupports
|
|
{
|
|
/**
|
|
* Handle an API request originated from the WebExtensions webidl API
|
|
* bindings.
|
|
*
|
|
* @param extension An instance of the WebExtensionPolicy webidl interface.
|
|
* @param apiRequest An instance of the mozIExtensionAPIRequest xpcom interface.
|
|
*
|
|
* @return mozIExtensionAPIRequestResult
|
|
* JS value returned by the API request handler, may contain a value
|
|
* (the result of the API call or a WebIDL dictionary that is used to
|
|
* initialize WebIDL-based API object, e.g. ExtensionPort) or
|
|
* an Error to be throw on the thread that originated the request.
|
|
*/
|
|
void handleAPIRequest(in nsISupports extension,
|
|
in mozIExtensionAPIRequest apiRequest,
|
|
[optional, retval] out mozIExtensionAPIRequestResult apiRequestResult);
|
|
|
|
/**
|
|
* A method called when an extension background service worker is initialized and
|
|
* ready to execute its main script.
|
|
*
|
|
* @param extension An instance of the WebExtensionPolicy webidl interface.
|
|
* @param serviceWorkerInfo
|
|
*/
|
|
void initExtensionWorker(in nsISupports extension,
|
|
in mozIExtensionServiceWorkerInfo serviceWorkerInfo);
|
|
|
|
/**
|
|
* A method called when an extension background service worker has loaded its
|
|
* main script.
|
|
*
|
|
* @param extension An instance of the WebExtensionPolicy webidl interface.
|
|
* @param serviceWorkerDescriptorId
|
|
*/
|
|
void onExtensionWorkerLoaded(in nsISupports extension,
|
|
in unsigned long long serviceWorkerDescriptorId);
|
|
|
|
/**
|
|
* A method called when an extension background service worker is destroyed.
|
|
*
|
|
* @param extension An instance of the WebExtensionPolicy webidl interface.
|
|
* @param serviceWorkerDescriptorId
|
|
*/
|
|
void onExtensionWorkerDestroyed(in nsISupports extension,
|
|
in unsigned long long serviceWorkerDescriptorId);
|
|
};
|