<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[204215] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/204215">204215</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-08-05 19:32:04 -0700 (Fri, 05 Aug 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Web IDL] Add support for USVString type
https://bugs.webkit.org/show_bug.cgi?id=160608

Reviewed by Sam Weinig.

Source/WebCore:

Add support for USVString type in our bindings generator:
- http://heycam.github.io/webidl/#idl-USVString

Also start using USVString instead of DOMString when suitable as per
the following specifications:
- http://dom.spec.whatwg.org
- http://html.spec.whatwg.org
- http://url.spec.whatwg.org

Test: js/dom/webidl-type-mapping.html

* Modules/websockets/CloseEvent.idl:
* Modules/websockets/WebSocket.idl:
* bindings/js/JSDOMBinding.cpp:
(WebCore::isUnmatchedSurrogatePair):
(WebCore::valueToUSVString):
(WebCore::valueToUSVStringTreatingNullAsEmptyString):
(WebCore::valueToUSVStringWithUndefinedOrNullCheck):
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::open):
(WebCore::handlePostMessage):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):
* bindings/js/JSMessageEventCustom.cpp:
(WebCore::handleInitMessageEvent):
* bindings/js/JSWorkerGlobalScopeCustom.cpp:
(WebCore::JSWorkerGlobalScope::importScripts):
* bindings/scripts/CodeGenerator.pm:
(SkipIncludeHeader):
(IsStringOrEnumType):
(IsStringType):
(IsRefPtrType):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheck):
(JSValueToNative):
(NativeToJSValue):
* bindings/scripts/IDLParser.pm:
(parseNonAnyType):
* dom/Document.idl:
* dom/ErrorEvent.idl:
* dom/HashChangeEvent.idl:
* dom/MessageEvent.idl:
* dom/Node.idl:
* html/DOMFormData.idl:
* html/DOMURL.idl:
* html/HTMLAnchorElement.idl:
* html/HTMLAppletElement.idl:
* html/HTMLAreaElement.idl:
* html/HTMLBaseElement.idl:
* html/HTMLButtonElement.idl:
* html/HTMLEmbedElement.idl:
* html/HTMLFormElement.idl:
* html/HTMLFrameElement.idl:
* html/HTMLHyperlinkElementUtils.idl:
* html/HTMLIFrameElement.idl:
* html/HTMLImageElement.idl:
* html/HTMLInputElement.idl:
* html/HTMLLinkElement.idl:
* html/HTMLMediaElement.idl:
* html/HTMLModElement.idl:
* html/HTMLObjectElement.idl:
* html/HTMLQuoteElement.idl:
* html/HTMLScriptElement.idl:
* html/HTMLSourceElement.idl:
* html/HTMLTrackElement.idl:
* html/HTMLVideoElement.idl:
* html/URLUtils.idl:
* page/DOMWindow.idl:
* page/EventSource.idl:
* page/History.idl:
* page/Location.idl:
* storage/StorageEvent.idl:
* testing/TypeConversions.h:
(WebCore::TypeConversions::testString):
(WebCore::TypeConversions::setTestString):
(WebCore::TypeConversions::testUSVString):
(WebCore::TypeConversions::setTestUSVString):
* testing/TypeConversions.idl:
* workers/Worker.idl:
* workers/WorkerGlobalScope.idl:

LayoutTests:

Add layout test coverage for USVString.

* js/dom/webidl-type-mapping-expected.txt:
* js/dom/webidl-type-mapping.html:
This test is based on the corresponding one from Blink.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsjsdomwebidltypemappingexpectedtxt">trunk/LayoutTests/js/dom/webidl-type-mapping-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsdomwebidltypemappinghtml">trunk/LayoutTests/js/dom/webidl-type-mapping.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsCloseEventidl">trunk/Source/WebCore/Modules/websockets/CloseEvent.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketidl">trunk/Source/WebCore/Modules/websockets/WebSocket.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHistoryCustomcpp">trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMessageEventCustomcpp">trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeCustomcpp">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorpm">trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsIDLParserpm">trunk/Source/WebCore/bindings/scripts/IDLParser.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctionh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#trunkSourceWebCoredomErrorEventidl">trunk/Source/WebCore/dom/ErrorEvent.idl</a></li>
<li><a href="#trunkSourceWebCoredomHashChangeEventidl">trunk/Source/WebCore/dom/HashChangeEvent.idl</a></li>
<li><a href="#trunkSourceWebCoredomMessageEventidl">trunk/Source/WebCore/dom/MessageEvent.idl</a></li>
<li><a href="#trunkSourceWebCoredomNodeidl">trunk/Source/WebCore/dom/Node.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMFormDataidl">trunk/Source/WebCore/html/DOMFormData.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLidl">trunk/Source/WebCore/html/DOMURL.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAnchorElementidl">trunk/Source/WebCore/html/HTMLAnchorElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAppletElementidl">trunk/Source/WebCore/html/HTMLAppletElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAreaElementidl">trunk/Source/WebCore/html/HTMLAreaElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBaseElementidl">trunk/Source/WebCore/html/HTMLBaseElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLButtonElementidl">trunk/Source/WebCore/html/HTMLButtonElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLEmbedElementidl">trunk/Source/WebCore/html/HTMLEmbedElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormElementidl">trunk/Source/WebCore/html/HTMLFormElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementidl">trunk/Source/WebCore/html/HTMLFrameElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLHyperlinkElementUtilsidl">trunk/Source/WebCore/html/HTMLHyperlinkElementUtils.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLIFrameElementidl">trunk/Source/WebCore/html/HTMLIFrameElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLImageElementidl">trunk/Source/WebCore/html/HTMLImageElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementidl">trunk/Source/WebCore/html/HTMLInputElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementidl">trunk/Source/WebCore/html/HTMLLinkElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementidl">trunk/Source/WebCore/html/HTMLMediaElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLModElementidl">trunk/Source/WebCore/html/HTMLModElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementidl">trunk/Source/WebCore/html/HTMLObjectElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLQuoteElementidl">trunk/Source/WebCore/html/HTMLQuoteElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLScriptElementidl">trunk/Source/WebCore/html/HTMLScriptElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSourceElementidl">trunk/Source/WebCore/html/HTMLSourceElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTrackElementidl">trunk/Source/WebCore/html/HTMLTrackElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementidl">trunk/Source/WebCore/html/HTMLVideoElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlURLUtilsidl">trunk/Source/WebCore/html/URLUtils.idl</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowidl">trunk/Source/WebCore/page/DOMWindow.idl</a></li>
<li><a href="#trunkSourceWebCorepageEventSourceidl">trunk/Source/WebCore/page/EventSource.idl</a></li>
<li><a href="#trunkSourceWebCorepageHistoryidl">trunk/Source/WebCore/page/History.idl</a></li>
<li><a href="#trunkSourceWebCorepageLocationidl">trunk/Source/WebCore/page/Location.idl</a></li>
<li><a href="#trunkSourceWebCorestorageStorageEventidl">trunk/Source/WebCore/storage/StorageEvent.idl</a></li>
<li><a href="#trunkSourceWebCoretestingTypeConversionsh">trunk/Source/WebCore/testing/TypeConversions.h</a></li>
<li><a href="#trunkSourceWebCoretestingTypeConversionsidl">trunk/Source/WebCore/testing/TypeConversions.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkeridl">trunk/Source/WebCore/workers/Worker.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopeidl">trunk/Source/WebCore/workers/WorkerGlobalScope.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/LayoutTests/ChangeLog        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-08-05  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [Web IDL] Add support for USVString type
+        https://bugs.webkit.org/show_bug.cgi?id=160608
+
+        Reviewed by Sam Weinig.
+
+        Add layout test coverage for USVString.
+
+        * js/dom/webidl-type-mapping-expected.txt:
+        * js/dom/webidl-type-mapping.html:
+        This test is based on the corresponding one from Blink.
+
</ins><span class="cx"> 2016-08-05  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add back a newline that was accidentally removed from an expected.txt file.
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomwebidltypemappingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/webidl-type-mapping-expected.txt (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/webidl-type-mapping-expected.txt        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/LayoutTests/js/dom/webidl-type-mapping-expected.txt        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -1007,6 +1007,58 @@
</span><span class="cx"> PASS converter.testEnforceRangeUnsignedShort = undefined threw exception TypeError: Value NaN is outside the range [0, 65535].
</span><span class="cx"> PASS converter.testEnforceRangeUnsignedShort = {valueOf:function(){throw new Error('custom');}} threw exception Error: custom.
</span><span class="cx"> 
</span><ins>+converter.testUSVString = '!@#123ABCabc\x00\x80\xFF\r\n\t'
+converter.testString = '!@#123ABCabc\x00\x80\xFF\r\n\t'
+PASS converter.testUSVString is &quot;!@#123ABCabc\u0000€ÿ\r\n\t&quot;
+PASS converter.testString is &quot;!@#123ABCabc\u0000€ÿ\r\n\t&quot;
+converter.testUSVString = '\u0100'
+converter.testString = '\u0100'
+PASS converter.testUSVString is &quot;Ā&quot;
+PASS converter.testString is &quot;Ā&quot;
+PASS converter.testUSVString = {toString: function() { throw Error(); }} threw exception Error.
+PASS converter.testString = {toString: function() { throw Error(); }} threw exception Error.
+PASS converter.testUSVString is &quot;Ā&quot;
+PASS converter.testString is &quot;Ā&quot;
+converter.testUSVString = &quot;í €&quot;
+converter.testString = &quot;í €&quot;
+PASS converter.testUSVString is &quot;�&quot;
+PASS converter.testString is &quot;í €&quot;
+converter.testUSVString = &quot;í°€&quot;
+converter.testString = &quot;í°€&quot;
+PASS converter.testUSVString is &quot;�&quot;
+PASS converter.testString is &quot;í°€&quot;
+converter.testUSVString = &quot;í €\u0000&quot;
+converter.testString = &quot;í €\u0000&quot;
+PASS converter.testUSVString is &quot;�\u0000&quot;
+PASS converter.testString is &quot;í €\u0000&quot;
+converter.testUSVString = &quot;í°€\u0000&quot;
+converter.testString = &quot;í°€\u0000&quot;
+PASS converter.testUSVString is &quot;�\u0000&quot;
+PASS converter.testString is &quot;í°€\u0000&quot;
+converter.testUSVString = &quot;í°€í €&quot;
+converter.testString = &quot;í°€í €&quot;
+PASS converter.testUSVString is &quot;��&quot;
+PASS converter.testString is &quot;í°€í €&quot;
+converter.testUSVString = &quot;𝄞&quot;
+converter.testString = &quot;𝄞&quot;
+PASS converter.testUSVString is &quot;𝄞&quot;
+PASS converter.testString is &quot;𝄞&quot;
+converter.testUSVString = true
+converter.testString = true
+PASS converter.testUSVString is &quot;true&quot;
+PASS converter.testString is &quot;true&quot;
+converter.testUSVString = 123
+converter.testString = 123
+PASS converter.testUSVString is &quot;123&quot;
+PASS converter.testString is &quot;123&quot;
+converter.testUSVString = null
+converter.testString = null
+PASS converter.testUSVString is &quot;null&quot;
+PASS converter.testString is &quot;null&quot;
+converter.testUSVString = undefined
+converter.testString = undefined
+PASS converter.testUSVString is &quot;undefined&quot;
+PASS converter.testString is &quot;undefined&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomwebidltypemappinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/webidl-type-mapping.html (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/webidl-type-mapping.html        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/LayoutTests/js/dom/webidl-type-mapping.html        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -555,5 +555,36 @@
</span><span class="cx"> convertThrows(type, &quot;{valueOf:function(){throw new Error('custom');}}&quot;);
</span><span class="cx"> debug(&quot;&quot;);
</span><span class="cx"> 
</span><ins>+evalAndLog(&quot;converter.testUSVString = '!@#123ABCabc\\x00\\x80\\xFF\\r\\n\\t'&quot;);
+evalAndLog(&quot;converter.testString = '!@#123ABCabc\\x00\\x80\\xFF\\r\\n\\t'&quot;);
+shouldBeEqualToString(&quot;converter.testUSVString&quot;, &quot;!@#123ABCabc\x00\x80\xFF\r\n\t&quot;);
+shouldBeEqualToString(&quot;converter.testString&quot;, &quot;!@#123ABCabc\x00\x80\xFF\r\n\t&quot;);
+evalAndLog(&quot;converter.testUSVString = '\\u0100'&quot;);
+evalAndLog(&quot;converter.testString = '\\u0100'&quot;)
+shouldBeEqualToString(&quot;converter.testUSVString&quot;, &quot;\u0100&quot;);
+shouldBeEqualToString(&quot;converter.testString&quot;, &quot;\u0100&quot;);
+shouldThrow(&quot;converter.testUSVString = {toString: function() { throw Error(); }}&quot;);
+shouldThrow(&quot;converter.testString = {toString: function() { throw Error(); }}&quot;);
+shouldBeEqualToString(&quot;converter.testUSVString&quot;, &quot;\u0100&quot;);
+shouldBeEqualToString(&quot;converter.testString&quot;, &quot;\u0100&quot;);
+[{input: &quot;\uD800&quot;, expected: &quot;\uFFFD&quot;},
+ {input: &quot;\uDC00&quot;, expected: &quot;\uFFFD&quot;},
+ {input: &quot;\uD800\u0000&quot;, expected: &quot;\uFFFD\u0000&quot;},
+ {input: &quot;\uDC00\u0000&quot;, expected: &quot;\uFFFD\u0000&quot;},
+ {input: &quot;\uDC00\uD800&quot;, expected: &quot;\uFFFD\uFFFD&quot;},
+ {input: &quot;\uD834\uDD1E&quot;, expected: &quot;\uD834\uDD1E&quot;},
+].forEach(function(test) {
+    evalAndLog(&quot;converter.testUSVString = &quot; + JSON.stringify(test.input));
+    evalAndLog(&quot;converter.testString = &quot; + JSON.stringify(test.input));
+    shouldBeEqualToString(&quot;converter.testUSVString&quot;, test.expected);
+    shouldBeEqualToString(&quot;converter.testString&quot;, test.input);
+});
+[&quot;true&quot;, &quot;123&quot;, &quot;null&quot;, &quot;undefined&quot;].forEach(function(value) {
+    evalAndLog(&quot;converter.testUSVString = &quot; + value);
+    evalAndLog(&quot;converter.testString = &quot; + value);
+    shouldBeEqualToString(&quot;converter.testUSVString&quot;, value);
+    shouldBeEqualToString(&quot;converter.testString&quot;, value);
+});
+
</ins><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/ChangeLog        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -1,3 +1,93 @@
</span><ins>+2016-08-05  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [Web IDL] Add support for USVString type
+        https://bugs.webkit.org/show_bug.cgi?id=160608
+
+        Reviewed by Sam Weinig.
+
+        Add support for USVString type in our bindings generator:
+        - http://heycam.github.io/webidl/#idl-USVString
+
+        Also start using USVString instead of DOMString when suitable as per
+        the following specifications:
+        - http://dom.spec.whatwg.org
+        - http://html.spec.whatwg.org
+        - http://url.spec.whatwg.org
+
+        Test: js/dom/webidl-type-mapping.html
+
+        * Modules/websockets/CloseEvent.idl:
+        * Modules/websockets/WebSocket.idl:
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::isUnmatchedSurrogatePair):
+        (WebCore::valueToUSVString):
+        (WebCore::valueToUSVStringTreatingNullAsEmptyString):
+        (WebCore::valueToUSVStringWithUndefinedOrNullCheck):
+        * bindings/js/JSDOMBinding.h:
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::JSDOMWindow::open):
+        (WebCore::handlePostMessage):
+        * bindings/js/JSHistoryCustom.cpp:
+        (WebCore::JSHistory::pushState):
+        (WebCore::JSHistory::replaceState):
+        * bindings/js/JSMessageEventCustom.cpp:
+        (WebCore::handleInitMessageEvent):
+        * bindings/js/JSWorkerGlobalScopeCustom.cpp:
+        (WebCore::JSWorkerGlobalScope::importScripts):
+        * bindings/scripts/CodeGenerator.pm:
+        (SkipIncludeHeader):
+        (IsStringOrEnumType):
+        (IsStringType):
+        (IsRefPtrType):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateParametersCheck):
+        (JSValueToNative):
+        (NativeToJSValue):
+        * bindings/scripts/IDLParser.pm:
+        (parseNonAnyType):
+        * dom/Document.idl:
+        * dom/ErrorEvent.idl:
+        * dom/HashChangeEvent.idl:
+        * dom/MessageEvent.idl:
+        * dom/Node.idl:
+        * html/DOMFormData.idl:
+        * html/DOMURL.idl:
+        * html/HTMLAnchorElement.idl:
+        * html/HTMLAppletElement.idl:
+        * html/HTMLAreaElement.idl:
+        * html/HTMLBaseElement.idl:
+        * html/HTMLButtonElement.idl:
+        * html/HTMLEmbedElement.idl:
+        * html/HTMLFormElement.idl:
+        * html/HTMLFrameElement.idl:
+        * html/HTMLHyperlinkElementUtils.idl:
+        * html/HTMLIFrameElement.idl:
+        * html/HTMLImageElement.idl:
+        * html/HTMLInputElement.idl:
+        * html/HTMLLinkElement.idl:
+        * html/HTMLMediaElement.idl:
+        * html/HTMLModElement.idl:
+        * html/HTMLObjectElement.idl:
+        * html/HTMLQuoteElement.idl:
+        * html/HTMLScriptElement.idl:
+        * html/HTMLSourceElement.idl:
+        * html/HTMLTrackElement.idl:
+        * html/HTMLVideoElement.idl:
+        * html/URLUtils.idl:
+        * page/DOMWindow.idl:
+        * page/EventSource.idl:
+        * page/History.idl:
+        * page/Location.idl:
+        * storage/StorageEvent.idl:
+        * testing/TypeConversions.h:
+        (WebCore::TypeConversions::testString):
+        (WebCore::TypeConversions::setTestString):
+        (WebCore::TypeConversions::testUSVString):
+        (WebCore::TypeConversions::setTestUSVString):
+        * testing/TypeConversions.idl:
+        * workers/Worker.idl:
+        * workers/WorkerGlobalScope.idl:
+
</ins><span class="cx"> 2016-08-05  Jeremy Jones  &lt;jeremyj@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         revert r202466 r202546 this causes regressions in media loading with temporary redirects.
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsCloseEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/CloseEvent.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/CloseEvent.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/Modules/websockets/CloseEvent.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -33,6 +33,6 @@
</span><span class="cx"> ] interface CloseEvent : Event {
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute boolean wasClean;
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute unsigned short code;
</span><del>-    [InitializedByEventConstructor] readonly attribute DOMString reason;
</del><ins>+    [InitializedByEventConstructor] readonly attribute USVString reason;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -32,15 +32,15 @@
</span><span class="cx"> [
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     Conditional=WEB_SOCKETS,
</span><del>-    Constructor(DOMString url, optional sequence&lt;DOMString&gt; protocols = []),
-    Constructor(DOMString url, DOMString protocol),
</del><ins>+    Constructor(USVString url, optional sequence&lt;DOMString&gt; protocols = []),
+    Constructor(USVString url, DOMString protocol),
</ins><span class="cx">     ConstructorRaisesException,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     EnabledAtRuntime,
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx"> ] interface WebSocket : EventTarget {
</span><del>-    readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
-    readonly attribute DOMString url;
</del><ins>+    readonly attribute USVString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
+    readonly attribute USVString url;
</ins><span class="cx"> 
</span><span class="cx">     // ready state
</span><span class="cx">     const unsigned short CONNECTING = 0;
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     [RaisesException] void send(ArrayBuffer data);
</span><span class="cx">     [RaisesException] void send(ArrayBufferView data);
</span><span class="cx">     [RaisesException] void send(Blob data);
</span><del>-    [RaisesException] void send(DOMString data);
</del><ins>+    [RaisesException] void send(USVString data);
</ins><span class="cx"> 
</span><span class="cx">     [RaisesException] void close([Clamp] optional unsigned short code, optional DOMString reason);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -49,6 +49,7 @@
</span><span class="cx"> #include &lt;runtime/JSFunction.h&gt;
</span><span class="cx"> #include &lt;stdarg.h&gt;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><ins>+#include &lt;wtf/unicode/CharacterNames.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> using namespace Inspector;
</span><span class="lines">@@ -117,6 +118,57 @@
</span><span class="cx">     return value.toString(exec)-&gt;value(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline bool isUnmatchedSurrogatePair(UChar c)
+{
+    return c &gt;= 0xD800 || c &lt;= 0xDFFF;
+}
+
+String valueToUSVString(ExecState* exec, JSValue value)
+{
+    String s = value.toWTFString(exec);
+    if (exec-&gt;hadException())
+        return String();
+
+    // Fast path if there is no unmatched surrogate pair.
+    if (s.find(isUnmatchedSurrogatePair) == notFound)
+        return s;
+
+    // Slow path: http://heycam.github.io/webidl/#dfn-obtain-unicode
+    unsigned n = s.length();
+    StringBuilder result;
+    result.reserveCapacity(n);
+    for (unsigned i = 0; i &lt; n; ++i) {
+        UChar c = s[i];
+        if (c &lt; 0xD800 || c &gt; 0xDFFF)
+            result.append(c);
+        if (c &gt;= 0xDC00 &amp;&amp; c &lt;= 0xDFFF)
+            result.append(replacementCharacter);
+        if (c &gt;= 0xD800 &amp;&amp; c &lt;= 0xDBFF) {
+            if (i == n - 1)
+                result.append(replacementCharacter);
+            else {
+                UChar d = s[i + 1];
+                if (d &gt;= 0xDC00 &amp;&amp; d &lt;= 0xDFFF) {
+                    result.append(U16_GET_SUPPLEMENTARY(c, d));
+                    ++i;
+                } else
+                    result.append(replacementCharacter);
+            }
+        }
+    }
+    return result.toString();
+}
+
+String valueToUSVStringTreatingNullAsEmptyString(ExecState* exec, JSValue value)
+{
+    return value.isNull() ? emptyString() : valueToUSVString(exec, value);
+}
+
+String valueToUSVStringWithUndefinedOrNullCheck(ExecState* exec, JSValue value)
+{
+    return value.isUndefinedOrNull() ? String() : valueToUSVString(exec, value);
+}
+
</ins><span class="cx"> JSValue jsDateOrNaN(ExecState* exec, double value)
</span><span class="cx"> {
</span><span class="cx">     if (std::isnan(value))
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -202,6 +202,10 @@
</span><span class="cx"> String valueToStringTreatingNullAsEmptyString(JSC::ExecState*, JSC::JSValue);
</span><span class="cx"> String valueToStringWithUndefinedOrNullCheck(JSC::ExecState*, JSC::JSValue); // null if the value is null or undefined
</span><span class="cx"> 
</span><ins>+WEBCORE_EXPORT String valueToUSVString(JSC::ExecState*, JSC::JSValue);
+String valueToUSVStringTreatingNullAsEmptyString(JSC::ExecState*, JSC::JSValue);
+String valueToUSVStringWithUndefinedOrNullCheck(JSC::ExecState*, JSC::JSValue);
+
</ins><span class="cx"> template&lt;typename T&gt; JSC::JSValue toNullableJSNumber(Optional&lt;T&gt;); // null if the optional is null
</span><span class="cx"> 
</span><span class="cx"> int32_t finiteInt32Value(JSC::JSValue, JSC::ExecState*, bool&amp; okay);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -383,7 +383,7 @@
</span><span class="cx"> 
</span><span class="cx"> JSValue JSDOMWindow::open(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    String urlString = valueToStringWithUndefinedOrNullCheck(&amp;state, state.argument(0));
</del><ins>+    String urlString = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.argument(0));
</ins><span class="cx">     if (state.hadException())
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     JSValue targetValue = state.argument(1);
</span><span class="lines">@@ -490,7 +490,7 @@
</span><span class="cx">     if (state.hadException())
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    String targetOrigin = valueToStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(targetOriginArgIndex));
</del><ins>+    String targetOrigin = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(targetOriginArgIndex));
</ins><span class="cx">     if (state.hadException())
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHistoryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx"> 
</span><span class="cx">     String url;
</span><span class="cx">     if (argCount &gt; 2) {
</span><del>-        url = valueToStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(2));
</del><ins>+        url = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(2));
</ins><span class="cx">         if (state.hadException())
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx"> 
</span><span class="cx">     String url;
</span><span class="cx">     if (argCount &gt; 2) {
</span><del>-        url = valueToStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(2));
</del><ins>+        url = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(2));
</ins><span class="cx">         if (state.hadException())
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMessageEventCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">     const String&amp; typeArg = state.argument(0).toString(&amp;state)-&gt;value(&amp;state);
</span><span class="cx">     bool canBubbleArg = state.argument(1).toBoolean(&amp;state);
</span><span class="cx">     bool cancelableArg = state.argument(2).toBoolean(&amp;state);
</span><del>-    const String originArg = state.argument(4).toString(&amp;state)-&gt;value(&amp;state);
</del><ins>+    const String originArg = valueToUSVString(&amp;state, state.argument(4));
</ins><span class="cx">     const String lastEventIdArg = state.argument(5).toString(&amp;state)-&gt;value(&amp;state);
</span><span class="cx">     DOMWindow* sourceArg = JSDOMWindow::toWrapped(state, state.argument(6));
</span><span class="cx">     std::unique_ptr&lt;MessagePortArray&gt; messagePorts;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;String&gt; urls;
</span><span class="cx">     for (unsigned i = 0; i &lt; state.argumentCount(); ++i) {
</span><del>-        urls.append(state.uncheckedArgument(i).toString(&amp;state)-&gt;value(&amp;state));
</del><ins>+        urls.append(valueToUSVString(&amp;state, state.uncheckedArgument(i)));
</ins><span class="cx">         if (state.hadException())
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -332,7 +332,7 @@
</span><span class="cx">     return 1 if $object-&gt;IsPrimitiveType($type);
</span><span class="cx">     return 1 if $object-&gt;IsTypedArrayType($type);
</span><span class="cx">     return 1 if $type eq &quot;Array&quot;;
</span><del>-    return 1 if $type eq &quot;DOMString&quot;;
</del><ins>+    return 1 if $type eq &quot;DOMString&quot; or $type eq &quot;USVString&quot;;
</ins><span class="cx">     return 1 if $type eq &quot;DOMTimeStamp&quot;;
</span><span class="cx">     return 1 if $type eq &quot;SVGNumber&quot;;
</span><span class="cx">     return 1 if $type eq &quot;any&quot;;
</span><span class="lines">@@ -362,7 +362,7 @@
</span><span class="cx"> {
</span><span class="cx">     my ($object, $type) = @_;
</span><span class="cx">     
</span><del>-    return 1 if $type eq &quot;DOMString&quot;;
</del><ins>+    return 1 if $type eq &quot;DOMString&quot; or $type eq &quot;USVString&quot;;
</ins><span class="cx">     return 1 if $object-&gt;IsEnumType($type);
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="lines">@@ -392,7 +392,6 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# Deprecated: Just check for &quot;DOMString&quot; instead.
</del><span class="cx"> # Currently used outside WebKit in an internal Apple project; can be removed soon.
</span><span class="cx"> sub IsStringType
</span><span class="cx"> {
</span><span class="lines">@@ -399,7 +398,9 @@
</span><span class="cx">     my $object = shift;
</span><span class="cx">     my $type = shift;
</span><span class="cx"> 
</span><del>-    return $type eq &quot;DOMString&quot;;
</del><ins>+    return 1 if $type eq &quot;DOMString&quot;;
+    return 1 if $type eq &quot;USVString&quot;;
+    return 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub IsEnumType
</span><span class="lines">@@ -471,7 +472,7 @@
</span><span class="cx">     return 0 if $object-&gt;IsDictionaryType($type);
</span><span class="cx">     return 0 if $object-&gt;IsEnumType($type);
</span><span class="cx">     return 0 if $object-&gt;GetArrayOrSequenceType($type);
</span><del>-    return 0 if $type eq &quot;DOMString&quot;;
</del><ins>+    return 0 if $type eq &quot;DOMString&quot; or $type eq &quot;USVString&quot;;
</ins><span class="cx">     return 0 if $type eq &quot;any&quot;;
</span><span class="cx"> 
</span><span class="cx">     return 1;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -391,6 +391,7 @@
</span><span class="cx">     my $type = shift;
</span><span class="cx"> 
</span><span class="cx">     my %types = (&quot;DOMString&quot;, &quot;string&quot;,
</span><ins>+                 &quot;USVString&quot;, &quot;string&quot;,
</ins><span class="cx">                  &quot;DOMTimeStamp&quot;, &quot;uint&quot;,
</span><span class="cx">                  &quot;float&quot;, &quot;float&quot;,
</span><span class="cx">                  &quot;unrestricted float&quot;, &quot;float&quot;,
</span><span class="lines">@@ -420,6 +421,7 @@
</span><span class="cx">     my $name = GetClassName($type);
</span><span class="cx"> 
</span><span class="cx">     my %types = (&quot;DOMString&quot;, &quot;gchar*&quot;,
</span><ins>+                 &quot;USVString&quot;, &quot;gchar*&quot;,
</ins><span class="cx">                  &quot;DOMTimeStamp&quot;, &quot;guint32&quot;,
</span><span class="cx">                  &quot;SerializedScriptValue&quot;, &quot;gchar*&quot;,
</span><span class="cx">                  &quot;float&quot;, &quot;gfloat&quot;,
</span><span class="lines">@@ -1119,7 +1121,7 @@
</span><span class="cx">                 $implIncludes{&quot;WebKitDOM${paramIDLType}Private.h&quot;} = 1;
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-        if ($paramIsGDOMType || ($paramIDLType eq &quot;DOMString&quot;) || $param-&gt;isVariadic) {
</del><ins>+        if ($paramIsGDOMType || $codeGenerator-&gt;IsStringType($paramIDLType) || $param-&gt;isVariadic) {
</ins><span class="cx">             $paramName = &quot;converted&quot; . $codeGenerator-&gt;WK_ucfirst($paramName);
</span><span class="cx">             $paramName = &quot;*$paramName&quot; if $codeGenerator-&gt;ShouldPassWrapperByReference($param, $parentNode);
</span><span class="cx">             $paramName = &quot;WTFMove($paramName)&quot; if $param-&gt;isVariadic;
</span><span class="lines">@@ -1272,7 +1274,7 @@
</span><span class="cx"> 
</span><span class="cx">         my $paramCoreType = $paramType;
</span><span class="cx">         my $paramConversionFunction = &quot;&quot;;
</span><del>-        if ($paramIDLType eq &quot;DOMString&quot;) {
</del><ins>+        if ($codeGenerator-&gt;IsStringType($paramIDLType)) {
</ins><span class="cx">             $paramCoreType = &quot;WTF::String&quot;;
</span><span class="cx">             $paramConversionFunction = &quot;WTF::String::fromUTF8&quot;;
</span><span class="cx">         } elsif ($paramIDLType eq &quot;NodeFilter&quot; || $paramIDLType eq &quot;XPathNSResolver&quot;) {
</span><span class="lines">@@ -1370,7 +1372,7 @@
</span><span class="cx">         push(@cBody, &quot;    return 0;\n&quot;);
</span><span class="cx">         push(@cBody, &quot;}\n\n&quot;);
</span><span class="cx">         return;
</span><del>-    } elsif ($functionSigType eq &quot;DOMString&quot;) {
</del><ins>+    } elsif ($codeGenerator-&gt;IsStringType($functionSigType)) {
</ins><span class="cx">         my $getterContentHead;
</span><span class="cx">         if ($prefix) {
</span><span class="cx">             my ($functionName, @arguments) = $codeGenerator-&gt;GetterExpression(\%implIncludes, $interfaceName, $function);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -3719,6 +3719,7 @@
</span><span class="cx">     # toString() will convert undefined to the string &quot;undefined&quot;;
</span><span class="cx">     # (note that this optimizes a behavior that is almost never useful)
</span><span class="cx">     &quot;DOMString&quot; =&gt; &quot;\&quot;undefined\&quot;&quot;,
</span><ins>+    &quot;USVString&quot; =&gt; &quot;\&quot;undefined\&quot;&quot;,
</ins><span class="cx"> 
</span><span class="cx">     # Dictionary(state, undefined) will construct an empty Dictionary.
</span><span class="cx">     &quot;Dictionary&quot; =&gt; &quot;[]&quot;,
</span><span class="lines">@@ -3809,7 +3810,7 @@
</span><span class="cx">             $parameter-&gt;default(&quot;undefined&quot;) if $type eq &quot;any&quot;;
</span><span class="cx"> 
</span><span class="cx">             # We use the null string as default value for parameters of type DOMString unless specified otherwise.
</span><del>-            $parameter-&gt;default(&quot;null&quot;) if $type eq &quot;DOMString&quot;;
</del><ins>+            $parameter-&gt;default(&quot;null&quot;) if $codeGenerator-&gt;IsStringType($type);
</ins><span class="cx"> 
</span><span class="cx">             # As per Web IDL, passing undefined for a nullable parameter is treated as null. Therefore, use null as
</span><span class="cx">             # default value for nullable parameters unless otherwise specified.
</span><span class="lines">@@ -3940,7 +3941,7 @@
</span><span class="cx">                     my $defaultValue = $parameter-&gt;default;
</span><span class="cx">     
</span><span class="cx">                     # String-related optimizations.
</span><del>-                    if ($type eq &quot;DOMString&quot;) {
</del><ins>+                    if ($codeGenerator-&gt;IsStringType($type)) {
</ins><span class="cx">                         my $useAtomicString = $parameter-&gt;extendedAttributes-&gt;{&quot;AtomicString&quot;};
</span><span class="cx">                         if ($defaultValue eq &quot;null&quot;) {
</span><span class="cx">                             $defaultValue = $useAtomicString ? &quot;nullAtom&quot; : &quot;String()&quot;;
</span><span class="lines">@@ -4461,6 +4462,7 @@
</span><span class="cx"> 
</span><span class="cx"> my %nativeType = (
</span><span class="cx">     &quot;DOMString&quot; =&gt; &quot;String&quot;,
</span><ins>+    &quot;USVString&quot; =&gt; &quot;String&quot;,
</ins><span class="cx">     &quot;DOMStringList&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,
</span><span class="cx">     &quot;DOMTimeStamp&quot; =&gt; &quot;DOMTimeStamp&quot;,
</span><span class="cx">     &quot;Date&quot; =&gt; &quot;double&quot;,
</span><span class="lines">@@ -4526,8 +4528,8 @@
</span><span class="cx">     my ($interface, $type) = @_;
</span><span class="cx"> 
</span><span class="cx">     return &quot;RefPtr&lt;SerializedScriptValue&gt;&amp;&amp;&quot; if $type eq &quot;SerializedScriptValue&quot;;
</span><del>-    return &quot;RefPtr&lt;PassRefPtr&lt;DOMStringList&gt;&gt;&amp;&amp;&quot; if $type eq &quot;DOMStringList&quot;;
-    return &quot;const String&amp;&quot; if $type eq &quot;DOMString&quot;;
</del><ins>+    return &quot;RefPtr&lt;DOMStringList&gt;&amp;&amp;&quot; if $type eq &quot;DOMStringList&quot;;
+    return &quot;const String&amp;&quot; if $codeGenerator-&gt;IsStringType($type);
</ins><span class="cx">     return GetNativeType($interface, $type);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -4613,7 +4615,13 @@
</span><span class="cx">         return (&quot;$value.toString(state)-&gt;toAtomicString(state)&quot;, 1) if $signature-&gt;extendedAttributes-&gt;{&quot;AtomicString&quot;};
</span><span class="cx">         return (&quot;$value.toWTFString(state)&quot;, 1);
</span><span class="cx">     }
</span><del>-
</del><ins>+    if ($type eq &quot;USVString&quot;) {
+        my $treatNullAs = $signature-&gt;extendedAttributes-&gt;{&quot;TreatNullAs&quot;};
+        return (&quot;valueToUSVStringTreatingNullAsEmptyString(state, $value)&quot;, 1) if $treatNullAs &amp;&amp; $treatNullAs eq &quot;EmptyString&quot;;
+        return (&quot;valueToUSVStringWithUndefinedOrNullCheck(state, $value)&quot;, 1) if $signature-&gt;isNullable;
+        return (&quot;valueToUSVString(state, $value)&quot;, 1);
+    }
+    
</ins><span class="cx">     if ($type eq &quot;SerializedScriptValue&quot;) {
</span><span class="cx">         AddToImplIncludes(&quot;SerializedScriptValue.h&quot;, $conditional);
</span><span class="cx">         return (&quot;SerializedScriptValue::create(state, $value, 0, 0)&quot;, 1);
</span><span class="lines">@@ -4694,7 +4702,7 @@
</span><span class="cx">         return &quot;jsStringWithCache(state, $value)&quot;;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if ($type eq &quot;DOMString&quot;) {
</del><ins>+    if ($codeGenerator-&gt;IsStringType($type)) {
</ins><span class="cx">         AddToImplIncludes(&quot;URL.h&quot;, $conditional);
</span><span class="cx">         return &quot;jsStringOrNull(state, $value)&quot; if $signature-&gt;isNullable;
</span><span class="cx">         AddToImplIncludes(&quot;&lt;runtime/JSString.h&gt;&quot;, $conditional);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLParserpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLParser.pm (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLParser.pm        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/IDLParser.pm        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -343,26 +343,26 @@
</span><span class="cx"> my $nextAttribute_1 = '^(attribute|inherit|readonly)$';
</span><span class="cx"> my $nextPrimitiveType_1 = '^(int|long|short|unsigned)$';
</span><span class="cx"> my $nextPrimitiveType_2 = '^(double|float|unrestricted)$';
</span><del>-my $nextArgumentList_1 = '^(\(|::|ByteString|DOMString|Date|\[|any|boolean|byte|double|float|in|long|object|octet|optional|sequence|short|unrestricted|unsigned)$';
</del><ins>+my $nextArgumentList_1 = '^(\(|::|ByteString|DOMString|USVString|Date|\[|any|boolean|byte|double|float|in|long|object|octet|optional|sequence|short|unrestricted|unsigned)$';
</ins><span class="cx"> my $nextNonAnyType_1 = '^(boolean|byte|double|float|long|octet|short|unrestricted|unsigned)$';
</span><del>-my $nextInterfaceMember_1 = '^(\(|::|ByteString|DOMString|Date|any|attribute|boolean|byte|creator|deleter|double|float|getter|inherit|legacycaller|long|object|octet|readonly|sequence|serializer|setter|short|static|stringifier|unrestricted|unsigned|void)$';
</del><ins>+my $nextInterfaceMember_1 = '^(\(|::|ByteString|DOMString|USVString|Date|any|attribute|boolean|byte|creator|deleter|double|float|getter|inherit|legacycaller|long|object|octet|readonly|sequence|serializer|setter|short|static|stringifier|unrestricted|unsigned|void)$';
</ins><span class="cx"> my $nextAttributeOrOperation_1 = '^(static|stringifier)$';
</span><del>-my $nextAttributeOrOperation_2 = '^(\(|::|ByteString|DOMString|Date|any|boolean|byte|creator|deleter|double|float|getter|legacycaller|long|object|octet|sequence|setter|short|unrestricted|unsigned|void)$';
</del><ins>+my $nextAttributeOrOperation_2 = '^(\(|::|ByteString|DOMString|USVString|Date|any|boolean|byte|creator|deleter|double|float|getter|legacycaller|long|object|octet|sequence|setter|short|unrestricted|unsigned|void)$';
</ins><span class="cx"> my $nextUnrestrictedFloatType_1 = '^(double|float)$';
</span><span class="cx"> my $nextExtendedAttributeRest3_1 = '^(\,|::|\])$';
</span><del>-my $nextExceptionField_1 = '^(\(|::|ByteString|DOMString|Date|any|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned)$';
-my $nextType_1 = '^(::|ByteString|DOMString|Date|any|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned)$';
</del><ins>+my $nextExceptionField_1 = '^(\(|::|ByteString|DOMString|USVString|Date|any|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned)$';
+my $nextType_1 = '^(::|ByteString|DOMString|USVString|Date|any|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned)$';
</ins><span class="cx"> my $nextSpecials_1 = '^(creator|deleter|getter|legacycaller|setter)$';
</span><span class="cx"> my $nextDefinitions_1 = '^(::|callback|dictionary|enum|exception|interface|partial|typedef)$';
</span><del>-my $nextExceptionMembers_1 = '^(\(|::|ByteString|DOMString|Date|\[|any|boolean|byte|const|double|float|long|object|octet|optional|sequence|short|unrestricted|unsigned)$';
</del><ins>+my $nextExceptionMembers_1 = '^(\(|::|ByteString|DOMString|USVString|Date|\[|any|boolean|byte|const|double|float|long|object|octet|optional|sequence|short|unrestricted|unsigned)$';
</ins><span class="cx"> my $nextAttributeRest_1 = '^(attribute|readonly)$';
</span><del>-my $nextInterfaceMembers_1 = '^(\(|::|ByteString|DOMString|Date|any|attribute|boolean|byte|const|creator|deleter|double|float|getter|inherit|legacycaller|long|object|octet|readonly|sequence|serializer|setter|short|static|stringifier|unrestricted|unsigned|void)$';
-my $nextSingleType_1 = '^(::|ByteString|DOMString|Date|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned)$';
</del><ins>+my $nextInterfaceMembers_1 = '^(\(|::|ByteString|DOMString|USVString|Date|any|attribute|boolean|byte|const|creator|deleter|double|float|getter|inherit|legacycaller|long|object|octet|readonly|sequence|serializer|setter|short|static|stringifier|unrestricted|unsigned|void)$';
+my $nextSingleType_1 = '^(::|ByteString|DOMString|USVString|Date|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned)$';
</ins><span class="cx"> my $nextArgumentName_1 = '^(attribute|callback|const|creator|deleter|dictionary|enum|exception|getter|implements|inherit|interface|legacycaller|partial|serializer|setter|static|stringifier|typedef|unrestricted)$';
</span><span class="cx"> my $nextConstValue_1 = '^(false|true)$';
</span><span class="cx"> my $nextConstValue_2 = '^(-|Infinity|NaN)$';
</span><span class="cx"> my $nextDefinition_1 = '^(callback|interface)$';
</span><del>-my $nextAttributeOrOperationRest_1 = '^(\(|::|ByteString|DOMString|Date|any|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned|void)$';
</del><ins>+my $nextAttributeOrOperationRest_1 = '^(\(|::|ByteString|DOMString|USVString|Date|any|boolean|byte|double|float|long|object|octet|sequence|short|unrestricted|unsigned|void)$';
</ins><span class="cx"> my $nextUnsignedIntegerType_1 = '^(long|short)$';
</span><span class="cx"> my $nextDefaultValue_1 = '^(-|Infinity|NaN|false|null|true)$';
</span><span class="cx"> 
</span><span class="lines">@@ -1973,6 +1973,11 @@
</span><span class="cx">         $self-&gt;assertTokenValue($self-&gt;getToken(), &quot;DOMString&quot;, __LINE__);
</span><span class="cx">         return &quot;DOMString&quot; . $self-&gt;parseTypeSuffix();
</span><span class="cx">     }
</span><ins>+    if ($next-&gt;value() eq &quot;USVString&quot;) {
+        $self-&gt;assertTokenValue($self-&gt;getToken(), &quot;USVString&quot;, __LINE__);
+        return &quot;USVString&quot; . $self-&gt;parseTypeSuffix();
+    }
+    
</ins><span class="cx">     if ($next-&gt;value() eq &quot;sequence&quot;) {
</span><span class="cx">         $self-&gt;assertTokenValue($self-&gt;getToken(), &quot;sequence&quot;, __LINE__);
</span><span class="cx">         $self-&gt;assertTokenValue($self-&gt;getToken(), &quot;&lt;&quot;, __LINE__);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx">     return !returnedException;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSTestCallback::callbackWithStringList(RefPtr&lt;PassRefPtr&lt;DOMStringList&gt;&gt;&amp;&amp; listParam)
</del><ins>+bool JSTestCallback::callbackWithStringList(RefPtr&lt;DOMStringList&gt;&amp;&amp; listParam)
</ins><span class="cx"> {
</span><span class="cx">     if (!canInvokeCallback())
</span><span class="cx">         return true;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     virtual bool callbackWithSerializedScriptValueParam(RefPtr&lt;SerializedScriptValue&gt;&amp;&amp; srzParam, const String&amp; strArg);
</span><span class="cx">     virtual int32_t callbackWithNonBoolReturnType(const String&amp; strArg);
</span><span class="cx">     virtual int32_t customCallback(Class5* class5Param, Class6* class6Param);
</span><del>-    virtual bool callbackWithStringList(RefPtr&lt;PassRefPtr&lt;DOMStringList&gt;&gt;&amp;&amp; listParam);
</del><ins>+    virtual bool callbackWithStringList(RefPtr&lt;DOMStringList&gt;&amp;&amp; listParam);
</ins><span class="cx">     virtual bool callbackWithBoolean(bool boolParam);
</span><span class="cx">     virtual bool callbackRequiresThisToPass(int32_t longParam, TestNode* testNodeParam);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx">     return !returnedException;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSTestCallbackFunction::callbackWithStringList(RefPtr&lt;PassRefPtr&lt;DOMStringList&gt;&gt;&amp;&amp; listParam)
</del><ins>+bool JSTestCallbackFunction::callbackWithStringList(RefPtr&lt;DOMStringList&gt;&amp;&amp; listParam)
</ins><span class="cx"> {
</span><span class="cx">     if (!canInvokeCallback())
</span><span class="cx">         return true;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">     virtual bool callbackWithSerializedScriptValueParam(RefPtr&lt;SerializedScriptValue&gt;&amp;&amp; srzParam, const String&amp; strArg);
</span><span class="cx">     virtual int32_t callbackWithNonBoolReturnType(const String&amp; strArg);
</span><span class="cx">     virtual int32_t customCallback(Class5* class5Param, Class6* class6Param);
</span><del>-    virtual bool callbackWithStringList(RefPtr&lt;PassRefPtr&lt;DOMStringList&gt;&gt;&amp;&amp; listParam);
</del><ins>+    virtual bool callbackWithStringList(RefPtr&lt;DOMStringList&gt;&amp;&amp; listParam);
</ins><span class="cx">     virtual bool callbackWithBoolean(bool boolParam);
</span><span class="cx">     virtual bool callbackRequiresThisToPass(int32_t longParam, TestNode* testNodeParam);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -603,6 +603,9 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalEnumArg(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUSVStringArg(JSC::ExecState*);
+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg(JSC::ExecState*);
+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(JSC::ExecState*);
</span><span class="lines">@@ -630,6 +633,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalString(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalUSVString(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAtomicString(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValue(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringAndDefaultValue(JSC::ExecState*);
</span><span class="lines">@@ -637,6 +641,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsNull(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyString(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyString(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsEmptyString(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaN(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaN(JSC::ExecState*);
</span><span class="lines">@@ -741,6 +746,8 @@
</span><span class="cx"> bool setJSTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjUsvstringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestObjUsvstringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjTestNullableObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -750,6 +757,8 @@
</span><span class="cx"> JSC::EncodedJSValue jsTestObjUnforgeableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjStringAttrTreatingNullAsEmptyString(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjStringAttrTreatingNullAsEmptyString(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjUsvstringAttrTreatingNullAsEmptyString(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestObjUsvstringAttrTreatingNullAsEmptyString(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -756,6 +765,8 @@
</span><span class="cx"> bool setJSTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjReflectedUSVStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestObjReflectedUSVStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -764,6 +775,8 @@
</span><span class="cx"> bool setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjReflectedUSVURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestObjReflectedUSVURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -863,6 +876,8 @@
</span><span class="cx"> bool setJSTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjNullableStringSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjNullableStringSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjNullableUSVStringSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestObjNullableUSVStringSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjNullableStringValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjNullableStringValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -1058,17 +1073,21 @@
</span><span class="cx">     { &quot;longLongAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLongLongAttr) } },
</span><span class="cx">     { &quot;unsignedLongLongAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUnsignedLongLongAttr) } },
</span><span class="cx">     { &quot;stringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttr) } },
</span><ins>+    { &quot;usvstringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUsvstringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUsvstringAttr) } },
</ins><span class="cx">     { &quot;testObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestObjAttr) } },
</span><span class="cx">     { &quot;testNullableObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestNullableObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestNullableObjAttr) } },
</span><span class="cx">     { &quot;lenientTestObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLenientTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLenientTestObjAttr) } },
</span><span class="cx">     { &quot;stringAttrTreatingNullAsEmptyString&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrTreatingNullAsEmptyString) } },
</span><ins>+    { &quot;usvstringAttrTreatingNullAsEmptyString&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUsvstringAttrTreatingNullAsEmptyString), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUsvstringAttrTreatingNullAsEmptyString) } },
</ins><span class="cx">     { &quot;XMLObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjXMLObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjXMLObjAttr) } },
</span><span class="cx">     { &quot;create&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCreate), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCreate) } },
</span><span class="cx">     { &quot;reflectedStringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedStringAttr) } },
</span><ins>+    { &quot;reflectedUSVStringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedUSVStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedUSVStringAttr) } },
</ins><span class="cx">     { &quot;reflectedIntegralAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedIntegralAttr) } },
</span><span class="cx">     { &quot;reflectedUnsignedIntegralAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedUnsignedIntegralAttr) } },
</span><span class="cx">     { &quot;reflectedBooleanAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedBooleanAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedBooleanAttr) } },
</span><span class="cx">     { &quot;reflectedURLAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedURLAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedURLAttr) } },
</span><ins>+    { &quot;reflectedUSVURLAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedUSVURLAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedUSVURLAttr) } },
</ins><span class="cx">     { &quot;reflectedStringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedStringAttr) } },
</span><span class="cx">     { &quot;reflectedCustomIntegralAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomIntegralAttr) } },
</span><span class="cx">     { &quot;reflectedCustomBooleanAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomBooleanAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomBooleanAttr) } },
</span><span class="lines">@@ -1139,6 +1158,7 @@
</span><span class="cx">     { &quot;nullableStringAttribute&quot;, ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
</span><span class="cx">     { &quot;nullableLongSettableAttribute&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableLongSettableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableLongSettableAttribute) } },
</span><span class="cx">     { &quot;nullableStringSettableAttribute&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringSettableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableStringSettableAttribute) } },
</span><ins>+    { &quot;nullableUSVStringSettableAttribute&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableUSVStringSettableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableUSVStringSettableAttribute) } },
</ins><span class="cx">     { &quot;nullableStringValue&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableStringValue) } },
</span><span class="cx">     { &quot;attribute&quot;, ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
</span><span class="cx">     { &quot;attributeWithReservedEnumType&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttributeWithReservedEnumType) } },
</span><span class="lines">@@ -1167,6 +1187,9 @@
</span><span class="cx">     { &quot;methodWithOptionalEnumArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalEnumArg), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalEnumArgAndDefaultValue&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodThatRequiresAllArgsAndThrows&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows), (intptr_t) (2) } },
</span><ins>+    { &quot;methodWithUSVStringArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithUSVStringArg), (intptr_t) (1) } },
+    { &quot;methodWithNullableUSVStringArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg), (intptr_t) (1) } },
+    { &quot;methodWithUSVStringArgTreatingNullAsEmptyString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString), (intptr_t) (1) } },
</ins><span class="cx">     { &quot;serializedValue&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionSerializedValue), (intptr_t) (1) } },
</span><span class="cx">     { &quot;optionsObject&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionOptionsObject), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithException&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithException), (intptr_t) (0) } },
</span><span class="lines">@@ -1203,6 +1226,7 @@
</span><span class="cx">     { &quot;methodWithNonOptionalArgAndOptionalArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithNonOptionalArgAndTwoOptionalArgs&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithOptionalString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalString), (intptr_t) (0) } },
</span><ins>+    { &quot;methodWithOptionalUSVString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalUSVString), (intptr_t) (0) } },
</ins><span class="cx">     { &quot;methodWithOptionalAtomicString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalAtomicString), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalStringAndDefaultValue&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValue), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalAtomicStringAndDefaultValue&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringAndDefaultValue), (intptr_t) (0) } },
</span><span class="lines">@@ -1210,6 +1234,7 @@
</span><span class="cx">     { &quot;methodWithOptionalStringIsUndefined&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalAtomicStringIsNull&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsNull), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalStringIsEmptyString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyString), (intptr_t) (0) } },
</span><ins>+    { &quot;methodWithOptionalUSVStringIsEmptyString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyString), (intptr_t) (0) } },
</ins><span class="cx">     { &quot;methodWithOptionalAtomicStringIsEmptyString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsEmptyString), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalDoubleIsNaN&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaN), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalFloatIsNaN&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaN), (intptr_t) (0) } },
</span><span class="lines">@@ -1633,6 +1658,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjUsvstringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObject&quot;, &quot;usvstringAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringWithCache(state, impl.usvstringAttr());
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -1708,6 +1748,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjUsvstringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObject&quot;, &quot;usvstringAttrTreatingNullAsEmptyString&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringWithCache(state, impl.usvstringAttrTreatingNullAsEmptyString());
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -1753,6 +1808,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjReflectedUSVStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObject&quot;, &quot;reflectedUSVStringAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringWithCache(state, impl.attributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvstringattrAttr));
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -1813,6 +1883,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjReflectedUSVURLAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObject&quot;, &quot;reflectedUSVURLAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringWithCache(state, impl.getURLAttribute(WebCore::HTMLNames::reflectedusvurlattrAttr));
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -2554,6 +2639,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjNullableUSVStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObject&quot;, &quot;nullableUSVStringSettableAttribute&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringOrNull(state, impl.nullableUSVStringSettableAttribute());
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjNullableStringValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -2864,6 +2964,23 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+bool setJSTestObjUsvstringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        return throwSetterTypeError(*state, &quot;TestObject&quot;, &quot;usvstringAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto nativeValue = valueToUSVString(state, value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return false;
+    impl.setUsvstringAttr(WTFMove(nativeValue));
+    return true;
+}
+
+
</ins><span class="cx"> bool setJSTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -2941,6 +3058,23 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+bool setJSTestObjUsvstringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        return throwSetterTypeError(*state, &quot;TestObject&quot;, &quot;usvstringAttrTreatingNullAsEmptyString&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto nativeValue = valueToUSVStringTreatingNullAsEmptyString(state, value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return false;
+    impl.setUsvstringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    return true;
+}
+
+
</ins><span class="cx"> bool setJSTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -2994,6 +3128,23 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+bool setJSTestObjReflectedUSVStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        return throwSetterTypeError(*state, &quot;TestObject&quot;, &quot;reflectedUSVStringAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto nativeValue = valueToUSVString(state, value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return false;
+    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvstringattrAttr, WTFMove(nativeValue));
+    return true;
+}
+
+
</ins><span class="cx"> bool setJSTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -3062,6 +3213,23 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+bool setJSTestObjReflectedUSVURLAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        return throwSetterTypeError(*state, &quot;TestObject&quot;, &quot;reflectedUSVURLAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto nativeValue = valueToUSVString(state, value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return false;
+    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvurlattrAttr, WTFMove(nativeValue));
+    return true;
+}
+
+
</ins><span class="cx"> bool setJSTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -3741,6 +3909,23 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+bool setJSTestObjNullableUSVStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        return throwSetterTypeError(*state, &quot;TestObject&quot;, &quot;nullableUSVStringSettableAttribute&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto nativeValue = valueToUSVStringWithUndefinedOrNullCheck(state, value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return false;
+    impl.setNullableUSVStringSettableAttribute(WTFMove(nativeValue));
+    return true;
+}
+
+
</ins><span class="cx"> bool setJSTestObjNullableStringValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -4233,6 +4418,57 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUSVStringArg(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObject&quot;, &quot;methodWithUSVStringArg&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
+        return throwVMError(state, createNotEnoughArgumentsError(state));
+    auto str = valueToUSVString(state, state-&gt;argument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithUSVStringArg(WTFMove(str));
+    return JSValue::encode(jsUndefined());
+}
+
+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObject&quot;, &quot;methodWithNullableUSVStringArg&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
+        return throwVMError(state, createNotEnoughArgumentsError(state));
+    auto str = valueToUSVStringWithUndefinedOrNullCheck(state, state-&gt;argument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithNullableUSVStringArg(WTFMove(str));
+    return JSValue::encode(jsUndefined());
+}
+
+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObject&quot;, &quot;methodWithUSVStringArgTreatingNullAsEmptyString&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
+        return throwVMError(state, createNotEnoughArgumentsError(state));
+    auto str = valueToUSVStringTreatingNullAsEmptyString(state, state-&gt;argument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithUSVStringArgTreatingNullAsEmptyString(WTFMove(str));
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><span class="lines">@@ -4663,6 +4899,21 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalUSVString(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObject&quot;, &quot;methodWithOptionalUSVString&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto str = state-&gt;argument(0).isUndefined() ? String() : valueToUSVString(state, state-&gt;uncheckedArgument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithOptionalUSVString(WTFMove(str));
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAtomicString(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><span class="lines">@@ -4768,6 +5019,21 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyString(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObject&quot;, &quot;methodWithOptionalUSVStringIsEmptyString&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto str = state-&gt;argument(0).isUndefined() ? emptyString() : valueToUSVString(state, state-&gt;uncheckedArgument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithOptionalUSVStringIsEmptyString(WTFMove(str));
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsEmptyString(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -67,11 +67,17 @@
</span><span class="cx">     attribute long long                longLongAttr;
</span><span class="cx">     attribute unsigned long long       unsignedLongLongAttr;
</span><span class="cx">     attribute DOMString                stringAttr;
</span><ins>+#if defined(TESTING_JS)
+    attribute USVString                usvstringAttr;
+#endif
</ins><span class="cx">     attribute TestObj                  testObjAttr;
</span><span class="cx">     attribute TestObj?                 testNullableObjAttr;
</span><span class="cx">     [LenientThis] attribute TestObj    lenientTestObjAttr;
</span><span class="cx">     [Unforgeable] readonly attribute DOMString unforgeableAttr;
</span><span class="cx">     [TreatNullAs=EmptyString] attribute DOMString stringAttrTreatingNullAsEmptyString;
</span><ins>+#if defined(TESTING_JS)
+    [TreatNullAs=EmptyString] attribute USVString usvstringAttrTreatingNullAsEmptyString;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     // WK_ucfirst, WK_lcfirst exceptional cases.
</span><span class="cx">     attribute TestObj                  XMLObjAttr;
</span><span class="lines">@@ -79,10 +85,16 @@
</span><span class="cx"> 
</span><span class="cx">     // Reflected DOM attributes
</span><span class="cx">     [Reflect] attribute DOMString reflectedStringAttr;
</span><ins>+#if defined(TESTING_JS)
+    [Reflect] attribute USVString reflectedUSVStringAttr;
+#endif
</ins><span class="cx">     [Reflect] attribute long reflectedIntegralAttr;
</span><span class="cx">     [Reflect] attribute unsigned long reflectedUnsignedIntegralAttr;
</span><span class="cx">     [Reflect] attribute boolean reflectedBooleanAttr;
</span><span class="cx">     [Reflect, URL] attribute DOMString reflectedURLAttr;
</span><ins>+#if defined(TESTING_JS)
+    [Reflect, URL] attribute USVString reflectedUSVURLAttr;
+#endif
</ins><span class="cx">     [Reflect=customContentStringAttr] attribute DOMString reflectedStringAttr;
</span><span class="cx">     [Reflect=customContentIntegralAttr] attribute long reflectedCustomIntegralAttr;
</span><span class="cx">     [Reflect=customContentBooleanAttr] attribute boolean reflectedCustomBooleanAttr;
</span><span class="lines">@@ -123,6 +135,12 @@
</span><span class="cx">     void methodWithOptionalEnumArgAndDefaultValue(optional TestEnumType enumArg = &quot;EnumValue1&quot;);
</span><span class="cx">     [RaisesException] TestObj methodThatRequiresAllArgsAndThrows(DOMString strArg, TestObj objArg);
</span><span class="cx"> 
</span><ins>+#if defined(TESTING_JS)
+    void methodWithUSVStringArg(USVString str);
+    void methodWithNullableUSVStringArg(USVString? str);
+    void methodWithUSVStringArgTreatingNullAsEmptyString([TreatNullAs=EmptyString] USVString str);
+#endif
+
</ins><span class="cx">     void serializedValue(SerializedScriptValue serializedArg);
</span><span class="cx">     void optionsObject(Dictionary oo, optional Dictionary ooo);
</span><span class="cx"> 
</span><span class="lines">@@ -186,6 +204,9 @@
</span><span class="cx">     void    methodWithNonOptionalArgAndOptionalArg(long nonOpt, optional long opt);
</span><span class="cx">     void    methodWithNonOptionalArgAndTwoOptionalArgs(long nonOpt, optional long opt1, optional long opt2);
</span><span class="cx">     void    methodWithOptionalString(optional DOMString str);
</span><ins>+#if defined(TESTING_JS)
+    void    methodWithOptionalUSVString(optional USVString str);
+#endif
</ins><span class="cx">     void    methodWithOptionalAtomicString([AtomicString] optional DOMString str);
</span><span class="cx">     void    methodWithOptionalStringAndDefaultValue(optional DOMString str = &quot;foo&quot;);
</span><span class="cx">     void    methodWithOptionalAtomicStringAndDefaultValue([AtomicString] optional DOMString str = &quot;foo&quot;);
</span><span class="lines">@@ -193,6 +214,9 @@
</span><span class="cx">     void    methodWithOptionalStringIsUndefined(optional DOMString str = &quot;undefined&quot;);
</span><span class="cx">     void    methodWithOptionalAtomicStringIsNull([AtomicString] optional DOMString str = null);
</span><span class="cx">     void    methodWithOptionalStringIsEmptyString(optional DOMString str = &quot;&quot;);
</span><ins>+#if defined(TESTING_JS)
+    void    methodWithOptionalUSVStringIsEmptyString(optional USVString str = &quot;&quot;);
+#endif
</ins><span class="cx">     void    methodWithOptionalAtomicStringIsEmptyString([AtomicString] optional DOMString str = &quot;&quot;);
</span><span class="cx">     void    methodWithOptionalDoubleIsNaN(optional unrestricted double number = NaN);
</span><span class="cx">     void    methodWithOptionalFloatIsNaN(optional unrestricted float number = NaN);
</span><span class="lines">@@ -341,6 +365,9 @@
</span><span class="cx"> 
</span><span class="cx">     attribute long? nullableLongSettableAttribute;
</span><span class="cx">     attribute DOMString? nullableStringSettableAttribute;
</span><ins>+#if defined(TESTING_JS)
+    attribute USVString? nullableUSVStringSettableAttribute;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     [GetterRaisesException] attribute long? nullableStringValue;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/dom/Document.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     // read-only for other clients.
</span><span class="cx">     attribute DOMString? documentURI;
</span><span class="cx"> #else
</span><del>-    [ImplementedAs=urlForBindings] readonly attribute DOMString documentURI;
</del><ins>+    [ImplementedAs=urlForBindings] readonly attribute USVString documentURI;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 2 Events (DocumentEvents interface)
</span><span class="lines">@@ -148,15 +148,15 @@
</span><span class="cx">     [SetterRaisesException] attribute DOMString title;
</span><span class="cx">     attribute DOMString dir;
</span><span class="cx"> 
</span><del>-    readonly attribute DOMString referrer;
</del><ins>+    readonly attribute USVString referrer;
</ins><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><del>-    [SetterRaisesException] attribute DOMString domain;
</del><ins>+    [SetterRaisesException] attribute USVString domain;
</ins><span class="cx"> #else
</span><span class="cx">     readonly attribute DOMString domain;
</span><span class="cx"> #endif
</span><del>-    [ImplementedAs=urlForBindings] readonly attribute DOMString URL;
</del><ins>+    [ImplementedAs=urlForBindings] readonly attribute USVString URL;
</ins><span class="cx"> 
</span><del>-    [GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
</del><ins>+    [GetterRaisesException, SetterRaisesException] attribute USVString cookie;
</ins><span class="cx"> 
</span><span class="cx">     [SetterRaisesException, ImplementedAs=bodyOrFrameset] attribute HTMLElement? body;
</span><span class="cx"> 
</span><span class="lines">@@ -275,7 +275,7 @@
</span><span class="cx">     readonly attribute HTMLScriptElement? currentScript;
</span><span class="cx"> 
</span><span class="cx">     // http://www.w3.org/TR/2014/WD-dom-20140204/#dom-document-origin
</span><del>-    readonly attribute DOMString origin;
</del><ins>+    readonly attribute USVString origin;
</ins><span class="cx"> 
</span><span class="cx">     // http://dev.w3.org/csswg/cssom-view/#dom-document-scrollingelement
</span><span class="cx">     readonly attribute Element? scrollingElement;
</span></span></pre></div>
<a id="trunkSourceWebCoredomErrorEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ErrorEvent.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ErrorEvent.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/dom/ErrorEvent.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx"> ] interface ErrorEvent : Event {
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString message;
</span><del>-    [InitializedByEventConstructor] readonly attribute DOMString filename;
</del><ins>+    [InitializedByEventConstructor] readonly attribute USVString filename;
</ins><span class="cx">     [InitializedByEventConstructor] readonly attribute unsigned long lineno;
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute unsigned long colno;
</span><span class="cx">     [InitializedByEventConstructor, CustomGetter] readonly attribute any error;
</span></span></pre></div>
<a id="trunkSourceWebCoredomHashChangeEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/HashChangeEvent.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/HashChangeEvent.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/dom/HashChangeEvent.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -25,9 +25,9 @@
</span><span class="cx">     void initHashChangeEvent(optional DOMString type = &quot;undefined&quot;,
</span><span class="cx">                              optional boolean canBubble = false,
</span><span class="cx">                              optional boolean cancelable = false,
</span><del>-                             optional DOMString oldURL = &quot;undefined&quot;,
-                             optional DOMString newURL = &quot;undefined&quot;);
-    [InitializedByEventConstructor] readonly attribute DOMString oldURL;
-    [InitializedByEventConstructor] readonly attribute DOMString newURL;
</del><ins>+                             optional USVString oldURL = &quot;undefined&quot;,
+                             optional USVString newURL = &quot;undefined&quot;);
+    [InitializedByEventConstructor] readonly attribute USVString oldURL;
+    [InitializedByEventConstructor] readonly attribute USVString newURL;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomMessageEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MessageEvent.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MessageEvent.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/dom/MessageEvent.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx">     ConstructorTemplate=Event,
</span><span class="cx"> ] interface MessageEvent : Event {
</span><del>-    [InitializedByEventConstructor] readonly attribute DOMString origin;
</del><ins>+    [InitializedByEventConstructor] readonly attribute USVString origin;
</ins><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString lastEventId;
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute EventTarget source; // May be a DOMWindow or a MessagePort.
</span><span class="cx"> 
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">                                    optional boolean canBubbleArg,
</span><span class="cx">                                    optional boolean cancelableArg,
</span><span class="cx">                                    optional any dataArg,
</span><del>-                                   optional DOMString originArg,
</del><ins>+                                   optional USVString originArg,
</ins><span class="cx">                                    optional DOMString lastEventIdArg,
</span><span class="cx">                                    optional DOMWindow sourceArg,
</span><span class="cx">                                    optional Array messagePorts);
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">                                          optional boolean canBubbleArg,
</span><span class="cx">                                          optional boolean cancelableArg,
</span><span class="cx">                                          optional any dataArg,
</span><del>-                                         optional DOMString originArg,
</del><ins>+                                         optional USVString originArg,
</ins><span class="cx">                                          optional DOMString lastEventIdArg,
</span><span class="cx">                                          optional DOMWindow sourceArg,
</span><span class="cx">                                          optional Array transferables);
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/dom/Node.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Introduced in DOM Level 3:
</span><span class="cx"> 
</span><del>-    readonly attribute DOMString?       baseURI;
</del><ins>+    readonly attribute USVString?       baseURI;
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: the spec says this can also raise on retrieval.
</span><span class="cx">     [SetterRaisesException] attribute DOMString? textContent;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMFormDataidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMFormData.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMFormData.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/DOMFormData.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     InterfaceName=FormData,
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface DOMFormData {
</span><del>-    void append(DOMString name, DOMString value);
-    void append(DOMString name, Blob value, optional DOMString filename);
</del><ins>+    void append(USVString name, USVString value);
+    void append(USVString name, Blob value, optional USVString filename);
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMURLidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMURL.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMURL.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/DOMURL.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -26,9 +26,9 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     Exposed=(Window,Worker),
</span><del>-    Constructor(DOMString url),
-    Constructor(DOMString url, DOMString base),
-    Constructor(DOMString url, DOMURL base),
</del><ins>+    Constructor(USVString url),
+    Constructor(USVString url, USVString base),
+    Constructor(USVString url, DOMURL base),
</ins><span class="cx">     ConstructorRaisesException,
</span><span class="cx">     JSGenerateToNativeObject,
</span><span class="cx">     JSGenerateToJSObject,
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAnchorElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAnchorElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAnchorElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: This is supposed to be:
</span><span class="cx">     // [PutForwards=value] readonly attribute DOMTokenList ping;
</span><del>-    [Reflect] attribute DOMString ping;
</del><ins>+    [Reflect] attribute USVString ping;
</ins><span class="cx"> 
</span><span class="cx">     [Reflect] attribute DOMString rel;
</span><span class="cx">     [Reflect] attribute DOMString rev;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAppletElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAppletElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAppletElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLAppletElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx">     [Reflect] attribute DOMString alt;
</span><span class="cx">     [Reflect] attribute DOMString archive;
</span><span class="cx">     [Reflect] attribute DOMString code;
</span><del>-    [Reflect] attribute DOMString codeBase;
</del><ins>+    [Reflect] attribute USVString codeBase;
</ins><span class="cx">     [Reflect] attribute DOMString height;
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [Reflect] attribute DOMString hspace;
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     [Reflect] attribute long hspace;
</span><span class="cx"> #endif
</span><span class="cx">     [Reflect] attribute DOMString name;
</span><del>-    [Reflect] attribute DOMString object;
</del><ins>+    [Reflect] attribute USVString object;
</ins><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [Reflect] attribute DOMString vspace;
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAreaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAreaElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAreaElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLAreaElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: This is supposed to be:
</span><span class="cx">     // [PutForwards=value] readonly attribute DOMTokenList ping;
</span><del>-    [Reflect] attribute DOMString ping;
</del><ins>+    [Reflect] attribute USVString ping;
</ins><span class="cx"> 
</span><span class="cx">     [Reflect] attribute DOMString rel;
</span><span class="cx">     [Reflect] attribute DOMString shape;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBaseElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBaseElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBaseElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLBaseElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -18,7 +18,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLBaseElement : HTMLElement {
</span><del>-    attribute DOMString href;
</del><ins>+    attribute USVString href;
</ins><span class="cx"> 
</span><span class="cx">     [Reflect] attribute DOMString target;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLButtonElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLButtonElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLButtonElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLButtonElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx">     [Reflect] attribute boolean autofocus;
</span><span class="cx">     [Reflect] attribute boolean disabled;
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><del>-    attribute DOMString formAction;
</del><ins>+    attribute USVString formAction;
</ins><span class="cx"> 
</span><span class="cx">     attribute DOMString formEnctype;
</span><span class="cx">     attribute DOMString formMethod;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLEmbedElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLEmbedElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLEmbedElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLEmbedElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> [Reflect] attribute long height;
</span><span class="cx"> #endif
</span><span class="cx"> [Reflect] attribute DOMString name;
</span><del>-[Reflect, URL] attribute DOMString src;
</del><ins>+[Reflect, URL] attribute USVString src;
</ins><span class="cx"> [Reflect] attribute DOMString type;
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx"> [Reflect] attribute DOMString width;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLFormElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">     OverrideBuiltins,
</span><span class="cx"> ] interface HTMLFormElement : HTMLElement {
</span><span class="cx">     [Reflect=accept_charset] attribute DOMString acceptCharset;
</span><del>-    [Reflect, URL] attribute DOMString action;
</del><ins>+    [Reflect, URL] attribute USVString action;
</ins><span class="cx">     attribute DOMString autocomplete;
</span><span class="cx"> 
</span><span class="cx">     attribute DOMString enctype;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLFrameElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> interface HTMLFrameElement : HTMLElement {
</span><span class="cx"> 
</span><span class="cx">     [Reflect] attribute DOMString frameBorder;
</span><del>-    [Reflect] attribute DOMString longDesc;
</del><ins>+    [Reflect] attribute USVString longDesc;
</ins><span class="cx"> 
</span><span class="cx">     [Reflect, TreatNullAs=EmptyString] attribute DOMString marginHeight;
</span><span class="cx">     [Reflect, TreatNullAs=EmptyString] attribute DOMString marginWidth;
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="cx">     [Reflect] attribute boolean noResize;
</span><span class="cx">     [Reflect] attribute DOMString scrolling;
</span><del>-    [Reflect, URL] attribute DOMString src;
</del><ins>+    [Reflect, URL] attribute USVString src;
</ins><span class="cx"> 
</span><span class="cx">     // Introduced in DOM Level 2:
</span><span class="cx">     [CheckSecurityForNode] readonly attribute Document contentDocument;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLHyperlinkElementUtilsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLHyperlinkElementUtils.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLHyperlinkElementUtils.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLHyperlinkElementUtils.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -38,14 +38,14 @@
</span><span class="cx">     readonly attribute DOMString search;
</span><span class="cx">     readonly attribute DOMString hash;
</span><span class="cx"> #else
</span><del>-    attribute DOMString protocol;
-    attribute DOMString username;
-    attribute DOMString password;
-    attribute DOMString host;
-    attribute DOMString hostname;
-    attribute DOMString port;
-    attribute DOMString pathname;
-    attribute DOMString search;
-    attribute DOMString hash;
</del><ins>+    attribute USVString protocol;
+    attribute USVString username;
+    attribute USVString password;
+    attribute USVString host;
+    attribute USVString hostname;
+    attribute USVString port;
+    attribute USVString pathname;
+    attribute USVString search;
+    attribute USVString hash;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLIFrameElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLIFrameElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLIFrameElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLIFrameElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx">     [Reflect] attribute DOMString align;
</span><span class="cx">     [Reflect] attribute DOMString frameBorder;
</span><span class="cx">     [Reflect] attribute DOMString height;
</span><del>-    [Reflect] attribute DOMString longDesc;
</del><ins>+    [Reflect] attribute USVString longDesc;
</ins><span class="cx">     [Reflect, TreatNullAs=EmptyString] attribute DOMString marginHeight;
</span><span class="cx">     [Reflect, TreatNullAs=EmptyString] attribute DOMString marginWidth;
</span><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     [Reflect] attribute DOMString scrolling;
</span><del>-    [Reflect, URL] attribute DOMString src;
</del><ins>+    [Reflect, URL] attribute USVString src;
</ins><span class="cx">     [Reflect] attribute DOMString srcdoc;
</span><span class="cx">     [Reflect] attribute DOMString width;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLImageElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLImageElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLImageElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLImageElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -30,11 +30,11 @@
</span><span class="cx">     attribute long height;
</span><span class="cx">     [Reflect] attribute long hspace;
</span><span class="cx">     [Reflect] attribute boolean isMap;
</span><del>-    [Reflect, URL] attribute DOMString longDesc;
-    [Reflect, URL] attribute DOMString src;
-    [Reflect] attribute DOMString srcset;
</del><ins>+    [Reflect, URL] attribute USVString longDesc;
+    [Reflect, URL] attribute USVString src;
+    [Reflect] attribute USVString srcset;
</ins><span class="cx">     [Reflect] attribute DOMString sizes;
</span><del>-    readonly attribute DOMString currentSrc;
</del><ins>+    readonly attribute USVString currentSrc;
</ins><span class="cx">     [Reflect] attribute DOMString useMap;
</span><span class="cx">     [Reflect] attribute long vspace;
</span><span class="cx">     attribute long width;
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Extensions
</span><span class="cx">     readonly attribute boolean complete;
</span><del>-    [Reflect,URL] attribute DOMString lowsrc;
</del><ins>+    [Reflect,URL] attribute USVString lowsrc;
</ins><span class="cx">     readonly attribute long naturalHeight;
</span><span class="cx">     readonly attribute long naturalWidth;
</span><span class="cx">     readonly attribute long x;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLInputElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx">     [Reflect] attribute boolean disabled;
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><span class="cx">     attribute FileList? files;
</span><del>-    attribute DOMString formAction;
</del><ins>+    attribute USVString formAction;
</ins><span class="cx"> 
</span><span class="cx">     attribute DOMString formEnctype;
</span><span class="cx">     attribute DOMString formMethod;
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> #else
</span><span class="cx">     [SetterRaisesException] attribute unsigned long size; // Changed string -&gt; long -&gt; unsigned long
</span><span class="cx"> #endif
</span><del>-    [Reflect, URL] attribute DOMString src;
</del><ins>+    [Reflect, URL] attribute USVString src;
</ins><span class="cx">     [Reflect] attribute DOMString step;
</span><span class="cx">     attribute DOMString type; // readonly dropped as part of DOM level 2
</span><span class="cx">     attribute DOMString defaultValue;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLLinkElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> ] interface HTMLLinkElement : HTMLElement {
</span><span class="cx">     [Reflect] attribute boolean disabled;
</span><span class="cx">     [Reflect] attribute DOMString charset;
</span><del>-    [Reflect, URL] attribute DOMString href;
</del><ins>+    [Reflect, URL] attribute USVString href;
</ins><span class="cx">     [Reflect] attribute DOMString hreflang;
</span><span class="cx">     [Reflect] attribute DOMString media;
</span><span class="cx">     [Reflect] attribute DOMString rel;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -34,8 +34,8 @@
</span><span class="cx">     readonly attribute MediaError error;
</span><span class="cx"> 
</span><span class="cx">     // network state
</span><del>-    [Reflect, URL] attribute DOMString src;
-    [URL] readonly attribute DOMString currentSrc;
</del><ins>+    [Reflect, URL] attribute USVString src;
+    [URL] readonly attribute USVString currentSrc;
</ins><span class="cx">     attribute DOMString? crossOrigin;
</span><span class="cx"> 
</span><span class="cx">     const unsigned short NETWORK_EMPTY = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLModElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLModElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLModElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLModElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -18,7 +18,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLModElement : HTMLElement {
</span><del>-    [Reflect, URL] attribute DOMString cite;
</del><ins>+    [Reflect, URL] attribute USVString cite;
</ins><span class="cx">     [Reflect] attribute DOMString dateTime;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLObjectElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx">     [Reflect, TreatNullAs=EmptyString] attribute DOMString border;
</span><span class="cx">     [Reflect] attribute DOMString codeBase;
</span><span class="cx">     [Reflect] attribute DOMString codeType;
</span><del>-    [Reflect, URL] attribute DOMString data;
</del><ins>+    [Reflect, URL] attribute USVString data;
</ins><span class="cx">     [Reflect] attribute boolean declare;
</span><span class="cx">     [Reflect] attribute DOMString height;
</span><span class="cx">     [Reflect] attribute long hspace;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLQuoteElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLQuoteElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLQuoteElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLQuoteElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -18,5 +18,5 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLQuoteElement : HTMLElement {
</span><del>-    [Reflect, URL] attribute DOMString cite;
</del><ins>+    [Reflect, URL] attribute USVString cite;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLScriptElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx">     [Reflect] attribute DOMString charset;
</span><span class="cx">     attribute boolean async;
</span><span class="cx">     [Reflect] attribute boolean defer;
</span><del>-    [Reflect, URL] attribute DOMString src;
</del><ins>+    [Reflect, URL] attribute USVString src;
</ins><span class="cx">     [Reflect] attribute DOMString type;
</span><span class="cx">     attribute DOMString? crossOrigin;
</span><span class="cx">     [Reflect] attribute DOMString nonce;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSourceElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSourceElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSourceElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLSourceElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLSourceElement : HTMLElement {
</span><del>-[Reflect, URL] attribute DOMString src;
</del><ins>+[Reflect, URL] attribute USVString src;
</ins><span class="cx"> attribute DOMString type;
</span><span class="cx"> attribute DOMString media;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTrackElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTrackElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTrackElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLTrackElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx">     Conditional=VIDEO_TRACK,
</span><span class="cx"> ] interface HTMLTrackElement : HTMLElement {
</span><span class="cx">     attribute DOMString kind;
</span><del>-    [Reflect, URL] attribute DOMString src;
</del><ins>+    [Reflect, URL] attribute USVString src;
</ins><span class="cx">     [Reflect] attribute DOMString srclang;
</span><span class="cx">     [Reflect] attribute DOMString label;
</span><span class="cx">     [Reflect] attribute boolean default;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/HTMLVideoElement.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx">     [Reflect] attribute unsigned long height;
</span><span class="cx">     readonly attribute unsigned long videoWidth;
</span><span class="cx">     readonly attribute unsigned long videoHeight;
</span><del>-    [Reflect, URL] attribute DOMString poster;
</del><ins>+    [Reflect, URL] attribute USVString poster;
</ins><span class="cx"> 
</span><span class="cx">     [Reflect] attribute boolean playsInline;
</span><span class="cx">     readonly attribute boolean webkitSupportsFullscreen;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlURLUtilsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/URLUtils.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/URLUtils.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/html/URLUtils.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -25,20 +25,20 @@
</span><span class="cx"> 
</span><span class="cx"> [NoInterfaceObject]
</span><span class="cx"> interface URLUtils {
</span><del>-    [SetterRaisesException, URL] attribute DOMString href;
</del><ins>+    [SetterRaisesException, URL] attribute USVString href;
</ins><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [NotEnumerable] DOMString toString();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    readonly attribute DOMString origin;
</del><ins>+    readonly attribute USVString origin;
</ins><span class="cx"> 
</span><del>-    attribute DOMString protocol;
-    attribute DOMString username;
-    attribute DOMString password;
-    attribute DOMString host;
-    attribute DOMString hostname;
-    attribute DOMString port;
-    attribute DOMString pathname;
-    attribute DOMString hash;
-    attribute DOMString search;
</del><ins>+    attribute USVString protocol;
+    attribute USVString username;
+    attribute USVString password;
+    attribute USVString host;
+    attribute USVString hostname;
+    attribute USVString port;
+    attribute USVString pathname;
+    attribute USVString hash;
+    attribute USVString search;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/page/DOMWindow.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     void print();
</span><span class="cx">     void stop();
</span><span class="cx"> 
</span><del>-    [Custom] DOMWindow open(optional DOMString url = &quot;about:blank&quot;, optional DOMString target = &quot;_blank&quot;, [TreatNullAs=EmptyString] optional DOMString features = &quot;&quot;);
</del><ins>+    [Custom] DOMWindow open(optional USVString url = &quot;about:blank&quot;, optional DOMString target = &quot;_blank&quot;, [TreatNullAs=EmptyString] optional DOMString features = &quot;&quot;);
</ins><span class="cx"> 
</span><span class="cx">     [Custom] any showModalDialog(DOMString url,
</span><span class="cx">                                        optional any dialogArgs,
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx"> 
</span><span class="cx">     // cross-document messaging
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><del>-    [DoNotCheckSecurity, Custom, RaisesException, ForwardDeclareInHeader] void postMessage(SerializedScriptValue message, DOMString targetOrigin, optional Array messagePorts);
</del><ins>+    [DoNotCheckSecurity, Custom, RaisesException, ForwardDeclareInHeader] void postMessage(SerializedScriptValue message, USVString targetOrigin, optional Array messagePorts);
</ins><span class="cx"> #else
</span><span class="cx">     // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
</span><span class="cx">     [DoNotCheckSecurity, Custom, RaisesException, ForwardDeclareInHeader] void postMessage(SerializedScriptValue message, optional MessagePort messagePort, DOMString targetOrigin);
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventSourceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventSource.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventSource.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/page/EventSource.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -32,12 +32,12 @@
</span><span class="cx"> [
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx">     ActiveDOMObject,
</span><del>-    Constructor(DOMString url, optional EventSourceInit eventSourceInitDict),
</del><ins>+    Constructor(USVString url, optional EventSourceInit eventSourceInitDict),
</ins><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     ConstructorRaisesException,
</span><span class="cx"> ] interface EventSource : EventTarget {
</span><del>-    readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
-    readonly attribute DOMString url;
</del><ins>+    readonly attribute USVString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
+    readonly attribute USVString url;
</ins><span class="cx">     readonly attribute boolean withCredentials;
</span><span class="cx"> 
</span><span class="cx">     // ready state
</span></span></pre></div>
<a id="trunkSourceWebCorepageHistoryidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/History.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/History.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/page/History.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -33,6 +33,6 @@
</span><span class="cx">     [CallWith=Document, ForwardDeclareInHeader] void forward();
</span><span class="cx">     [CallWith=Document, ForwardDeclareInHeader] void go(optional long distance = 0);
</span><span class="cx"> 
</span><del>-    [Custom, RaisesException] void pushState(any data, DOMString title, optional DOMString? url = null);
-    [Custom, RaisesException] void replaceState(any data, DOMString title, optional DOMString? url = null);
</del><ins>+    [Custom, RaisesException] void pushState(any data, DOMString title, optional USVString? url = null);
+    [Custom, RaisesException] void replaceState(any data, DOMString title, optional USVString? url = null);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorepageLocationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Location.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Location.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/page/Location.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -37,22 +37,22 @@
</span><span class="cx">     JSCustomDefineOwnPropertyOnPrototype,
</span><span class="cx">     Unforgeable
</span><span class="cx"> ] interface Location {
</span><del>-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString href;
</del><ins>+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString href;
</ins><span class="cx"> 
</span><del>-    [CallWith=ActiveWindow&amp;FirstWindow, ForwardDeclareInHeader] void assign(DOMString url);
-    [CallWith=ActiveWindow&amp;FirstWindow, ForwardDeclareInHeader] void replace(DOMString url);
</del><ins>+    [CallWith=ActiveWindow&amp;FirstWindow, ForwardDeclareInHeader] void assign(USVString url);
+    [CallWith=ActiveWindow&amp;FirstWindow, ForwardDeclareInHeader] void replace(USVString url);
</ins><span class="cx">     [CallWith=ActiveWindow, ForwardDeclareInHeader] void reload();
</span><span class="cx"> 
</span><span class="cx">     // URI decomposition attributes
</span><del>-    [SetterCallWith=ActiveWindow&amp;FirstWindow, SetterRaisesException] attribute DOMString protocol;
-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString host;
-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString hostname;
-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString port;
-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString pathname;
-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString search;
-    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString hash;
</del><ins>+    [SetterCallWith=ActiveWindow&amp;FirstWindow, SetterRaisesException] attribute USVString protocol;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString host;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString hostname;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString port;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString pathname;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString search;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute USVString hash;
</ins><span class="cx"> 
</span><del>-    readonly attribute DOMString origin;
</del><ins>+    readonly attribute USVString origin;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute DOMStringList ancestorOrigins;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorestorageStorageEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/storage/StorageEvent.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/storage/StorageEvent.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/storage/StorageEvent.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString key;
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString? oldValue;
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString? newValue;
</span><del>-    [InitializedByEventConstructor] readonly attribute DOMString url;
</del><ins>+    [InitializedByEventConstructor] readonly attribute USVString url;
</ins><span class="cx">     [InitializedByEventConstructor] readonly attribute Storage storageArea;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><span class="lines">@@ -39,10 +39,10 @@
</span><span class="cx">                           optional DOMString keyArg = &quot;undefined&quot;,
</span><span class="cx">                           optional DOMString? oldValueArg = null,
</span><span class="cx">                           optional DOMString? newValueArg = null,
</span><del>-                          optional DOMString urlArg = &quot;undefined&quot;,
</del><ins>+                          optional USVString urlArg = &quot;undefined&quot;,
</ins><span class="cx">                           optional Storage? storageAreaArg = null);
</span><span class="cx"> 
</span><span class="cx">     // Needed once we support init&lt;blank&gt;EventNS
</span><del>-    // void initStorageEventNS(DOMString namespaceURI, DOMString typeArg, boolean canBubbleArg, boolean cancelableArg, DOMString keyArg, DOMString oldValueArg, DOMString newValueArg, DOMString urlArg, Storage? storageAreaArg);
</del><ins>+    // void initStorageEventNS(DOMString namespaceURI, DOMString typeArg, boolean canBubbleArg, boolean cancelableArg, DOMString keyArg, DOMString oldValueArg, DOMString newValueArg, USVString urlArg, Storage? storageAreaArg);
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoretestingTypeConversionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/TypeConversions.h (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/TypeConversions.h        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/testing/TypeConversions.h        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/FastMalloc.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><ins>+#include &lt;wtf/text/WTFString.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -70,6 +71,12 @@
</span><span class="cx">     void setTestUnsignedShort(uint16_t value) { m_UnsignedShort = value; }
</span><span class="cx">     uint16_t testEnforceRangeUnsignedShort() { return m_UnsignedShort; }
</span><span class="cx">     void setTestEnforceRangeUnsignedShort(uint16_t value) { m_UnsignedShort = value; }
</span><ins>+
+    const String&amp; testString() const { return m_string; }
+    void setTestString(const String&amp; string) { m_string = string; }
+    const String&amp; testUSVString() const { return m_usvstring; }
+    void setTestUSVString(const String&amp; usvstring) { m_usvstring = usvstring; }
+
</ins><span class="cx"> private:
</span><span class="cx">     TypeConversions()
</span><span class="cx">     {
</span><span class="lines">@@ -83,6 +90,8 @@
</span><span class="cx">     uint8_t m_octet;
</span><span class="cx">     int16_t m_short;
</span><span class="cx">     uint16_t m_UnsignedShort;
</span><ins>+    String m_string;
+    String m_usvstring;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoretestingTypeConversionsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/TypeConversions.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/TypeConversions.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/testing/TypeConversions.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -47,4 +47,7 @@
</span><span class="cx">     [EnforceRange] attribute short testEnforceRangeShort;
</span><span class="cx">     attribute unsigned short testUnsignedShort;
</span><span class="cx">     [EnforceRange] attribute unsigned short testEnforceRangeUnsignedShort;
</span><ins>+
+    attribute DOMString testString;
+    attribute USVString testUSVString;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkeridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/Worker.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/Worker.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/workers/Worker.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    CustomConstructor(DOMString scriptUrl),
</del><ins>+    CustomConstructor(USVString scriptUrl),
</ins><span class="cx">     ActiveDOMObject,
</span><span class="cx"> ] interface Worker : EventTarget {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerGlobalScopeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.idl (204214 => 204215)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerGlobalScope.idl        2016-08-06 01:40:03 UTC (rev 204214)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.idl        2016-08-06 02:32:04 UTC (rev 204215)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx">     // WorkerUtils
</span><span class="cx"> 
</span><del>-    [Custom] void importScripts(/*[Variadic] DOMString urls */);
</del><ins>+    [Custom] void importScripts(/*[Variadic] USVString urls */);
</ins><span class="cx">     readonly attribute WorkerNavigator navigator;
</span><span class="cx"> 
</span><span class="cx">     // Additional constructors
</span></span></pre>
</div>
</div>

</body>
</html>