Restricted JS Execution Contexts: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 22: Line 22:


<table>
<table>
<tr><td>'''API'''<td>'''Work per callback'''<td>'''Retain state between callbacks?'''<td>'''Isolated worlds per page'''<td>'''Send/receive messages'''<td>'''Other Web platform APIs needed'''
<tr><td>'''API'''<td>'''Work per callback'''<td>'''Retain state between callbacks?'''<td>'''Isolated worlds per page'''<td>'''Impose time limit'''<td>'''Send/receive messages'''<td>'''Other Web platform APIs needed'''<td>'''Need to prevent access to other APIs'''
<tr><td>Audio workers<td>Very little<td>Yes<td>dozens<td>Yes<td>Minimal
<tr><td>Audio workers<td>Very little<td>Yes<td>dozens<td>Yes<td>Yes<td>Minimal<td>No
<tr><td>Vertex shaders<td>Very little<td>No<td>flexible<td>No<td>Minimal
<tr><td>Vertex shaders<td>Very little<td>No<td>flexible<td>Maybe<td>No<td>Minimal<td>Maybe
<tr><td>CSS style extensions<td>Very little<td>No<td>lots<td>No<td>Minimal
<tr><td>UI workers<td>Little<td>Yes<td>Few<td>Yes<td>Yes<td>Canvas, maybe others<td>No
<tr><td>CSS layout extensions<td>Lots (e.g. constraint solving)<td>Yes (caching)<td>potentially lots<td>No<td>Minimal
<tr><td>CSS style extensions<td>Very little<td>No<td>lots<td>No<td>No<td>Minimal<td>Yes
<tr><td>CSS painting extensions<td>Potentially a lot<td>probably not<td>dozens<td>No<td>Canvas
<tr><td>CSS layout extensions<td>Lots (e.g. constraint solving)<td>Yes (caching)<td>potentially lots<td>No<td>No<td>Minimal<td>Yes
<tr><td>CSS painting extensions<td>Potentially a lot<td>probably not<td>dozens<td>No<td>No<td>Canvas<td>Yes
</table>
</table>

Revision as of 05:11, 8 February 2015

Various Web platform features have a need for script to run in "restricted contexts", where some features accessible to regular main-thread page JS are not available.

Audio Workers

Web Audio wants an "audio worker" --- processing audio samples on a real-time audio thread. Hopefully small snippets of code doing small amounts of work on each callback (e.g. processing 128 audio samples).

Vertex Shaders

For CSS Filter-ish use-cases, we want to be able to generate meshes by applying a JS function to vertices of a grid, mapping 2D points to 2D points.

CSS Style Callbacks

To extend the CSS style system, we want to provide callbacks that run during style computation to parse values and generate computed style values.

CSS Layout Callbacks

To extend CSS layout, we want to provide callbacks that run during layout, to layout the contents of container elements.

CSS Painting Callbacks

To extend CSS painting, we want to provide callbacks that run during painting, to paint the contents of elements.

APIWork per callbackRetain state between callbacks?Isolated worlds per pageImpose time limitSend/receive messagesOther Web platform APIs neededNeed to prevent access to other APIs
Audio workersVery littleYesdozensYesYesMinimalNo
Vertex shadersVery littleNoflexibleMaybeNoMinimalMaybe
UI workersLittleYesFewYesYesCanvas, maybe othersNo
CSS style extensionsVery littleNolotsNoNoMinimalYes
CSS layout extensionsLots (e.g. constraint solving)Yes (caching)potentially lotsNoNoMinimalYes
CSS painting extensionsPotentially a lotprobably notdozensNoNoCanvasYes