Labs/Jetpack/Reboot/JEP/108

From MozillaWiki
Jump to navigation Jump to search

JEP 108 - Background Page

  • Champion: Daniel Buchner - daniel@mozilla.com
  • Status: Under Review
  • Bug Ticket: 546740
  • Type: API


Proposal

Background Pages are like a more open and free sandbox for doing most anything in a traditional web page with a DOM context, but with a key difference: the page is augmented with escalated, waterfall chrome privileges. It is essentially along the same line of a Web Worker, just more open and accessible.

Use-Cases

1. Google Maps API Data If you wanted to utilize the data available via Google Maps API, you would need to instantiate the API's script within the context of a DOM. This is due to Google Maps reliance on the elements and script it pulls in to make data fetching possible. I might want to have a Jetpack that searches the page for addresses and business titles allowing the user to mouseover those items and view geolocalized details about such places in a tooltip.

2. Native Type Proxy & DOM-Reliant Script Execution Environment It is almost a certainty that developers will want to use their js library of choice to interact with web content. To enable this more easily, they could use this JEP's DOM as a Native Type proxy and as the primary location to instantiate their DOM dependent code.

Dependencies & Requirements

  • We must be able to give the code in the top window of this page chrome privileges that are strictly one-way/descending in nature.
  • Dynamically generated code sent to the Background Page should be injected and executed in the Background Page's window context.


Internal Methods

  • TBD

API Methods

Background Page Global: $dom

Background Page Method: run

Allows you to run code in the DOM Worker's window context

Arguments:

  1. options - (object)
    • bind: (mixed) a variable that will be bound as the 'this' keyword in the function
    • arguments: (array > mixed) an array of mixed variables passed as the function arguments
    • timeout: (number) a number that is used to set the timeout duration
    • interval: (number) a number that is used to set the interval duration
  2. action - (function) a function to be executed within the DOM of the Background Page - by default, the Background Page's window object is the bound 'this' within the function

Returns:

user defined return value - The function's return value as specified by the user

or

If timeout or interval options are used:

array - an array whose first item is the function's user defined return value, and second is a variable the user can save to clear the timing event

Notes:


Examples:

$dom.run({ interval: 10000 }, function(){
    return window.location;
});

Background Page Method: empty

Arguments:

This method takes no arguments

Returns:

The Background Page Global object: $dom

Examples:

$dom.empty();

Background Page Method: reset

Arguments:

No arguments are used in accordance with this method

Returns:

The Background Page Global object: $dom

Examples:

$dom.reset();