aboutsummaryrefslogtreecommitdiff
path: root/tools/addon-sdk-1.3/packages/api-utils/docs/e10s.md
diff options
context:
space:
mode:
Diffstat (limited to 'tools/addon-sdk-1.3/packages/api-utils/docs/e10s.md')
-rw-r--r--tools/addon-sdk-1.3/packages/api-utils/docs/e10s.md218
1 files changed, 0 insertions, 218 deletions
diff --git a/tools/addon-sdk-1.3/packages/api-utils/docs/e10s.md b/tools/addon-sdk-1.3/packages/api-utils/docs/e10s.md
deleted file mode 100644
index 3e2f047..0000000
--- a/tools/addon-sdk-1.3/packages/api-utils/docs/e10s.md
+++ /dev/null
@@ -1,218 +0,0 @@
-<span class="aside">
-For a high-level overview of out-of-process add-ons, see the
-[Out-of-Process Add-ons][] internals guide.
-</span>
-
-The `e10s` module allows add-ons to execute in a separate process from Firefox
-itself.
-
-## Adapters ##
-
-As explained in the [Out-of-Process Add-ons][] internals guide, an *e10s
-adapter* is the primary mechanism through which chrome functionality is exposed
-to add-on processes. It is a single piece of code evaluated *twice*&mdash;once
-in each process&mdash;and typically has the following form:
-
- if (this.chrome) {
- /* We're being evaluated in the add-on process. Export the
- * module's API, proxying all calls to the chrome process
- * as necessary. */
- } else exports.register = function register(addon) {
- /* We're being evaluated in the chrome process.
- * Set up chrome process listeners to communicate with
- * the given add-on process. */
- };
-
-In the above code, the `chrome` global is only visible to this code when it is
-executed in the add-on process. It is an instance of `ChromeProcess`.
-
-The `register()` function, on the other hand, is only defined and called in the
-chrome process, and the `addon` argument passed to it is an instance of
-`AddonProcess`.
-
-`ChromeProcess` and `AddonProcess` instances come in pairs, and represent
-opposite sides of an inter-process communication mechanism.
-
- [Out-of-Process Add-ons]: dev-guide/module-development/e10s.html
-
-## Events ##
-
-Chrome and add-on processes can asynchronously send arbitrary events to each
-other. The <code>[EventEmitter][]</code> interface has been overloaded to make
-handling these events simple and intuitive. For instance, here's a trivial e10s
-adapter that uses events:
-
- if (this.chrome) {
- exports.sendFoo = function(x) {
- chrome.send('foo', x);
- };
- } else exports.register = function register(addon) {
- addon.on('foo', function(type, x) {
- console.log("foo called with argument", x);
- });
- };
-
- [EventEmitter]: packages/api-utils/docs/events.html
-
-## Remote Function Calls ##
-
-The add-on process can synchronously call a function on the chrome process, but
-not vice versa. Here's a trivial example of an e10s adapter using this
-mechanism:
-
- if (this.chrome) {
- exports.bar = function(x) {
- return chrome.call('bar', x);
- };
- } else exports.register = function register(addon) {
- addon.registerCall('bar', function(name, x) {
- return x * 3;
- });
- };
-
-## Arguments ##
-
-When sending events or calling functions in another process, the chrome and
-add-on processes are allowed to send JSON-serializable arguments. Additionally,
-they can send a special type of object called a *handle*. See the
-[MDN Handle Documentation][] for more information on these.
-
-Here's a simple example of a handle being used to remember a callback function
-on the add-on side:
-
- if (this.chrome) {
- exports.baz = function(callback) {
- var handle = chrome.createHandle();
- handle.callback = callback;
- chrome.send('baz', handle);
- };
- chrome.on('bazCallback', function(name, handle) {
- try { handle.callback(); } except (e) { console.exception(e); }
- handle.invalidate();
- });
- } else exports.register = function register(addon) {
- addon.on('baz', function(name, handle) {
- require('timer').setTimeout(function() {
- addon.send('bazCallback', handle);
- }, 1000);
- });
- };
-
- [MDN Handle Documentation]: https://developer.mozilla.org/en/Jetpack_Processes#Handles
-
-<api name="ChromeProcess">
-@class
- In an add-on process, this represents the parent chrome process. This class is
- a singleton and has no constructor. It is automatically injected into the
- global scope of all `-e10s-adapter` modules as the `chrome` object.
-
-<api name="on">
-@method
- Registers an event listener with the chrome process.
-@param type {string}
- The type of event to listen for.
-@param listener {function}
- The listener function that handles the event. Its first argument is always
- `type`, and additional arguments vary depending on the event's originating
- `addon.send()` call in the chrome process.
-</api>
-
-<api name="removeListener">
-@method
- Removes an event listener from the chrome process.
-@param type {string}
- The type of event for which `listener` was registered.
-@param listener {function}
- The listener function that was registered.
-</api>
-
-<api name="send">
-@method
- Sends an event asynchronously to the chrome process. Any additional arguments
- after `type` are passed as arguments to event listeners in the chrome process.
-@param type {string}
- The type of event to send.
-</api>
-
-<api name="call">
-@method
- Synchronously calls a remote function in the chrome process and returns its
- result. Any additional arguments after `name` are passed as arguments to the
- function in the chrome process.
-@param name {string}
- The name of the function to call.
-</api>
-
-<api name="createHandle">
-@method
- Creates a [handle][] object, which can be passed to the chrome process via
- `send()` or `call()`.
-
- [handle]: https://developer.mozilla.org/en/Jetpack_Processes#Handles
-</api>
-
-</api>
-
-<api name="AddonProcess">
-@class
- In the chrome process, this represents a child add-on process.
-
-<api name="AddonProcess">
-@constructor
- Creates a new add-on process.
-
-@param options {object}
- An optional object with the following keys, all of which are optional:
-
- @prop [console] {object}
- An object whose interface corresponds to that of the `console` global. All
- logging messages to the `console` object of the addon will be redirected to
- this object. If this object isn't provided, then the global `console` object
- of the chrome process will be used.
-</api>
-
-<api name="destroy">
-@method
- Terminates the add-on process.
-</api>
-
-<api name="on">
-@method
- Registers an event listener with the add-on process.
-@param type {string}
- The type of event to listen for.
-@param listener {function}
- The listener function that handles the event. Its first argument is always
- `type`, and additional arguments vary depending on the event's originating
- `chrome.send()` call in the add-on process.
-</api>
-
-<api name="registerCall">
-@method
- Registers a synchronous call handler with the add-on process.
-@param name {string}
- The name of the function.
-@param handler {function}
- The call handler. Its first argument is always `name`, and additional
- arguments vary depending on the call's originating `chrome.call()` invocation
- in the add-on process. The handler's return value is also passed back to the
- original caller in the add-on process.
-</api>
-
-<api name="send">
-@method
- Sends an event asynchronously to the add-on process. Any additional arguments
- after `type` are passed as arguments to event listeners in the add-on process.
-@param type {string}
- The type of event to send.
-</api>
-
-<api name="createHandle">
-@method
- Creates a [handle][] object, which can be passed to the add-on process via
- `send()`.
-
- [handle]: https://developer.mozilla.org/en/Jetpack_Processes#Handles
-</api>
-
-</api>