[html5] r8425 - [giow] (1) Update the spec to say what's exposed to workers: take 1 Fixing https [...]

whatwg at whatwg.org whatwg at whatwg.org
Mon Jan 27 15:08:50 PST 2014


Author: ianh
Date: 2014-01-27 15:08:49 -0800 (Mon, 27 Jan 2014)
New Revision: 8425

Modified:
   complete.html
   index
   source
Log:
[giow] (1) Update the spec to say what's exposed to workers: take 1
Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=22646
Affected topics: Canvas, DOM APIs, HTML, HTML Syntax and Parsing, Offline Web Applications, Workers

Modified: complete.html
===================================================================
--- complete.html	2014-01-27 20:20:38 UTC (rev 8424)
+++ complete.html	2014-01-27 23:08:49 UTC (rev 8425)
@@ -8009,7 +8009,7 @@
   algorithms, one for getting the list of name-value pairs, one for setting names to certain values,
   and one for deleting names.</p>
 
-  <pre class=idl>[OverrideBuiltins]
+  <pre class=idl>[OverrideBuiltins,Exposed=Window,Worker]
 interface <dfn id=domstringmap>DOMStringMap</dfn> {
   <a href=#dom-domstringmap-nameditem title=dom-DOMStringMap-namedItem>getter</a> DOMString (DOMString name);
   <a href=#dom-domstringmap-setitem title=dom-DOMStringMap-setItem>setter</a> <a href=#dom-domstringmap-additem title=dom-DOMStringMap-addItem>creator</a> void (DOMString name, DOMString value);
@@ -53946,7 +53946,8 @@
   <p>Since DOM nodes cannot be accessed across worker boundaries, a proxy object is needed to enable
   workers to render to <code><a href=#the-canvas-element>canvas</a></code> elements in <code><a href=#document>Document</a></code>s.</p>
 
-  <pre class=idl>interface <dfn id=canvasproxy>CanvasProxy</dfn> {
+  <pre class=idl>[Exposed=Window,Worker]
+interface <dfn id=canvasproxy>CanvasProxy</dfn> {
   void <a href=#dom-canvasproxy-setcontext title=dom-CanvasProxy-setContext>setContext</a>(<a href=#renderingcontext>RenderingContext</a> context);
 };
 // <a href=#canvasproxy>CanvasProxy</a> implements <a href=#transferable>Transferable</a>;</pre>
@@ -54070,7 +54071,7 @@
 
 enum <dfn id=canvasfillrule>CanvasFillRule</dfn> { "<a href=#dom-context-2d-fillrule-nonzero title=dom-context-2d-fillRule-nonzero>nonzero</a>", "<a href=#dom-context-2d-fillrule-evenodd title=dom-context-2d-fillRule-evenodd>evenodd</a>" };
 
-[<a href=#dom-context-2d title=dom-context-2d>Constructor</a>(optional unsigned long width, unsigned long height)]
+[<a href=#dom-context-2d title=dom-context-2d>Constructor</a>(optional unsigned long width, unsigned long height), Exposed=Window,Worker]
 interface <dfn id=canvasrenderingcontext2d>CanvasRenderingContext2D</dfn> {
 
   // back-reference to the canvas
@@ -64899,7 +64900,7 @@
 <!--TOPIC:DOM APIs-->
   <h3 id=the-window-object><span class=secno>6.2 </span>The <code><a href=#window>Window</a></code> object</h3>
 
-  <pre class=idl>[Global]
+  <pre class=idl>[PrimaryGlobal]
 /*sealed*/ interface <dfn id=window>Window</dfn> : <a href=#eventtarget>EventTarget</a> {
   // the current browsing context
   [Unforgeable] readonly attribute <a href=#windowproxy>WindowProxy</a> <a href=#dom-window title=dom-window>window</a>;
@@ -68377,7 +68378,7 @@
 
   <h5 id=the-popstateevent-interface><span class=secno>6.6.10.1 </span>The <code><a href=#popstateevent>PopStateEvent</a></code> interface</h5>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#popstateeventinit>PopStateEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#popstateeventinit>PopStateEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=popstateevent>PopStateEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute any <a href=#dom-popstateevent-state title=dom-PopStateEvent-state>state</a>;
 };
@@ -68406,7 +68407,7 @@
 
   <h5 id=the-hashchangeevent-interface><span class=secno>6.6.10.2 </span>The <code><a href=#hashchangeevent>HashChangeEvent</a></code> interface</h5>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#hashchangeeventinit>HashChangeEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#hashchangeeventinit>HashChangeEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=hashchangeevent>HashChangeEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute DOMString <a href=#dom-hashchangeevent-oldurl title=dom-HashChangeEvent-oldURL>oldURL</a>;
   readonly attribute DOMString <a href=#dom-hashchangeevent-newurl title=dom-HashChangeEvent-newURL>newURL</a>;
@@ -68453,7 +68454,7 @@
 
   <h5 id=the-pagetransitionevent-interface><span class=secno>6.6.10.3 </span>The <code><a href=#pagetransitionevent>PageTransitionEvent</a></code> interface</h5>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#pagetransitioneventinit>PageTransitionEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#pagetransitioneventinit>PageTransitionEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=pagetransitionevent>PageTransitionEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute boolean <a href=#dom-pagetransitionevent-persisted title=dom-PageTransitionEvent-persisted>persisted</a>;
 };
@@ -70455,7 +70456,8 @@
 
   <h4 id=application-cache-api><span class=secno>6.7.9 </span>Application cache API</h4>
 
-  <pre class=idl>interface <dfn id=applicationcache>ApplicationCache</dfn> : <a href=#eventtarget>EventTarget</a> {
+  <pre class=idl>[Exposed=Window,SharedWorker]
+interface <dfn id=applicationcache>ApplicationCache</dfn> : <a href=#eventtarget>EventTarget</a> {
 
   // <a href=#concept-appcache-status title=concept-appcache-status>update status</a>
   const unsigned short <a href=#dom-appcache-uncached title=dom-appcache-UNCACHED>UNCACHED</a> = 0;
@@ -70670,7 +70672,7 @@
 
   <h4 id=browser-state><span class=secno>6.7.10 </span>Browser state</h4>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=navigatoronline>NavigatorOnLine</dfn> {
   readonly attribute boolean <a href=#dom-navigator-online title=dom-navigator-onLine>onLine</a>;
 };</pre>
@@ -71304,7 +71306,7 @@
 
   <h6 id=the-errorevent-interface><span class=secno>7.1.3.6.2 </span>The <code><a href=#errorevent>ErrorEvent</a></code> interface</h6>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#erroreventinit>ErrorEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#erroreventinit>ErrorEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=errorevent>ErrorEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute DOMString <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
   readonly attribute DOMString <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
@@ -72343,7 +72345,7 @@
 
   <!-- v2: actual binary support -->
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=windowbase64>WindowBase64</dfn> {
   DOMString <a href=#dom-windowbase64-btoa title=dom-windowbase64-btoa>btoa</a>(DOMString btoa);
   DOMString <a href=#dom-windowbase64-atob title=dom-windowbase64-atob>atob</a>(DOMString atob);
@@ -72979,7 +72981,7 @@
   and <code title=dom-windowtimers-setInterval><a href=#dom-windowtimers-setinterval>setInterval()</a></code>
   methods allow authors to schedule timer-based callbacks.</p>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=windowtimers>WindowTimers</dfn> {
   long <a href=#dom-windowtimers-settimeout title=dom-windowtimers-setTimeout>setTimeout</a>(<span>Function</span> handler, optional long timeout, any... arguments);
   long <a href=#dom-windowtimers-settimeout title=dom-windowtimers-setTimeout>setTimeout</a>(DOMString handler, optional long timeout, any... arguments);
@@ -73645,7 +73647,8 @@
 
   </div>
 
-  <pre class=idl>[NoInterfaceObject] interface <dfn id=windowmodal>WindowModal</dfn> {
+  <pre class=idl>[NoInterfaceObject]
+interface <dfn id=windowmodal>WindowModal</dfn> {
   readonly attribute any <a href=#dom-windowmodal-dialogarguments title=dom-WindowModal-dialogArguments>dialogArguments</a>;
            attribute any <a href=#dom-windowmodal-returnvalue title=dom-WindowModal-returnValue>returnValue</a>;
 };</pre>
@@ -73736,7 +73739,7 @@
 
   <h5 id=client-identification><span class=secno>7.6.1.1 </span>Client identification</h5>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=navigatorid>NavigatorID</dfn> {
   readonly attribute DOMString <a href=#dom-navigator-appcodename title=dom-navigator-appCodeName>appCodeName</a>; // constant "Mozilla"
   readonly attribute DOMString <a href=#dom-navigator-appname title=dom-navigator-appName>appName</a>;
@@ -73847,7 +73850,7 @@
 
   <h5 id=language-preferences><span class=secno>7.6.1.2 </span>Language preferences</h5>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=navigatorlanguage>NavigatorLanguage</dfn> {
   readonly attribute DOMString? <a href=#dom-navigator-language title=dom-navigator-language>language</a>;
 };</pre>
@@ -74984,7 +74987,8 @@
 
   <h3 id=images><span class=secno>7.7 </span>Images</h3>
 
-  <pre class=idl>interface <dfn id=imagebitmap>ImageBitmap</dfn> {
+  <pre class=idl>[Exposed=Window,Worker]
+interface <dfn id=imagebitmap>ImageBitmap</dfn> {
   readonly attribute unsigned long <a href=#dom-imagebitmap-width title=dom-ImageBitmap-width>width</a>;
   readonly attribute unsigned long <a href=#dom-imagebitmap-height title=dom-ImageBitmap-height>height</a>;
 };
@@ -74997,7 +75001,7 @@
          <a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a> or
          <a href=#imagebitmap>ImageBitmap</a>) <dfn id=imagebitmapsource>ImageBitmapSource</dfn>;
 
-[NoInterfaceObject]
+[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=imagebitmapfactories>ImageBitmapFactories</dfn> {
   <a href=#promise>Promise</a> <a href=#dom-createimagebitmap title=dom-createImageBitmap>createImageBitmap</a>(<a href=#imagebitmapsource>ImageBitmapSource</a> image, optional long sx, long sy, long sw, long sh);
 };
@@ -78681,13 +78685,14 @@
   <code><a href=#messageevent>MessageEvent</a></code> interface for their <code title=event-message><a href=#event-message>message</a></code>
   events:</p>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#messageeventinit>MessageEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#messageeventinit>MessageEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=messageevent>MessageEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute any <a href=#dom-messageevent-data title=dom-MessageEvent-data>data</a>;
   readonly attribute DOMString <a href=#dom-messageevent-origin title=dom-MessageEvent-origin>origin</a>;
   readonly attribute DOMString <a href=#dom-messageevent-lasteventid title=dom-MessageEvent-lastEventId>lastEventId</a>;
   readonly attribute DOMString <a href=#dom-messageevent-channel title=dom-MessageEvent-channel>channel</a>;
-  readonly attribute (<a href=#windowproxy>WindowProxy</a> or <a href=#messageport>MessagePort</a>)? <a href=#dom-messageevent-source title=dom-MessageEvent-source>source</a>;
+  [Exposed=Window] readonly attribute (<a href=#windowproxy>WindowProxy</a> or <a href=#messageport>MessagePort</a>)? <a href=#dom-messageevent-source title=dom-MessageEvent-source>source</a>;
+  [Exposed=Worker] readonly attribute <a href=#messageport>MessagePort</a>? <a href=#dom-messageevent-source title=dom-MessageEvent-source>source</a>;
   readonly attribute <a href=#messageport>MessagePort</a>[]? <a href=#dom-messageevent-ports title=dom-MessageEvent-ports>ports</a>;
 };
 
@@ -78859,7 +78864,7 @@
 
   <h4 id=the-eventsource-interface><span class=secno>9.2.2 </span>The <code><a href=#eventsource>EventSource</a></code> interface</h4>
 
-  <pre class=idl>[<a href=#dom-eventsource title=dom-EventSource>Constructor</a>(DOMString url, optional <a href=#eventsourceinit>EventSourceInit</a> eventSourceInitDict)]
+  <pre class=idl>[<a href=#dom-eventsource title=dom-EventSource>Constructor</a>(DOMString url, optional <a href=#eventsourceinit>EventSourceInit</a> eventSourceInitDict), Exposed=Window,Worker]
 interface <dfn id=eventsource>EventSource</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute DOMString <a href=#dom-eventsource-url title=dom-EventSource-url>url</a>;
   readonly attribute boolean <a href=#dom-eventsource-withcredentials title=dom-EventSource-withCredentials>withCredentials</a>;
@@ -79634,7 +79639,7 @@
   <h4 id=the-websocket-interface><span class=secno>9.3.2 </span>The <code><a href=#websocket>WebSocket</a></code> interface</h4>
 
   <pre class=idl>enum <dfn id=binarytype>BinaryType</dfn> { "<span title=dom-BinaryType-blob>blob</span>", "<span title=dom-BinaryType-arraybuffer>arraybuffer</span>" };
-[<a href=#dom-websocket title=dom-WebSocket>Constructor</a>(DOMString url, optional (DOMString or DOMString[]) protocols)]
+[<a href=#dom-websocket title=dom-WebSocket>Constructor</a>(DOMString url, optional (DOMString or DOMString[]) protocols), Exposed=Window,Worker]
 interface <dfn id=websocket>WebSocket</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute DOMString <a href=#dom-websocket-url title=dom-WebSocket-url>url</a>;
 
@@ -80247,7 +80252,7 @@
 
   </ol><h4 id=the-closeevent-interfaces><span class=secno>9.3.6 </span>The <code><a href=#closeevent>CloseEvent</a></code> interfaces</h4>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#closeeventinit>CloseEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#closeeventinit>CloseEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=closeevent>CloseEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute boolean <a href=#dom-closeevent-wasclean title=dom-CloseEvent-wasClean>wasClean</a>;
   readonly attribute unsigned short <a href=#dom-closeevent-code title=dom-CloseEvent-code>code</a>;
@@ -80750,7 +80755,7 @@
 
   <h4 id=message-channels><span class=secno>9.5.2 </span>Message channels</h4>
 
-  <pre class=idl>[<a href=#dom-messagechannel title=dom-MessageChannel>Constructor</a>]
+  <pre class=idl>[<a href=#dom-messagechannel title=dom-MessageChannel>Constructor</a>, Exposed=Window,Worker]
 interface <dfn id=messagechannel>MessageChannel</dfn> {
   readonly attribute <a href=#messageport>MessagePort</a> <a href=#dom-channel-port1 title=dom-channel-port1>port1</a>;
   readonly attribute <a href=#messageport>MessagePort</a> <a href=#dom-channel-port2 title=dom-channel-port2>port2</a>;
@@ -80815,7 +80820,8 @@
   <p>Each channel has two message ports. Data sent through one port is received by the other port,
   and vice versa.</p>
 
-  <pre class=idl>interface <dfn id=messageport>MessagePort</dfn> : <a href=#eventtarget>EventTarget</a> {
+  <pre class=idl>[Exposed=Window,Worker]
+interface <dfn id=messageport>MessagePort</dfn> : <a href=#eventtarget>EventTarget</a> {
   void <a href=#dom-messageport-postmessage title=dom-MessagePort-postMessage>postMessage</a>(any message, optional sequence<<a href=#transferable>Transferable</a>> transfer);<!--
   <span>MessagePort</span> <span title="dom-MessagePort-startConversation">startConversation</span>(any message);-->
   void <a href=#dom-messageport-start title=dom-MessagePort-start>start</a>();
@@ -80867,8 +80873,9 @@
   initially be false, and an <dfn id=concept-port-owner title=concept-port-owner>owner</dfn>, which is a <a href=#settings-object>settings
   object</a> set when the object is created, as described below.</p>
 
+<!--CLEANUP-->
   <p>When a port's <a href=#port-message-queue>port message queue</a> is enabled, the <a href=#event-loop>event loop</a> must use
-  it as one of its <a href=#task-source title="task source">task sources</a>. All <a href=#concept-task title=concept-task>tasks</a> <a href=#queue-a-task title="queue a task">queued</a> on the <a href=#port-message-queue>port
+  it as one of its <a href=#task-source title="task source">task sources</a>. When a port's <a href=#concept-port-owner title=concept-port-owner>owner</a> specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, all <a href=#concept-task title=concept-task>tasks</a> <a href=#queue-a-task title="queue a task">queued</a> on its <a href=#port-message-queue>port
   message queue</a> must be associated with the <a href=#responsible-document>responsible document</a> specified by
   the port's <a href=#concept-port-owner title=concept-port-owner>owner</a>.</p>
 
@@ -80942,15 +80949,19 @@
 
    <li><p>Set <var title="">new port</var>'s <a href=#has-been-shipped>has been shipped</a> flag to true.</li>
 
+<!--CLEANUP-->
    <li><p>Move all the <a href=#concept-task title=concept-task>tasks</a> that are to fire <code title=event-message><a href=#event-message>message</a></code> events in the <a href=#port-message-queue>port message queue</a> of <var title="">original port</var> to the <a href=#port-message-queue>port message queue</a> of <var title="">new
    port</var>, if any, leaving the <var title="">new port</var>'s <a href=#port-message-queue>port message queue</a>
-   in its initial disabled state, and reassociating the moved <a href=#concept-task title=concept-task>tasks</a> with the <a href=#responsible-document>responsible document</a> specified by <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
+   in its initial disabled state, and, if the <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>
+   specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, associating the moved <a href=#concept-task title=concept-task>tasks</a> with the <a href=#responsible-document>responsible document</a> specified by <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
 
+<!--CLEANUP-->
    <li><p>If <var title="">original port</var> is <a href=#related-to-an-ill-fated-port>related to an ill-fated port</a>, then
    create a <a href=#concept-task title=concept-task>task</a> that <a href=#fire-a-simple-event title="fire a simple event">fires a
    simple event</a> named <code title=event-error><a href=#event-error>error</a></code> at the <var title="">new
    port</var>, and add the <a href=#concept-task title=concept-task>task</a> to the <a href=#port-message-queue>port message
-   queue</a> of <var title="">new port</var>. The <a href=#concept-task title=concept-task>task</a> must
+   queue</a> of <var title="">new port</var>. If the <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>
+   specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, the <a href=#concept-task title=concept-task>task</a> must
    be associated with the <a href=#responsible-document>responsible document</a> specified by <var title="">new
    port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
 
@@ -81191,9 +81202,11 @@
    <li><p>Mark <var title="">target port</var> as being a <dfn id=related-to-an-ill-fated-port>related to an ill-fated
    port</dfn>.</li>
 
+<!--CLEANUP-->
    <li><p>Create a <a href=#concept-task title=concept-task>task</a> that <a href=#fire-a-simple-event title="fire a simple
    event">fires a simple event</a> named <code title=event-error><a href=#event-error>error</a></code> at <var title="">target port</var>, and add the <a href=#concept-task title=concept-task>task</a> to the
-   <a href=#port-message-queue>port message queue</a> of <var title="">target port</var>. The <a href=#concept-task title=concept-task>task</a> must be associated with the <a href=#responsible-document>responsible document</a>
+   <a href=#port-message-queue>port message queue</a> of <var title="">target port</var>. If the <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>
+   specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, the <a href=#concept-task title=concept-task>task</a> must be associated with the <a href=#responsible-document>responsible document</a>
    specified by <var title="">source port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
 
    <li><p>Disentangle the two ports.</li>
@@ -81234,7 +81247,8 @@
   they stop being relevant, while still allowing scripts to iterate over the
   <code><a href=#messageport>MessagePort</a></code> objects.</p>
 
-  <pre class=idl>[<a href=#dom-portcollection title=dom-PortCollection>Constructor</a>] interface <dfn id=portcollection>PortCollection</dfn> {
+  <pre class=idl>[<a href=#dom-portcollection title=dom-PortCollection>Constructor</a>, Exposed=Window,Worker]
+interface <dfn id=portcollection>PortCollection</dfn> {
   void <a href=#dom-portcollection-add title=dom-PortCollection-add>add</a>(<a href=#messageport>MessagePort</a> port);
   void <a href=#dom-portcollection-remove title=dom-PortCollection-remove>remove</a>(<a href=#messageport>MessagePort</a> port);
   void <a href=#dom-portcollection-clear title=dom-PortCollection-clear>clear</a>();
@@ -81382,7 +81396,8 @@
   <p>For simple cases, though, where a shared worker would be an unreasonable overhead, authors can
   use the simple channel-based broadcast mechanism described in this section.</p>
 
-  <pre class=idl>[<a href=#dom-broadcastchannel title=dom-BroadcastChannel>Constructor</a>(DOMString channel)] interface <dfn id=broadcastchannel>BroadcastChannel</dfn> {
+  <pre class=idl>[<a href=#dom-broadcastchannel title=dom-BroadcastChannel>Constructor</a>(DOMString channel)]
+interface <dfn id=broadcastchannel>BroadcastChannel</dfn> {
   void <a href=#dom-broadcastchannel-postmessage title=dom-BroadcastChannel-postMessage>postMessage</a>(DOMString message);
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-broadcastchannel-onmessage title=handler-BroadcastChannel-onmessage>onmessage</a>;
 };</pre>
@@ -82580,7 +82595,8 @@
 
   <h5 id=the-workerglobalscope-common-interface><span class=secno>10.2.1.1 </span>The <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> common interface</h5>
 
-  <pre class=idl>interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> : <a href=#eventtarget>EventTarget</a> {
+  <pre class=idl>[Exposed=Worker] <!-- not sure we really need that, but... -->
+interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>;
   readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>;
 
@@ -82627,7 +82643,7 @@
 
   <h5 id=dedicated-workers-and-the-dedicatedworkerglobalscope-interface><span class=secno>10.2.1.2 </span>Dedicated workers and the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> interface</h5>
 
-  <pre class=idl>[Global]
+  <pre class=idl>[Global=Worker,DedicatedWorker]
 /*sealed*/ interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
   void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(any message, optional sequence<<a href=#transferable>Transferable</a>> transfer);<!--
   <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(any message);-->
@@ -82673,7 +82689,7 @@
 
   <h5 id=shared-workers-and-the-sharedworkerglobalscope-interface><span class=secno>10.2.1.3 </span>Shared workers and the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> interface</h5>
 
-  <pre class=idl>[Global]
+  <pre class=idl>[Global=Worker,SharedWorker]
 /*sealed*/ interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
   readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
   readonly attribute <a href=#applicationcache>ApplicationCache</a> <a href=#dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</a>;
@@ -83007,7 +83023,7 @@
 
   <h5 id=the-abstractworker-abstract-interface><span class=secno>10.2.6.1 </span>The <code><a href=#abstractworker>AbstractWorker</a></code> abstract interface</h5>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=abstractworker>AbstractWorker</dfn> {
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>;
 };</pre>
@@ -83119,7 +83135,7 @@
 
   </ol><h5 id=dedicated-workers-and-the-worker-interface><span class=secno>10.2.6.3 </span>Dedicated workers and the <code><a href=#worker>Worker</a></code> interface</h5>
 
-  <pre class=idl>[<a href=#dom-worker title=dom-Worker>Constructor</a>(DOMString scriptURL)]
+  <pre class=idl>[<a href=#dom-worker title=dom-Worker>Constructor</a>(DOMString scriptURL), Exposed=Window,Worker]
 interface <dfn id=worker>Worker</dfn> : <a href=#eventtarget>EventTarget</a> {
   void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>();
 
@@ -83245,7 +83261,7 @@
 
   </ol><h5 id=shared-workers-and-the-sharedworker-interface><span class=secno>10.2.6.4 </span>Shared workers and the <code><a href=#sharedworker>SharedWorker</a></code> interface</h5>
 
-  <pre class=idl>[<a href=#dom-sharedworker title=dom-SharedWorker>Constructor</a>(DOMString scriptURL, optional DOMString name)]
+  <pre class=idl>[<a href=#dom-sharedworker title=dom-SharedWorker>Constructor</a>(DOMString scriptURL, optional DOMString name), Exposed=Window,Worker]
 interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute <a href=#messageport>MessagePort</a> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>;
 };
@@ -83448,7 +83464,8 @@
 
   <h3 id=apis-available-to-workers><span class=secno>10.3 </span>APIs available to workers</h3>
 
-  <pre class=idl>partial interface <a href=#workerglobalscope id=WorkerGlobalScope-partial>WorkerGlobalScope</a> {<!-- not obsolete -->
+  <pre class=idl>[Exposed=Worker]
+partial interface <a href=#workerglobalscope id=WorkerGlobalScope-partial>WorkerGlobalScope</a> {<!-- not obsolete -->
   void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>(DOMString... urls);
   readonly attribute <a href=#workernavigator>WorkerNavigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>;
 };
@@ -83538,7 +83555,8 @@
   the <code><a href=#workernavigator>WorkerNavigator</a></code> interface, which represents the
   identity and state of the user agent (the client):</p>
 
-  <pre class=idl>interface <dfn id=workernavigator>WorkerNavigator</dfn> {};
+  <pre class=idl>[Exposed=Worker]
+interface <dfn id=workernavigator>WorkerNavigator</dfn> {};
 <a href=#workernavigator>WorkerNavigator</a> implements <a href=#navigatorid>NavigatorID</a>;
 <a href=#workernavigator>WorkerNavigator</a> implements <a href=#navigatorlanguage>NavigatorLanguage</a>;
 <a href=#workernavigator>WorkerNavigator</a> implements <a href=#navigatoronline>NavigatorOnLine</a>;</pre>
@@ -83569,7 +83587,8 @@
 
   <h4 id=worker-locations><span class=secno>10.3.4 </span>Worker locations</h4>
 
-  <pre class=idl>interface <dfn id=workerlocation>WorkerLocation</dfn> { };
+  <pre class=idl>[Exposed=Worker]
+interface <dfn id=workerlocation>WorkerLocation</dfn> { };
 <a href=#workerlocation>WorkerLocation</a> implements <a href=#urlutilsreadonly>URLUtilsReadOnly</a>;</pre>
 
   <p>A <code><a href=#workerlocation>WorkerLocation</a></code> object represents an <a href=#absolute-url>absolute URL</a> set at its

Modified: index
===================================================================
--- index	2014-01-27 20:20:38 UTC (rev 8424)
+++ index	2014-01-27 23:08:49 UTC (rev 8425)
@@ -8009,7 +8009,7 @@
   algorithms, one for getting the list of name-value pairs, one for setting names to certain values,
   and one for deleting names.</p>
 
-  <pre class=idl>[OverrideBuiltins]
+  <pre class=idl>[OverrideBuiltins,Exposed=Window,Worker]
 interface <dfn id=domstringmap>DOMStringMap</dfn> {
   <a href=#dom-domstringmap-nameditem title=dom-DOMStringMap-namedItem>getter</a> DOMString (DOMString name);
   <a href=#dom-domstringmap-setitem title=dom-DOMStringMap-setItem>setter</a> <a href=#dom-domstringmap-additem title=dom-DOMStringMap-addItem>creator</a> void (DOMString name, DOMString value);
@@ -53946,7 +53946,8 @@
   <p>Since DOM nodes cannot be accessed across worker boundaries, a proxy object is needed to enable
   workers to render to <code><a href=#the-canvas-element>canvas</a></code> elements in <code><a href=#document>Document</a></code>s.</p>
 
-  <pre class=idl>interface <dfn id=canvasproxy>CanvasProxy</dfn> {
+  <pre class=idl>[Exposed=Window,Worker]
+interface <dfn id=canvasproxy>CanvasProxy</dfn> {
   void <a href=#dom-canvasproxy-setcontext title=dom-CanvasProxy-setContext>setContext</a>(<a href=#renderingcontext>RenderingContext</a> context);
 };
 // <a href=#canvasproxy>CanvasProxy</a> implements <a href=#transferable>Transferable</a>;</pre>
@@ -54070,7 +54071,7 @@
 
 enum <dfn id=canvasfillrule>CanvasFillRule</dfn> { "<a href=#dom-context-2d-fillrule-nonzero title=dom-context-2d-fillRule-nonzero>nonzero</a>", "<a href=#dom-context-2d-fillrule-evenodd title=dom-context-2d-fillRule-evenodd>evenodd</a>" };
 
-[<a href=#dom-context-2d title=dom-context-2d>Constructor</a>(optional unsigned long width, unsigned long height)]
+[<a href=#dom-context-2d title=dom-context-2d>Constructor</a>(optional unsigned long width, unsigned long height), Exposed=Window,Worker]
 interface <dfn id=canvasrenderingcontext2d>CanvasRenderingContext2D</dfn> {
 
   // back-reference to the canvas
@@ -64899,7 +64900,7 @@
 <!--TOPIC:DOM APIs-->
   <h3 id=the-window-object><span class=secno>6.2 </span>The <code><a href=#window>Window</a></code> object</h3>
 
-  <pre class=idl>[Global]
+  <pre class=idl>[PrimaryGlobal]
 /*sealed*/ interface <dfn id=window>Window</dfn> : <a href=#eventtarget>EventTarget</a> {
   // the current browsing context
   [Unforgeable] readonly attribute <a href=#windowproxy>WindowProxy</a> <a href=#dom-window title=dom-window>window</a>;
@@ -68377,7 +68378,7 @@
 
   <h5 id=the-popstateevent-interface><span class=secno>6.6.10.1 </span>The <code><a href=#popstateevent>PopStateEvent</a></code> interface</h5>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#popstateeventinit>PopStateEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#popstateeventinit>PopStateEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=popstateevent>PopStateEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute any <a href=#dom-popstateevent-state title=dom-PopStateEvent-state>state</a>;
 };
@@ -68406,7 +68407,7 @@
 
   <h5 id=the-hashchangeevent-interface><span class=secno>6.6.10.2 </span>The <code><a href=#hashchangeevent>HashChangeEvent</a></code> interface</h5>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#hashchangeeventinit>HashChangeEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#hashchangeeventinit>HashChangeEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=hashchangeevent>HashChangeEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute DOMString <a href=#dom-hashchangeevent-oldurl title=dom-HashChangeEvent-oldURL>oldURL</a>;
   readonly attribute DOMString <a href=#dom-hashchangeevent-newurl title=dom-HashChangeEvent-newURL>newURL</a>;
@@ -68453,7 +68454,7 @@
 
   <h5 id=the-pagetransitionevent-interface><span class=secno>6.6.10.3 </span>The <code><a href=#pagetransitionevent>PageTransitionEvent</a></code> interface</h5>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#pagetransitioneventinit>PageTransitionEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#pagetransitioneventinit>PageTransitionEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=pagetransitionevent>PageTransitionEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute boolean <a href=#dom-pagetransitionevent-persisted title=dom-PageTransitionEvent-persisted>persisted</a>;
 };
@@ -70455,7 +70456,8 @@
 
   <h4 id=application-cache-api><span class=secno>6.7.9 </span>Application cache API</h4>
 
-  <pre class=idl>interface <dfn id=applicationcache>ApplicationCache</dfn> : <a href=#eventtarget>EventTarget</a> {
+  <pre class=idl>[Exposed=Window,SharedWorker]
+interface <dfn id=applicationcache>ApplicationCache</dfn> : <a href=#eventtarget>EventTarget</a> {
 
   // <a href=#concept-appcache-status title=concept-appcache-status>update status</a>
   const unsigned short <a href=#dom-appcache-uncached title=dom-appcache-UNCACHED>UNCACHED</a> = 0;
@@ -70670,7 +70672,7 @@
 
   <h4 id=browser-state><span class=secno>6.7.10 </span>Browser state</h4>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=navigatoronline>NavigatorOnLine</dfn> {
   readonly attribute boolean <a href=#dom-navigator-online title=dom-navigator-onLine>onLine</a>;
 };</pre>
@@ -71304,7 +71306,7 @@
 
   <h6 id=the-errorevent-interface><span class=secno>7.1.3.6.2 </span>The <code><a href=#errorevent>ErrorEvent</a></code> interface</h6>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#erroreventinit>ErrorEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#erroreventinit>ErrorEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=errorevent>ErrorEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute DOMString <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
   readonly attribute DOMString <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
@@ -72343,7 +72345,7 @@
 
   <!-- v2: actual binary support -->
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=windowbase64>WindowBase64</dfn> {
   DOMString <a href=#dom-windowbase64-btoa title=dom-windowbase64-btoa>btoa</a>(DOMString btoa);
   DOMString <a href=#dom-windowbase64-atob title=dom-windowbase64-atob>atob</a>(DOMString atob);
@@ -72979,7 +72981,7 @@
   and <code title=dom-windowtimers-setInterval><a href=#dom-windowtimers-setinterval>setInterval()</a></code>
   methods allow authors to schedule timer-based callbacks.</p>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=windowtimers>WindowTimers</dfn> {
   long <a href=#dom-windowtimers-settimeout title=dom-windowtimers-setTimeout>setTimeout</a>(<span>Function</span> handler, optional long timeout, any... arguments);
   long <a href=#dom-windowtimers-settimeout title=dom-windowtimers-setTimeout>setTimeout</a>(DOMString handler, optional long timeout, any... arguments);
@@ -73645,7 +73647,8 @@
 
   </div>
 
-  <pre class=idl>[NoInterfaceObject] interface <dfn id=windowmodal>WindowModal</dfn> {
+  <pre class=idl>[NoInterfaceObject]
+interface <dfn id=windowmodal>WindowModal</dfn> {
   readonly attribute any <a href=#dom-windowmodal-dialogarguments title=dom-WindowModal-dialogArguments>dialogArguments</a>;
            attribute any <a href=#dom-windowmodal-returnvalue title=dom-WindowModal-returnValue>returnValue</a>;
 };</pre>
@@ -73736,7 +73739,7 @@
 
   <h5 id=client-identification><span class=secno>7.6.1.1 </span>Client identification</h5>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=navigatorid>NavigatorID</dfn> {
   readonly attribute DOMString <a href=#dom-navigator-appcodename title=dom-navigator-appCodeName>appCodeName</a>; // constant "Mozilla"
   readonly attribute DOMString <a href=#dom-navigator-appname title=dom-navigator-appName>appName</a>;
@@ -73847,7 +73850,7 @@
 
   <h5 id=language-preferences><span class=secno>7.6.1.2 </span>Language preferences</h5>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=navigatorlanguage>NavigatorLanguage</dfn> {
   readonly attribute DOMString? <a href=#dom-navigator-language title=dom-navigator-language>language</a>;
 };</pre>
@@ -74984,7 +74987,8 @@
 
   <h3 id=images><span class=secno>7.7 </span>Images</h3>
 
-  <pre class=idl>interface <dfn id=imagebitmap>ImageBitmap</dfn> {
+  <pre class=idl>[Exposed=Window,Worker]
+interface <dfn id=imagebitmap>ImageBitmap</dfn> {
   readonly attribute unsigned long <a href=#dom-imagebitmap-width title=dom-ImageBitmap-width>width</a>;
   readonly attribute unsigned long <a href=#dom-imagebitmap-height title=dom-ImageBitmap-height>height</a>;
 };
@@ -74997,7 +75001,7 @@
          <a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a> or
          <a href=#imagebitmap>ImageBitmap</a>) <dfn id=imagebitmapsource>ImageBitmapSource</dfn>;
 
-[NoInterfaceObject]
+[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=imagebitmapfactories>ImageBitmapFactories</dfn> {
   <a href=#promise>Promise</a> <a href=#dom-createimagebitmap title=dom-createImageBitmap>createImageBitmap</a>(<a href=#imagebitmapsource>ImageBitmapSource</a> image, optional long sx, long sy, long sw, long sh);
 };
@@ -78681,13 +78685,14 @@
   <code><a href=#messageevent>MessageEvent</a></code> interface for their <code title=event-message><a href=#event-message>message</a></code>
   events:</p>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#messageeventinit>MessageEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#messageeventinit>MessageEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=messageevent>MessageEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute any <a href=#dom-messageevent-data title=dom-MessageEvent-data>data</a>;
   readonly attribute DOMString <a href=#dom-messageevent-origin title=dom-MessageEvent-origin>origin</a>;
   readonly attribute DOMString <a href=#dom-messageevent-lasteventid title=dom-MessageEvent-lastEventId>lastEventId</a>;
   readonly attribute DOMString <a href=#dom-messageevent-channel title=dom-MessageEvent-channel>channel</a>;
-  readonly attribute (<a href=#windowproxy>WindowProxy</a> or <a href=#messageport>MessagePort</a>)? <a href=#dom-messageevent-source title=dom-MessageEvent-source>source</a>;
+  [Exposed=Window] readonly attribute (<a href=#windowproxy>WindowProxy</a> or <a href=#messageport>MessagePort</a>)? <a href=#dom-messageevent-source title=dom-MessageEvent-source>source</a>;
+  [Exposed=Worker] readonly attribute <a href=#messageport>MessagePort</a>? <a href=#dom-messageevent-source title=dom-MessageEvent-source>source</a>;
   readonly attribute <a href=#messageport>MessagePort</a>[]? <a href=#dom-messageevent-ports title=dom-MessageEvent-ports>ports</a>;
 };
 
@@ -78859,7 +78864,7 @@
 
   <h4 id=the-eventsource-interface><span class=secno>9.2.2 </span>The <code><a href=#eventsource>EventSource</a></code> interface</h4>
 
-  <pre class=idl>[<a href=#dom-eventsource title=dom-EventSource>Constructor</a>(DOMString url, optional <a href=#eventsourceinit>EventSourceInit</a> eventSourceInitDict)]
+  <pre class=idl>[<a href=#dom-eventsource title=dom-EventSource>Constructor</a>(DOMString url, optional <a href=#eventsourceinit>EventSourceInit</a> eventSourceInitDict), Exposed=Window,Worker]
 interface <dfn id=eventsource>EventSource</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute DOMString <a href=#dom-eventsource-url title=dom-EventSource-url>url</a>;
   readonly attribute boolean <a href=#dom-eventsource-withcredentials title=dom-EventSource-withCredentials>withCredentials</a>;
@@ -79634,7 +79639,7 @@
   <h4 id=the-websocket-interface><span class=secno>9.3.2 </span>The <code><a href=#websocket>WebSocket</a></code> interface</h4>
 
   <pre class=idl>enum <dfn id=binarytype>BinaryType</dfn> { "<span title=dom-BinaryType-blob>blob</span>", "<span title=dom-BinaryType-arraybuffer>arraybuffer</span>" };
-[<a href=#dom-websocket title=dom-WebSocket>Constructor</a>(DOMString url, optional (DOMString or DOMString[]) protocols)]
+[<a href=#dom-websocket title=dom-WebSocket>Constructor</a>(DOMString url, optional (DOMString or DOMString[]) protocols), Exposed=Window,Worker]
 interface <dfn id=websocket>WebSocket</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute DOMString <a href=#dom-websocket-url title=dom-WebSocket-url>url</a>;
 
@@ -80247,7 +80252,7 @@
 
   </ol><h4 id=the-closeevent-interfaces><span class=secno>9.3.6 </span>The <code><a href=#closeevent>CloseEvent</a></code> interfaces</h4>
 
-  <pre class=idl>[Constructor(DOMString type, optional <a href=#closeeventinit>CloseEventInit</a> eventInitDict)]
+  <pre class=idl>[Constructor(DOMString type, optional <a href=#closeeventinit>CloseEventInit</a> eventInitDict), Exposed=Window,Worker]
 interface <dfn id=closeevent>CloseEvent</dfn> : <a href=#event>Event</a> {
   readonly attribute boolean <a href=#dom-closeevent-wasclean title=dom-CloseEvent-wasClean>wasClean</a>;
   readonly attribute unsigned short <a href=#dom-closeevent-code title=dom-CloseEvent-code>code</a>;
@@ -80750,7 +80755,7 @@
 
   <h4 id=message-channels><span class=secno>9.5.2 </span>Message channels</h4>
 
-  <pre class=idl>[<a href=#dom-messagechannel title=dom-MessageChannel>Constructor</a>]
+  <pre class=idl>[<a href=#dom-messagechannel title=dom-MessageChannel>Constructor</a>, Exposed=Window,Worker]
 interface <dfn id=messagechannel>MessageChannel</dfn> {
   readonly attribute <a href=#messageport>MessagePort</a> <a href=#dom-channel-port1 title=dom-channel-port1>port1</a>;
   readonly attribute <a href=#messageport>MessagePort</a> <a href=#dom-channel-port2 title=dom-channel-port2>port2</a>;
@@ -80815,7 +80820,8 @@
   <p>Each channel has two message ports. Data sent through one port is received by the other port,
   and vice versa.</p>
 
-  <pre class=idl>interface <dfn id=messageport>MessagePort</dfn> : <a href=#eventtarget>EventTarget</a> {
+  <pre class=idl>[Exposed=Window,Worker]
+interface <dfn id=messageport>MessagePort</dfn> : <a href=#eventtarget>EventTarget</a> {
   void <a href=#dom-messageport-postmessage title=dom-MessagePort-postMessage>postMessage</a>(any message, optional sequence<<a href=#transferable>Transferable</a>> transfer);<!--
   <span>MessagePort</span> <span title="dom-MessagePort-startConversation">startConversation</span>(any message);-->
   void <a href=#dom-messageport-start title=dom-MessagePort-start>start</a>();
@@ -80867,8 +80873,9 @@
   initially be false, and an <dfn id=concept-port-owner title=concept-port-owner>owner</dfn>, which is a <a href=#settings-object>settings
   object</a> set when the object is created, as described below.</p>
 
+<!--CLEANUP-->
   <p>When a port's <a href=#port-message-queue>port message queue</a> is enabled, the <a href=#event-loop>event loop</a> must use
-  it as one of its <a href=#task-source title="task source">task sources</a>. All <a href=#concept-task title=concept-task>tasks</a> <a href=#queue-a-task title="queue a task">queued</a> on the <a href=#port-message-queue>port
+  it as one of its <a href=#task-source title="task source">task sources</a>. When a port's <a href=#concept-port-owner title=concept-port-owner>owner</a> specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, all <a href=#concept-task title=concept-task>tasks</a> <a href=#queue-a-task title="queue a task">queued</a> on its <a href=#port-message-queue>port
   message queue</a> must be associated with the <a href=#responsible-document>responsible document</a> specified by
   the port's <a href=#concept-port-owner title=concept-port-owner>owner</a>.</p>
 
@@ -80942,15 +80949,19 @@
 
    <li><p>Set <var title="">new port</var>'s <a href=#has-been-shipped>has been shipped</a> flag to true.</li>
 
+<!--CLEANUP-->
    <li><p>Move all the <a href=#concept-task title=concept-task>tasks</a> that are to fire <code title=event-message><a href=#event-message>message</a></code> events in the <a href=#port-message-queue>port message queue</a> of <var title="">original port</var> to the <a href=#port-message-queue>port message queue</a> of <var title="">new
    port</var>, if any, leaving the <var title="">new port</var>'s <a href=#port-message-queue>port message queue</a>
-   in its initial disabled state, and reassociating the moved <a href=#concept-task title=concept-task>tasks</a> with the <a href=#responsible-document>responsible document</a> specified by <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
+   in its initial disabled state, and, if the <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>
+   specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, associating the moved <a href=#concept-task title=concept-task>tasks</a> with the <a href=#responsible-document>responsible document</a> specified by <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
 
+<!--CLEANUP-->
    <li><p>If <var title="">original port</var> is <a href=#related-to-an-ill-fated-port>related to an ill-fated port</a>, then
    create a <a href=#concept-task title=concept-task>task</a> that <a href=#fire-a-simple-event title="fire a simple event">fires a
    simple event</a> named <code title=event-error><a href=#event-error>error</a></code> at the <var title="">new
    port</var>, and add the <a href=#concept-task title=concept-task>task</a> to the <a href=#port-message-queue>port message
-   queue</a> of <var title="">new port</var>. The <a href=#concept-task title=concept-task>task</a> must
+   queue</a> of <var title="">new port</var>. If the <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>
+   specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, the <a href=#concept-task title=concept-task>task</a> must
    be associated with the <a href=#responsible-document>responsible document</a> specified by <var title="">new
    port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
 
@@ -81191,9 +81202,11 @@
    <li><p>Mark <var title="">target port</var> as being a <dfn id=related-to-an-ill-fated-port>related to an ill-fated
    port</dfn>.</li>
 
+<!--CLEANUP-->
    <li><p>Create a <a href=#concept-task title=concept-task>task</a> that <a href=#fire-a-simple-event title="fire a simple
    event">fires a simple event</a> named <code title=event-error><a href=#event-error>error</a></code> at <var title="">target port</var>, and add the <a href=#concept-task title=concept-task>task</a> to the
-   <a href=#port-message-queue>port message queue</a> of <var title="">target port</var>. The <a href=#concept-task title=concept-task>task</a> must be associated with the <a href=#responsible-document>responsible document</a>
+   <a href=#port-message-queue>port message queue</a> of <var title="">target port</var>. If the <var title="">new port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>
+   specifies a <a href=#responsible-event-loop>responsible event loop</a> that is a <a href=#browsing-context>browsing context</a> <a href=#event-loop>event loop</a>, the <a href=#concept-task title=concept-task>task</a> must be associated with the <a href=#responsible-document>responsible document</a>
    specified by <var title="">source port</var>'s <a href=#concept-port-owner title=concept-port-owner>owner</a>.</li>
 
    <li><p>Disentangle the two ports.</li>
@@ -81234,7 +81247,8 @@
   they stop being relevant, while still allowing scripts to iterate over the
   <code><a href=#messageport>MessagePort</a></code> objects.</p>
 
-  <pre class=idl>[<a href=#dom-portcollection title=dom-PortCollection>Constructor</a>] interface <dfn id=portcollection>PortCollection</dfn> {
+  <pre class=idl>[<a href=#dom-portcollection title=dom-PortCollection>Constructor</a>, Exposed=Window,Worker]
+interface <dfn id=portcollection>PortCollection</dfn> {
   void <a href=#dom-portcollection-add title=dom-PortCollection-add>add</a>(<a href=#messageport>MessagePort</a> port);
   void <a href=#dom-portcollection-remove title=dom-PortCollection-remove>remove</a>(<a href=#messageport>MessagePort</a> port);
   void <a href=#dom-portcollection-clear title=dom-PortCollection-clear>clear</a>();
@@ -81382,7 +81396,8 @@
   <p>For simple cases, though, where a shared worker would be an unreasonable overhead, authors can
   use the simple channel-based broadcast mechanism described in this section.</p>
 
-  <pre class=idl>[<a href=#dom-broadcastchannel title=dom-BroadcastChannel>Constructor</a>(DOMString channel)] interface <dfn id=broadcastchannel>BroadcastChannel</dfn> {
+  <pre class=idl>[<a href=#dom-broadcastchannel title=dom-BroadcastChannel>Constructor</a>(DOMString channel)]
+interface <dfn id=broadcastchannel>BroadcastChannel</dfn> {
   void <a href=#dom-broadcastchannel-postmessage title=dom-BroadcastChannel-postMessage>postMessage</a>(DOMString message);
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-broadcastchannel-onmessage title=handler-BroadcastChannel-onmessage>onmessage</a>;
 };</pre>
@@ -82580,7 +82595,8 @@
 
   <h5 id=the-workerglobalscope-common-interface><span class=secno>10.2.1.1 </span>The <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> common interface</h5>
 
-  <pre class=idl>interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> : <a href=#eventtarget>EventTarget</a> {
+  <pre class=idl>[Exposed=Worker] <!-- not sure we really need that, but... -->
+interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>;
   readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>;
 
@@ -82627,7 +82643,7 @@
 
   <h5 id=dedicated-workers-and-the-dedicatedworkerglobalscope-interface><span class=secno>10.2.1.2 </span>Dedicated workers and the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> interface</h5>
 
-  <pre class=idl>[Global]
+  <pre class=idl>[Global=Worker,DedicatedWorker]
 /*sealed*/ interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
   void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(any message, optional sequence<<a href=#transferable>Transferable</a>> transfer);<!--
   <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(any message);-->
@@ -82673,7 +82689,7 @@
 
   <h5 id=shared-workers-and-the-sharedworkerglobalscope-interface><span class=secno>10.2.1.3 </span>Shared workers and the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> interface</h5>
 
-  <pre class=idl>[Global]
+  <pre class=idl>[Global=Worker,SharedWorker]
 /*sealed*/ interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
   readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
   readonly attribute <a href=#applicationcache>ApplicationCache</a> <a href=#dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</a>;
@@ -83007,7 +83023,7 @@
 
   <h5 id=the-abstractworker-abstract-interface><span class=secno>10.2.6.1 </span>The <code><a href=#abstractworker>AbstractWorker</a></code> abstract interface</h5>
 
-  <pre class=idl>[NoInterfaceObject]
+  <pre class=idl>[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn id=abstractworker>AbstractWorker</dfn> {
            attribute <a href=#eventhandler>EventHandler</a> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>;
 };</pre>
@@ -83119,7 +83135,7 @@
 
   </ol><h5 id=dedicated-workers-and-the-worker-interface><span class=secno>10.2.6.3 </span>Dedicated workers and the <code><a href=#worker>Worker</a></code> interface</h5>
 
-  <pre class=idl>[<a href=#dom-worker title=dom-Worker>Constructor</a>(DOMString scriptURL)]
+  <pre class=idl>[<a href=#dom-worker title=dom-Worker>Constructor</a>(DOMString scriptURL), Exposed=Window,Worker]
 interface <dfn id=worker>Worker</dfn> : <a href=#eventtarget>EventTarget</a> {
   void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>();
 
@@ -83245,7 +83261,7 @@
 
   </ol><h5 id=shared-workers-and-the-sharedworker-interface><span class=secno>10.2.6.4 </span>Shared workers and the <code><a href=#sharedworker>SharedWorker</a></code> interface</h5>
 
-  <pre class=idl>[<a href=#dom-sharedworker title=dom-SharedWorker>Constructor</a>(DOMString scriptURL, optional DOMString name)]
+  <pre class=idl>[<a href=#dom-sharedworker title=dom-SharedWorker>Constructor</a>(DOMString scriptURL, optional DOMString name), Exposed=Window,Worker]
 interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#eventtarget>EventTarget</a> {
   readonly attribute <a href=#messageport>MessagePort</a> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>;
 };
@@ -83448,7 +83464,8 @@
 
   <h3 id=apis-available-to-workers><span class=secno>10.3 </span>APIs available to workers</h3>
 
-  <pre class=idl>partial interface <a href=#workerglobalscope id=WorkerGlobalScope-partial>WorkerGlobalScope</a> {<!-- not obsolete -->
+  <pre class=idl>[Exposed=Worker]
+partial interface <a href=#workerglobalscope id=WorkerGlobalScope-partial>WorkerGlobalScope</a> {<!-- not obsolete -->
   void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>(DOMString... urls);
   readonly attribute <a href=#workernavigator>WorkerNavigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>;
 };
@@ -83538,7 +83555,8 @@
   the <code><a href=#workernavigator>WorkerNavigator</a></code> interface, which represents the
   identity and state of the user agent (the client):</p>
 
-  <pre class=idl>interface <dfn id=workernavigator>WorkerNavigator</dfn> {};
+  <pre class=idl>[Exposed=Worker]
+interface <dfn id=workernavigator>WorkerNavigator</dfn> {};
 <a href=#workernavigator>WorkerNavigator</a> implements <a href=#navigatorid>NavigatorID</a>;
 <a href=#workernavigator>WorkerNavigator</a> implements <a href=#navigatorlanguage>NavigatorLanguage</a>;
 <a href=#workernavigator>WorkerNavigator</a> implements <a href=#navigatoronline>NavigatorOnLine</a>;</pre>
@@ -83569,7 +83587,8 @@
 
   <h4 id=worker-locations><span class=secno>10.3.4 </span>Worker locations</h4>
 
-  <pre class=idl>interface <dfn id=workerlocation>WorkerLocation</dfn> { };
+  <pre class=idl>[Exposed=Worker]
+interface <dfn id=workerlocation>WorkerLocation</dfn> { };
 <a href=#workerlocation>WorkerLocation</a> implements <a href=#urlutilsreadonly>URLUtilsReadOnly</a>;</pre>
 
   <p>A <code><a href=#workerlocation>WorkerLocation</a></code> object represents an <a href=#absolute-url>absolute URL</a> set at its

Modified: source
===================================================================
--- source	2014-01-27 20:20:38 UTC (rev 8424)
+++ source	2014-01-27 23:08:49 UTC (rev 8425)
@@ -7573,7 +7573,7 @@
   algorithms, one for getting the list of name-value pairs, one for setting names to certain values,
   and one for deleting names.</p>
 
-  <pre class="idl">[OverrideBuiltins]
+  <pre class="idl">[OverrideBuiltins,Exposed=Window,Worker]
 interface <dfn>DOMStringMap</dfn> {
   <span data-x="dom-DOMStringMap-namedItem">getter</span> DOMString (DOMString name);
   <span data-x="dom-DOMStringMap-setItem">setter</span> <span data-x="dom-DOMStringMap-addItem">creator</span> void (DOMString name, DOMString value);
@@ -59736,7 +59736,8 @@
   <p>Since DOM nodes cannot be accessed across worker boundaries, a proxy object is needed to enable
   workers to render to <code>canvas</code> elements in <code>Document</code>s.</p>
 
-  <pre class="idl">interface <dfn>CanvasProxy</dfn> {
+  <pre class="idl">[Exposed=Window,Worker]
+interface <dfn>CanvasProxy</dfn> {
   void <span data-x="dom-CanvasProxy-setContext">setContext</span>(<span>RenderingContext</span> context);
 };
 // <span>CanvasProxy</span> implements <span>Transferable</span>;</pre>
@@ -59886,7 +59887,7 @@
 
 enum <dfn>CanvasFillRule</dfn> { "<span data-x="dom-context-2d-fillRule-nonzero">nonzero</span>", "<span data-x="dom-context-2d-fillRule-evenodd">evenodd</span>" };
 
-[<span data-x="dom-context-2d">Constructor</span>(optional unsigned long width, unsigned long height)]
+[<span data-x="dom-context-2d">Constructor</span>(optional unsigned long width, unsigned long height), Exposed=Window,Worker]
 interface <dfn>CanvasRenderingContext2D</dfn> {
 
   // back-reference to the canvas
@@ -72266,7 +72267,7 @@
 <!--TOPIC:DOM APIs-->
   <h3>The <code>Window</code> object</h3>
 
-  <pre class="idl">[Global]
+  <pre class="idl">[PrimaryGlobal]
 /*sealed*/ interface <dfn>Window</dfn> : <span>EventTarget</span> {
   // the current browsing context
   [Unforgeable] readonly attribute <span>WindowProxy</span> <span data-x="dom-window">window</span>;
@@ -73033,8 +73034,7 @@
 
 <!--END complete--><!--END dev-html-->
 <!-- this is for the purposes of the IDL validator -->
-<pre class="idl">
-[NoInterfaceObject]
+<pre class="idl">[NoInterfaceObject]
 interface <span>WindowProxy</span> : <span>Window</span> {};
 </pre>
 <!--START complete--><!--START dev-html-->
@@ -76259,7 +76259,7 @@
 
   <h5>The <code>PopStateEvent</code> interface</h5>
 
-  <pre class="idl">[Constructor(DOMString type, optional <span>PopStateEventInit</span> eventInitDict)]
+  <pre class="idl">[Constructor(DOMString type, optional <span>PopStateEventInit</span> eventInitDict), Exposed=Window,Worker]
 interface <dfn>PopStateEvent</dfn> : <span>Event</span> {
   readonly attribute any <span data-x="dom-PopStateEvent-state">state</span>;
 };
@@ -76294,7 +76294,7 @@
 
   <h5>The <code>HashChangeEvent</code> interface</h5>
 
-  <pre class="idl">[Constructor(DOMString type, optional <span>HashChangeEventInit</span> eventInitDict)]
+  <pre class="idl">[Constructor(DOMString type, optional <span>HashChangeEventInit</span> eventInitDict), Exposed=Window,Worker]
 interface <dfn>HashChangeEvent</dfn> : <span>Event</span> {
   readonly attribute DOMString <span data-x="dom-HashChangeEvent-oldURL">oldURL</span>;
   readonly attribute DOMString <span data-x="dom-HashChangeEvent-newURL">newURL</span>;
@@ -76345,7 +76345,7 @@
 
   <h5>The <code>PageTransitionEvent</code> interface</h5>
 
-  <pre class="idl">[Constructor(DOMString type, optional <span>PageTransitionEventInit</span> eventInitDict)]
+  <pre class="idl">[Constructor(DOMString type, optional <span>PageTransitionEventInit</span> eventInitDict), Exposed=Window,Worker]
 interface <dfn>PageTransitionEvent</dfn> : <span>Event</span> {
   readonly attribute boolean <span data-x="dom-PageTransitionEvent-persisted">persisted</span>;
 };
@@ -78666,7 +78666,8 @@
 
   <h4>Application cache API</h4>
 
-  <pre class="idl">interface <dfn>ApplicationCache</dfn> : <span>EventTarget</span> {
+  <pre class="idl">[Exposed=Window,SharedWorker]
+interface <dfn>ApplicationCache</dfn> : <span>EventTarget</span> {
 
   // <span data-x="concept-appcache-status">update status</span>
   const unsigned short <span data-x="dom-appcache-UNCACHED">UNCACHED</span> = 0;
@@ -78916,7 +78917,7 @@
 
   <h4>Browser state</h4>
 
-  <pre class="idl">[NoInterfaceObject]
+  <pre class="idl">[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>NavigatorOnLine</dfn> {
   readonly attribute boolean <span data-x="dom-navigator-onLine">onLine</span>;
 };</pre>
@@ -79641,7 +79642,7 @@
 
   <h6>The <code>ErrorEvent</code> interface</h6>
 
-  <pre class="idl">[Constructor(DOMString type, optional <span>ErrorEventInit</span> eventInitDict)]
+  <pre class="idl">[Constructor(DOMString type, optional <span>ErrorEventInit</span> eventInitDict), Exposed=Window,Worker]
 interface <dfn>ErrorEvent</dfn> : <span>Event</span> {
   readonly attribute DOMString <span data-x="dom-ErrorEvent-message">message</span>;
   readonly attribute DOMString <span data-x="dom-ErrorEvent-filename">filename</span>;
@@ -80868,7 +80869,7 @@
 
   <!-- v2: actual binary support -->
 
-  <pre class="idl">[NoInterfaceObject]
+  <pre class="idl">[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>WindowBase64</dfn> {
   DOMString <span data-x="dom-windowbase64-btoa">btoa</span>(DOMString btoa);
   DOMString <span data-x="dom-windowbase64-atob">atob</span>(DOMString atob);
@@ -81576,7 +81577,7 @@
   and <code data-x="dom-windowtimers-setInterval">setInterval()</code>
   methods allow authors to schedule timer-based callbacks.</p>
 
-  <pre class="idl">[NoInterfaceObject]
+  <pre class="idl">[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>WindowTimers</dfn> {
   long <span data-x="dom-windowtimers-setTimeout">setTimeout</span>(<span>Function</span> handler, optional long timeout, any... arguments);
   long <span data-x="dom-windowtimers-setTimeout">setTimeout</span>(DOMString handler, optional long timeout, any... arguments);
@@ -82334,7 +82335,8 @@
 
   </div>
 
-  <pre class="idl">[NoInterfaceObject] interface <dfn>WindowModal</dfn> {
+  <pre class="idl">[NoInterfaceObject]
+interface <dfn>WindowModal</dfn> {
   readonly attribute any <span data-x="dom-WindowModal-dialogArguments">dialogArguments</span>;
            attribute any <span data-x="dom-WindowModal-returnValue">returnValue</span>;
 };</pre>
@@ -82433,7 +82435,7 @@
 
   <h5>Client identification</h5>
 
-  <pre class="idl">[NoInterfaceObject]
+  <pre class="idl">[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>NavigatorID</dfn> {
   readonly attribute DOMString <span data-x="dom-navigator-appCodeName">appCodeName</span>; // constant "Mozilla"
   readonly attribute DOMString <span data-x="dom-navigator-appName">appName</span>;
@@ -82553,7 +82555,7 @@
 
   <h5>Language preferences</h5>
 
-  <pre class="idl">[NoInterfaceObject]
+  <pre class="idl">[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>NavigatorLanguage</dfn> {
   readonly attribute DOMString? <span data-x="dom-navigator-language">language</span>;
 };</pre>
@@ -83861,7 +83863,8 @@
 
   <h3>Images</h3>
 
-  <pre class="idl">interface <dfn>ImageBitmap</dfn> {
+  <pre class="idl">[Exposed=Window,Worker]
+interface <dfn>ImageBitmap</dfn> {
   readonly attribute unsigned long <span data-x="dom-ImageBitmap-width">width</span>;
   readonly attribute unsigned long <span data-x="dom-ImageBitmap-height">height</span>;
 };
@@ -83874,7 +83877,7 @@
          <span>CanvasRenderingContext2D</span> or
          <span>ImageBitmap</span>) <dfn>ImageBitmapSource</dfn>;
 
-[NoInterfaceObject]
+[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>ImageBitmapFactories</dfn> {
   <span>Promise</span> <span data-x="dom-createImageBitmap">createImageBitmap</span>(<span>ImageBitmapSource</span> image, optional long sx, long sy, long sw, long sh);
 };
@@ -88169,13 +88172,14 @@
   <code>MessageEvent</code> interface for their <code data-x="event-message">message</code>
   events:</p>
 
-  <pre class="idl">[Constructor(DOMString type, optional <span>MessageEventInit</span> eventInitDict)]
+  <pre class="idl">[Constructor(DOMString type, optional <span>MessageEventInit</span> eventInitDict), Exposed=Window,Worker]
 interface <dfn>MessageEvent</dfn> : <span>Event</span> {
   readonly attribute any <span data-x="dom-MessageEvent-data">data</span>;
   readonly attribute DOMString <span data-x="dom-MessageEvent-origin">origin</span>;
   readonly attribute DOMString <span data-x="dom-MessageEvent-lastEventId">lastEventId</span>;
   readonly attribute DOMString <span data-x="dom-MessageEvent-channel">channel</span>;
-  readonly attribute (<span>WindowProxy</span> or <span>MessagePort</span>)? <span data-x="dom-MessageEvent-source">source</span>;
+  [Exposed=Window] readonly attribute (<span>WindowProxy</span> or <span>MessagePort</span>)? <span data-x="dom-MessageEvent-source">source</span>;
+  [Exposed=Worker] readonly attribute <span>MessagePort</span>? <span data-x="dom-MessageEvent-source">source</span>;
   readonly attribute <span>MessagePort</span>[]? <span data-x="dom-MessageEvent-ports">ports</span>;
 };
 
@@ -88361,7 +88365,7 @@
 
   <h4>The <code>EventSource</code> interface</h4>
 
-  <pre class="idl">[<span data-x="dom-EventSource">Constructor</span>(DOMString url, optional <span>EventSourceInit</span> eventSourceInitDict)]
+  <pre class="idl">[<span data-x="dom-EventSource">Constructor</span>(DOMString url, optional <span>EventSourceInit</span> eventSourceInitDict), Exposed=Window,Worker]
 interface <dfn>EventSource</dfn> : <span>EventTarget</span> {
   readonly attribute DOMString <span data-x="dom-EventSource-url">url</span>;
   readonly attribute boolean <span data-x="dom-EventSource-withCredentials">withCredentials</span>;
@@ -89249,7 +89253,7 @@
   <h4>The <code>WebSocket</code> interface</h4>
 
   <pre class="idl">enum <dfn>BinaryType</dfn> { "<span data-x="dom-BinaryType-blob">blob</span>", "<span data-x="dom-BinaryType-arraybuffer">arraybuffer</span>" };
-[<span data-x="dom-WebSocket">Constructor</span>(DOMString url, optional (DOMString or DOMString[]) protocols)]
+[<span data-x="dom-WebSocket">Constructor</span>(DOMString url, optional (DOMString or DOMString[]) protocols), Exposed=Window,Worker]
 interface <dfn>WebSocket</dfn> : <span>EventTarget</span> {
   readonly attribute DOMString <span data-x="dom-WebSocket-url">url</span>;
 
@@ -90003,7 +90007,7 @@
 
   <h4>The <code>CloseEvent</code> interfaces</h4>
 
-  <pre class="idl">[Constructor(DOMString type, optional <span>CloseEventInit</span> eventInitDict)]
+  <pre class="idl">[Constructor(DOMString type, optional <span>CloseEventInit</span> eventInitDict), Exposed=Window,Worker]
 interface <dfn>CloseEvent</dfn> : <span>Event</span> {
   readonly attribute boolean <span data-x="dom-CloseEvent-wasClean">wasClean</span>;
   readonly attribute unsigned short <span data-x="dom-CloseEvent-code">code</span>;
@@ -90569,7 +90573,7 @@
 
   <h4>Message channels</h4>
 
-  <pre class="idl">[<span data-x="dom-MessageChannel">Constructor</span>]
+  <pre class="idl">[<span data-x="dom-MessageChannel">Constructor</span>, Exposed=Window,Worker]
 interface <dfn>MessageChannel</dfn> {
   readonly attribute <span>MessagePort</span> <span data-x="dom-channel-port1">port1</span>;
   readonly attribute <span>MessagePort</span> <span data-x="dom-channel-port2">port2</span>;
@@ -90647,7 +90651,8 @@
   <p>Each channel has two message ports. Data sent through one port is received by the other port,
   and vice versa.</p>
 
-  <pre class="idl">interface <dfn>MessagePort</dfn> : <span>EventTarget</span> {
+  <pre class="idl">[Exposed=Window,Worker]
+interface <dfn>MessagePort</dfn> : <span>EventTarget</span> {
   void <span data-x="dom-MessagePort-postMessage">postMessage</span>(any message, optional sequence<<span>Transferable</span>> transfer);<!--
   <span>MessagePort</span> <span data-x="dom-MessagePort-startConversation">startConversation</span>(any message);-->
   void <span data-x="dom-MessagePort-start">start</span>();
@@ -90703,9 +90708,10 @@
   initially be false, and an <dfn data-x="concept-port-owner">owner</dfn>, which is a <span>settings
   object</span> set when the object is created, as described below.</p>
 
+<!--CLEANUP-->
   <p>When a port's <span>port message queue</span> is enabled, the <span>event loop</span> must use
-  it as one of its <span data-x="task source">task sources</span>. All <span
-  data-x="concept-task">tasks</span> <span data-x="queue a task">queued</span> on the <span>port
+  it as one of its <span data-x="task source">task sources</span>. When a port's <span data-x="concept-port-owner">owner</span> specifies a <span>responsible event loop</span> that is a <span>browsing context</span> <span>event loop</span>, all <span
+  data-x="concept-task">tasks</span> <span data-x="queue a task">queued</span> on its <span>port
   message queue</span> must be associated with the <span>responsible document</span> specified by
   the port's <span data-x="concept-port-owner">owner</span>.</p>
 
@@ -90789,19 +90795,23 @@
 
    <li><p>Set <var data-x="">new port</var>'s <span>has been shipped</span> flag to true.</p></li>
 
+<!--CLEANUP-->
    <li><p>Move all the <span data-x="concept-task">tasks</span> that are to fire <code
    data-x="event-message">message</code> events in the <span>port message queue</span> of <var
    data-x="">original port</var> to the <span>port message queue</span> of <var data-x="">new
    port</var>, if any, leaving the <var data-x="">new port</var>'s <span>port message queue</span>
-   in its initial disabled state, and reassociating the moved <span
+   in its initial disabled state, and, if the <var data-x="">new port</var>'s <span data-x="concept-port-owner">owner</span>
+   specifies a <span>responsible event loop</span> that is a <span>browsing context</span> <span>event loop</span>, associating the moved <span
    data-x="concept-task">tasks</span> with the <span>responsible document</span> specified by <var
    data-x="">new port</var>'s <span data-x="concept-port-owner">owner</span>.</p></li>
 
+<!--CLEANUP-->
    <li><p>If <var data-x="">original port</var> is <span>related to an ill-fated port</span>, then
    create a <span data-x="concept-task">task</span> that <span data-x="fire a simple event">fires a
    simple event</span> named <code data-x="event-error">error</code> at the <var data-x="">new
    port</var>, and add the <span data-x="concept-task">task</span> to the <span>port message
-   queue</span> of <var data-x="">new port</var>. The <span data-x="concept-task">task</span> must
+   queue</span> of <var data-x="">new port</var>. If the <var data-x="">new port</var>'s <span data-x="concept-port-owner">owner</span>
+   specifies a <span>responsible event loop</span> that is a <span>browsing context</span> <span>event loop</span>, the <span data-x="concept-task">task</span> must
    be associated with the <span>responsible document</span> specified by <var data-x="">new
    port</var>'s <span data-x="concept-port-owner">owner</span>.</p></li>
 
@@ -91084,10 +91094,12 @@
    <li><p>Mark <var data-x="">target port</var> as being a <dfn>related to an ill-fated
    port</dfn>.</p></li>
 
+<!--CLEANUP-->
    <li><p>Create a <span data-x="concept-task">task</span> that <span data-x="fire a simple
    event">fires a simple event</span> named <code data-x="event-error">error</code> at <var
    data-x="">target port</var>, and add the <span data-x="concept-task">task</span> to the
-   <span>port message queue</span> of <var data-x="">target port</var>. The <span
+   <span>port message queue</span> of <var data-x="">target port</var>. If the <var data-x="">new port</var>'s <span data-x="concept-port-owner">owner</span>
+   specifies a <span>responsible event loop</span> that is a <span>browsing context</span> <span>event loop</span>, the <span
    data-x="concept-task">task</span> must be associated with the <span>responsible document</span>
    specified by <var data-x="">source port</var>'s <span
    data-x="concept-port-owner">owner</span>.</p></li>
@@ -91141,7 +91153,8 @@
   they stop being relevant, while still allowing scripts to iterate over the
   <code>MessagePort</code> objects.</p>
 
-  <pre class="idl">[<span data-x="dom-PortCollection">Constructor</span>] interface <dfn>PortCollection</dfn> {
+  <pre class="idl">[<span data-x="dom-PortCollection">Constructor</span>, Exposed=Window,Worker]
+interface <dfn>PortCollection</dfn> {
   void <span data-x="dom-PortCollection-add">add</span>(<span>MessagePort</span> port);
   void <span data-x="dom-PortCollection-remove">remove</span>(<span>MessagePort</span> port);
   void <span data-x="dom-PortCollection-clear">clear</span>();
@@ -91300,7 +91313,8 @@
   <p>For simple cases, though, where a shared worker would be an unreasonable overhead, authors can
   use the simple channel-based broadcast mechanism described in this section.</p>
 
-  <pre class="idl">[<span data-x="dom-BroadcastChannel">Constructor</span>(DOMString channel)] interface <dfn>BroadcastChannel</dfn> {
+  <pre class="idl">[<span data-x="dom-BroadcastChannel">Constructor</span>(DOMString channel)]
+interface <dfn>BroadcastChannel</dfn> {
   void <span data-x="dom-BroadcastChannel-postMessage">postMessage</span>(DOMString message);
            attribute <span>EventHandler</span> <span data-x="handler-BroadcastChannel-onmessage">onmessage</span>;
 };</pre>
@@ -91914,7 +91928,8 @@
 
   <h5>The <code>WorkerGlobalScope</code> common interface</h5>
 
-  <pre class="idl">interface <dfn>WorkerGlobalScope</dfn> : <span>EventTarget</span> {
+  <pre class="idl">[Exposed=Worker] <!-- not sure we really need that, but... -->
+interface <dfn>WorkerGlobalScope</dfn> : <span>EventTarget</span> {
   readonly attribute <span>WorkerGlobalScope</span> <span data-x="dom-WorkerGlobalScope-self">self</span>;
   readonly attribute <span>WorkerLocation</span> <span data-x="dom-WorkerGlobalScope-location">location</span>;
 
@@ -91976,7 +91991,7 @@
 
   <h5>Dedicated workers and the <code>DedicatedWorkerGlobalScope</code> interface</h5>
 
-  <pre class="idl">[Global]
+  <pre class="idl">[Global=Worker,DedicatedWorker]
 /*sealed*/ interface <dfn>DedicatedWorkerGlobalScope</dfn> : <span>WorkerGlobalScope</span> {
   void <span data-x="dom-DedicatedWorkerGlobalScope-postMessage">postMessage</span>(any message, optional sequence<<span>Transferable</span>> transfer);<!--
   <span>MessagePort</span> <span data-x="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(any message);-->
@@ -92027,7 +92042,7 @@
 
   <h5>Shared workers and the <code>SharedWorkerGlobalScope</code> interface</h5>
 
-  <pre class="idl">[Global]
+  <pre class="idl">[Global=Worker,SharedWorker]
 /*sealed*/ interface <dfn>SharedWorkerGlobalScope</dfn> : <span>WorkerGlobalScope</span> {
   readonly attribute DOMString <span data-x="dom-SharedWorkerGlobalScope-name">name</span>;
   readonly attribute <span>ApplicationCache</span> <span data-x="dom-SharedWorkerGlobalScope-applicationCache">applicationCache</span>;
@@ -92416,7 +92431,7 @@
 
   <h5>The <code>AbstractWorker</code> abstract interface</h5>
 
-  <pre class="idl">[NoInterfaceObject]
+  <pre class="idl">[NoInterfaceObject, Exposed=Window,Worker]
 interface <dfn>AbstractWorker</dfn> {
            attribute <span>EventHandler</span> <span data-x="handler-AbstractWorker-onerror">onerror</span>;
 };</pre>
@@ -92543,7 +92558,7 @@
 
   <h5>Dedicated workers and the <code>Worker</code> interface</h5>
 
-  <pre class="idl">[<span data-x="dom-Worker">Constructor</span>(DOMString scriptURL)]
+  <pre class="idl">[<span data-x="dom-Worker">Constructor</span>(DOMString scriptURL), Exposed=Window,Worker]
 interface <dfn>Worker</dfn> : <span>EventTarget</span> {
   void <span data-x="dom-Worker-terminate">terminate</span>();
 
@@ -92689,7 +92704,7 @@
 
   <h5>Shared workers and the <code>SharedWorker</code> interface</h5>
 
-  <pre class="idl">[<span data-x="dom-SharedWorker">Constructor</span>(DOMString scriptURL, optional DOMString name)]
+  <pre class="idl">[<span data-x="dom-SharedWorker">Constructor</span>(DOMString scriptURL, optional DOMString name), Exposed=Window,Worker]
 interface <dfn>SharedWorker</dfn> : <span>EventTarget</span> {
   readonly attribute <span>MessagePort</span> <span data-x="dom-SharedWorker-port">port</span>;
 };
@@ -92930,7 +92945,8 @@
 
   <h3>APIs available to workers</h3>
 
-  <pre class="idl">partial interface <span id="WorkerGlobalScope-partial">WorkerGlobalScope</span> {<!-- not obsolete -->
+  <pre class="idl">[Exposed=Worker]
+partial interface <span id="WorkerGlobalScope-partial">WorkerGlobalScope</span> {<!-- not obsolete -->
   void <span data-x="dom-WorkerGlobalScope-importScripts">importScripts</span>(DOMString... urls);
   readonly attribute <span>WorkerNavigator</span> <span data-x="dom-worker-navigator">navigator</span>;
 };
@@ -93040,7 +93056,8 @@
   the <code>WorkerNavigator</code> interface, which represents the
   identity and state of the user agent (the client):</p>
 
-  <pre class="idl">interface <dfn>WorkerNavigator</dfn> {};
+  <pre class="idl">[Exposed=Worker]
+interface <dfn>WorkerNavigator</dfn> {};
 <span>WorkerNavigator</span> implements <span>NavigatorID</span>;
 <span>WorkerNavigator</span> implements <span>NavigatorLanguage</span>;
 <span>WorkerNavigator</span> implements <span>NavigatorOnLine</span>;</pre>
@@ -93076,7 +93093,8 @@
 
   <h4>Worker locations</h4>
 
-  <pre class="idl">interface <dfn>WorkerLocation</dfn> { };
+  <pre class="idl">[Exposed=Worker]
+interface <dfn>WorkerLocation</dfn> { };
 <span>WorkerLocation</span> implements <span>URLUtilsReadOnly</span>;</pre>
 
   <p>A <code>WorkerLocation</code> object represents an <span>absolute URL</span> set at its




More information about the Commit-Watchers mailing list