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

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
 
(4 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><i>action</i></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>
<b>Description:</b>


Empties the DOM Worker's of all elements (this includes the body, which is then reinserted fresh).
Empties the Page Worker's of all elements (this includes the body, which is then reinserted fresh).


<b>Arguments:</b>
<b>Arguments:</b>
Line 75: 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>
<b>Description:</b>


Resets the DOM Worker to a blank HTML page with no elements and a clean global window object.
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

Navigation menu