HTML5 Tracker

Diff (omit for latest revision)
Filter

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

SVNBugCommentTime (UTC)
708416157[Gecko] [Internet Explorer] [Opera] [Webkit] Make WebSocket silently convert isolated surrogated to U+FFFD rather than throwing an exception. This will result in data corruption when a user types in astral-plane characters that get truncated by naiive script half-way through, rather than crashing the application.2012-05-02 20:06
Index: source
===================================================================
--- source	(revision 7083)
+++ source	(revision 7084)
@@ -2945,7 +2945,10 @@
     <dfn>supported property names</dfn>, <dfn>determine the value of a
     named property</dfn>, <dfn>platform array objects</dfn>, and <dfn
     title="dfn-read-only-array">read only</dfn> (when applied to
-    arrays) are used as defined in the Web IDL specification.</p>
+    arrays) are used as defined in the Web IDL specification. The
+    algorithm to <dfn>convert a DOMString to a sequence of Unicode
+    characters</dfn> is similarly that defined in the Web IDL
+    specification.</p>
 
     <p id="float-nan">Except where otherwise specified, if an IDL
     attribute that is a floating point number type (<code
@@ -94491,16 +94494,32 @@
    <code>InvalidAccessError</code> exception and abort these
    steps.</p></li>
 
-   <li><p>If the method's second argument has any isolated surrogates,
-   then throw a <code>SyntaxError</code> exception and abort these
-   steps. <a href="#refsUNICODE">[UNICODE]</a></p></li>
+   <li>
 
-   <li><p>If the method's second argument is present, then let <var
-   title="">reason</var> be the result of encoding that argument as
-   UTF-8. If <var title="">reason</var> is longer than 123 bytes, then
-   throw a <code>SyntaxError</code> exception and abort these steps.
-   <a href="#refsRFC3629">[RFC3629]</a></p></li>
+    <p>If the method's second argument is present, then run these
+    substeps:</p>
 
+    <ol>
+
+     <li><p>Let <var title="">raw reason</var> be the method's second
+     argument.</p></li>
+
+     <li><p>Let <var title="">Unicode reason</var> be the result of
+     <span title="convert a DOMString to a sequence of Unicode
+     characters">converting <var title="">raw reason</var> to a
+     sequence of Unicode characters</span>.</p></li>
+
+     <li><p>Let <var title="">reason</var> be the result of encoding
+     <var title="">Unicode reason</var> as UTF-8.</p></li>
+
+     <li><p>If <var title="">reason</var> is longer than 123 bytes,
+     then throw a <code>SyntaxError</code> exception and abort these
+     steps. <a href="#refsRFC3629">[RFC3629]</a></p></li>
+
+    </ol>
+
+   </li>
+
    <li><p>Run the first matching steps from the following list:</p>
 
     <dl class="switch">
@@ -94687,10 +94706,11 @@
 
    <dd>
 
-    <p>If the <var title="">data</var> argument has any isolated
-    surrogates, then throw a <code>SyntaxError</code> exception. If
-    <i>the WebSocket connection is established</i>, and the string has
-    no isolated surrogates, and <i title="the WebSocket closing
+    <p>Let <var title="">data</var> be the result of <span
+    title="convert a DOMString to a sequence of Unicode
+    characters">converting the <var title="">data</var> argument to a
+    sequence of Unicode characters</span>. If <i>the WebSocket
+    connection is established</i> and <i title="the WebSocket closing
     handshake is started">the WebSocket closing handshake has not yet
     started</i>, then the user agent must <i>send a WebSocket
     Message</i> comprised of <var title="">data</var> using a text

|