2018-09-13 23:04:55 +03:00
|
|
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
2017-08-28 05:51:36 +03:00
|
|
|
/* 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/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This is a Mozilla-specific WebExtension API, which is not available to web
|
|
|
|
* content. It allows monitoring and filtering of HTTP response stream data.
|
|
|
|
*
|
|
|
|
* This API should currently be considered experimental, and is not defined by
|
|
|
|
* any standard.
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum StreamFilterStatus {
|
|
|
|
/**
|
|
|
|
* The StreamFilter is not fully initialized. No methods may be called until
|
|
|
|
* a "start" event has been received.
|
|
|
|
*/
|
|
|
|
"uninitialized",
|
|
|
|
/**
|
|
|
|
* The underlying channel is currently transferring data, which will be
|
|
|
|
* dispatched via "data" events.
|
|
|
|
*/
|
|
|
|
"transferringdata",
|
|
|
|
/**
|
|
|
|
* The underlying channel has finished transferring data. Data may still be
|
|
|
|
* written via write() calls at this point.
|
|
|
|
*/
|
|
|
|
"finishedtransferringdata",
|
|
|
|
/**
|
|
|
|
* Data transfer is currently suspended. It may be resumed by a call to
|
|
|
|
* resume(). Data may still be written via write() calls in this state.
|
|
|
|
*/
|
|
|
|
"suspended",
|
|
|
|
/**
|
|
|
|
* The channel has been closed by a call to close(). No further data wlil be
|
|
|
|
* delivered via "data" events, and no further data may be written via
|
|
|
|
* write() calls.
|
|
|
|
*/
|
|
|
|
"closed",
|
|
|
|
/**
|
|
|
|
* The channel has been disconnected by a call to disconnect(). All further
|
|
|
|
* data will be delivered directly, without passing through the filter. No
|
|
|
|
* further events will be dispatched, and no further data may be written by
|
|
|
|
* write() calls.
|
|
|
|
*/
|
|
|
|
"disconnected",
|
|
|
|
/**
|
|
|
|
* An error has occurred and the channel is disconnected. The `error`
|
|
|
|
* property contains the details of the error.
|
|
|
|
*/
|
|
|
|
"failed",
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* An interface which allows an extension to intercept, and optionally modify,
|
|
|
|
* response data from an HTTP request.
|
|
|
|
*/
|
2018-10-21 03:02:53 +03:00
|
|
|
[Exposed=Window,
|
2017-08-28 05:51:36 +03:00
|
|
|
Func="mozilla::extensions::StreamFilter::IsAllowedInContext"]
|
|
|
|
interface StreamFilter : EventTarget {
|
|
|
|
/**
|
|
|
|
* Creates a stream filter for the given add-on and the given extension ID.
|
|
|
|
*/
|
|
|
|
[ChromeOnly]
|
|
|
|
static StreamFilter create(unsigned long long requestId, DOMString addonId);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Suspends processing of the request. After this is called, no further data
|
|
|
|
* will be delivered until the request is resumed.
|
|
|
|
*/
|
|
|
|
[Throws]
|
|
|
|
void suspend();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Resumes delivery of data for a suspended request.
|
|
|
|
*/
|
|
|
|
[Throws]
|
|
|
|
void resume();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Closes the request. After this is called, no more data may be written to
|
|
|
|
* the stream, and no further data will be delivered.
|
|
|
|
*
|
|
|
|
* This *must* be called after the consumer is finished writing data, unless
|
|
|
|
* disconnect() has already been called.
|
|
|
|
*/
|
|
|
|
[Throws]
|
|
|
|
void close();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Disconnects the stream filter from the request. After this is called, no
|
|
|
|
* further data will be delivered to the filter, and any unprocessed data
|
|
|
|
* will be written directly to the output stream.
|
|
|
|
*/
|
|
|
|
[Throws]
|
|
|
|
void disconnect();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Writes a chunk of data to the output stream. This may not be called
|
|
|
|
* before the "start" event has been received.
|
|
|
|
*/
|
|
|
|
[Throws]
|
|
|
|
void write((ArrayBuffer or Uint8Array) data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the current status of the stream.
|
|
|
|
*/
|
|
|
|
[Pure]
|
|
|
|
readonly attribute StreamFilterStatus status;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* After an "error" event has been dispatched, this contains a message
|
|
|
|
* describing the error.
|
|
|
|
*/
|
|
|
|
[Pure]
|
|
|
|
readonly attribute DOMString error;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dispatched with a StreamFilterDataEvent whenever incoming data is
|
|
|
|
* available on the stream. This data will not be delivered to the output
|
|
|
|
* stream unless it is explicitly written via a write() call.
|
|
|
|
*/
|
|
|
|
attribute EventHandler ondata;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dispatched when the stream is opened, and is about to begin delivering
|
|
|
|
* data.
|
|
|
|
*/
|
|
|
|
attribute EventHandler onstart;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dispatched when the stream has closed, and has no more data to deliver.
|
|
|
|
* The output stream remains open and writable until close() is called.
|
|
|
|
*/
|
|
|
|
attribute EventHandler onstop;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dispatched when an error has occurred. No further data may be read or
|
|
|
|
* written after this point.
|
|
|
|
*/
|
|
|
|
attribute EventHandler onerror;
|
|
|
|
};
|