Labs/Jetpack/Reboot/JEP/108: Difference between revisions

no edit summary
No edit summary
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
== JEP 108 - Background Page ==
== JEP 108 - Page Worker ==


* Champion: Daniel Buchner - daniel@mozilla.com
* Champion: Daniel Buchner - daniel@mozilla.com
* Status: Under Review
* Status: Under Review
* Bug Ticket: [https://bugzilla.mozilla.org/show_bug.cgi?id=546740 546740]
* Bug: [https://bugzilla.mozilla.org/show_bug.cgi?id=546740 546740]
* Type: API
* Type: API




=== Proposal ===
=== 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.
Page Worker is like a more open 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 ===
=== Use-Cases ===
Line 19: Line 19:
=== Dependencies & Requirements ===
=== 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.
* 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.
* Dynamically generated code sent to the Page Worker should be injected and executed in the Page Worker's window context.




Line 27: Line 27:
== API Methods ==
== API Methods ==


==== Background Page Global: <i>$dom</i> ====
==== Page Worker Global: <i>$page</i> ====


==== Background Page Method: <i>run</i> ====
==== Page Worker Method: <i>run</i> ====
<b>Description:</b>
<b>Description:</b>


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


<b>Arguments:</b>
<b>Arguments:</b>
Line 41: Line 41:
#* timeout: (<i>number</i>) a number that is used to set the timeout duration
#* timeout: (<i>number</i>) a number that is used to set the timeout duration
#* interval: (<i>number</i>)  a number that is used to set the interval duration
#* interval: (<i>number</i>)  a number that is used to set the interval duration
#<b>action</b> - (<i>function</i>) 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
#<b><i>action</i></b> - (<i>function</i>) a function to be executed within the DOM of the Page Worker - by default, the Page Worker's window object is the bound 'this' within the function


<b>Returns:</b>
<b>Returns:</b>
Line 59: Line 59:


<pre class="brush:js;">
<pre class="brush:js;">
$dom.run({ interval: 10000 }, function(){
$page.run({ interval: 10000 }, function(){
     return window.location;
     return window.location;
});
});
</pre>
</pre>


==== Background Page Method: <i>empty</i> ====
==== Page Worker Method: <i>empty</i> ====
<b>Description:</b>
 
Empties the Page Worker's of all elements (this includes the body, which is then reinserted fresh).


<b>Arguments:</b>
<b>Arguments:</b>
Line 72: Line 75:
<b>Returns:</b>
<b>Returns:</b>


The Background Page Global object: <i>$dom</i>
The Page Worker Global object: <i>$page</i>


<b>Examples:</b>
<b>Examples:</b>


<pre class="brush:js;">
<pre class="brush:js;">
$dom.empty();
$page.empty();
</pre>
</pre>


==== Background Page Method: <i>reset</i> ====
==== Page Worker Method: <i>reset</i> ====
<b>Description:</b>
 
Resets the Page Worker to a blank HTML page with no elements and a clean global window object.


<b>Arguments:</b>
<b>Arguments:</b>


No arguments are used in accordance with this method
<i>This method takes no arguments</i>


<b>Returns:</b>
<b>Returns:</b>


The Background Page Global object: <i>$dom</i>
The Page Worker Global object: <i>$page</i>


<b>Examples:</b>
<b>Examples:</b>


<pre class="brush:js;">
<pre class="brush:js;">
$dom.reset();
$page.reset();
</pre>
</pre>
Confirmed users
9,511

edits