HTML5 Tracker

Diff (omit for latest revision)
Filter

Short URL: http://html5.org/r/6263

SVNBugCommentTime (UTC)
626312067[Gecko] [Internet Explorer] [Opera] [Webkit] Make worker errors propagate all the way up to the Document, hitting the global scope .onerror each step of the way. This isn't a great way to specify it but I couldn't work out a cleaner way that didn't involve major (potentially risky) surgery and inventing new terms. If it turns out that there are other things that'd need the parent/child infrastructure to be better defined I'll do it then.2011-06-21 21:20
Index: source
===================================================================
--- source	(revision 6262)
+++ source	(revision 6263)
@@ -88395,27 +88395,34 @@
   <p>For dedicated workers, if the error is still <i
   title="concept-error-nothandled">not handled</i> afterwards, or if
   the error occurred while handling a previous script error, the user
-  agent must <span>queue a task</span> to <span>fire a worker error
-  event</span> at the <code>Worker</code> object associated with the
-  worker.</p>
-
-  <p>When the user agent is to <dfn>fire a worker error event</dfn> at
-  a <code>Worker</code> object, it must create and dispatch an event
-  that uses the <code>ErrorEvent</code> interface, with the name <code
+  agent must <span>queue a task</span> to fire an event that uses the
+  <code>ErrorEvent</code> interface, with the name <code
   title="event-error">error</code>, that doesn't bubble and is
   cancelable, with its <code
   title="dom-ErrorEvent-message">message</code>, <code
   title="dom-ErrorEvent-filename">filename</code>, and <code
   title="dom-ErrorEvent-lineno">lineno</code> attributes set
-  appropriately. The default action of this event depends on whether
-  the <code>Worker</code> object is itself in a worker. If it is, and
-  that worker is also a dedicated worker, then the user agent must
-  again <span>queue a task</span> to <span>fire a worker error
-  event</span> at the <code>Worker</code> object associated with
-  <em>that</em> worker. Otherwise, then the error may be reported to
-  the user.</p>
+  appropriately, at the <code>Worker</code> object associated with the
+  worker. If the event is not canceled, the user agent must act as if the
+  uncaught runtime script error had occurred in the global scope that
+  the <code>Worker</code> object is in, thus repeating the entire
+  runtime script error reporting process one level up.</p>
 
-  <p>The <span>task source</span> for the tasks mentioned above is the
+  <p>If the implicit port connecting the worker to its
+  <code>Worker</code> object has been disentangled (i.e. if the parent
+  worker has been terminated), then the user agent must act as if the
+  <code>Worker</code> object had no <code
+  title="event-error">error</code> event handler and as if that
+  worker's <code
+  title="handler-WorkerGlobalScope-onerror">onerror</code> attribute
+  was null, but must otherwise act as described above.</p>
+
+  <p class="note">Thus, error reports proagate up to the chain of
+  dedicated workers up to the original <code>Document</code>, even if
+  some of the workers along this chain have been terminated and
+  garbage collected.</p>
+
+  <p>The <span>task source</span> for the task mentioned above is the
   <span>DOM manipulation task source</span>.</p>
 
   <hr>
@@ -89139,6 +89146,8 @@
   interface's <span>relevant namespace object</span> is a
   <code>Window</code> object. <a href="#refsWEBIDL">[WEBIDL]</a></p>
 
+
+
 <!--END workers-->
 <!--END whatwg-workers-->
 

|