<!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>[197060] trunk/Source/WebCore</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/197060">197060</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-02-24 18:39:19 -0800 (Wed, 24 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Drop [TreatReturnedNullStringAs=Null] WebKit-specific IDL attribute
https://bugs.webkit.org/show_bug.cgi?id=154659

Reviewed by Sam Weinig.

Drop [TreatReturnedNullStringAs=Null] WebKit-specific IDL attribute and
use nullable DOMString types instead:
http://heycam.github.io/webidl/#idl-nullable-type

This is the standard way of doing things. We already had support
in the bindings generator for nullable DOMString attributes so
we now just leverage this support. However, our IDL parser did
not correctly parse nullable DOMString return values for operations.
This patch fixes this.

This patch also drops [TreatNullAs=NullString] and
[TreatUndefinedAs=NullString] for writable DOMString attributes that
are now marked as nullable because they are implied.

* Modules/fetch/FetchHeaders.idl:
* Modules/indexeddb/IDBObjectStore.idl:
* Modules/mediasource/DOMURLMediaSource.idl:
* Modules/mediastream/DOMURLMediaStream.idl:
* Modules/websockets/WebSocket.idl:
* bindings/scripts/CodeGeneratorJS.pm:
(NativeToJSValue): Deleted.
* bindings/scripts/IDLAttributes.txt:
* bindings/scripts/IDLParser.pm:
(parseAttributeOrOperationRest):
(parseOperationOrIterator):
(parseSpecialOperation):
* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
(webkit_dom_test_obj_nullable_string_method):
(webkit_dom_test_obj_nullable_string_special_method):
(webkit_dom_test_obj_conditional_method3): Deleted.
(webkit_dom_test_obj_convert1): Deleted.
* bindings/scripts/test/GObject/WebKitDOMTestObj.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::getOwnPropertySlot):
(WebCore::JSTestObj::getOwnPropertySlotByIndex):
(WebCore::JSTestObj::getOwnPropertyNames):
(WebCore::jsTestObjPrototypeFunctionNullableStringMethod):
(WebCore::jsTestObjConstructorFunctionNullableStringStaticMethod):
(WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence): Deleted.
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2): Deleted.
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
(-[DOMTestObj nullableStringMethod]):
(-[DOMTestObj nullableStringStaticMethod]):
(-[DOMTestObj nullableStringSpecialMethod:]):
(-[DOMTestObj overloadedMethod1:]): Deleted.
(-[DOMTestObj getSVGDocument]): Deleted.
* bindings/scripts/test/TestObj.idl:
* css/CSSCharsetRule.idl:
* css/CSSImportRule.idl:
* css/CSSKeyframesRule.idl:
* css/CSSPageRule.idl:
* css/CSSRule.idl:
* css/CSSStyleDeclaration.idl:
* css/CSSStyleRule.idl:
* css/CSSValue.idl:
* css/MediaList.idl:
* css/StyleSheet.idl:
* dom/Attr.idl:
* dom/CharacterData.idl:
* dom/DOMStringList.idl:
* dom/Document.idl:
* dom/DocumentType.idl:
* dom/Element.idl:
* dom/Entity.idl:
* dom/MutationRecord.idl:
* dom/Node.idl:
* dom/ProcessingInstruction.idl:
* html/DOMSettableTokenList.idl:
* html/DOMTokenList.idl:
* html/DOMURL.idl:
* html/canvas/WebGLDebugShaders.idl:
* html/canvas/WebGLRenderingContextBase.idl:
* page/DOMWindow.idl:
* storage/Storage.idl:
* storage/StorageEvent.idl:
* xml/XMLHttpRequest.idl:
* xml/XPathNSResolver.idl:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchHeadersidl">trunk/Source/WebCore/Modules/fetch/FetchHeaders.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBObjectStoreidl">trunk/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceDOMURLMediaSourceidl">trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamDOMURLMediaStreamidl">trunk/Source/WebCore/Modules/mediastream/DOMURLMediaStream.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketidl">trunk/Source/WebCore/Modules/websockets/WebSocket.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsIDLAttributestxt">trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsIDLParserpm">trunk/Source/WebCore/bindings/scripts/IDLParser.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSCharsetRuleidl">trunk/Source/WebCore/css/CSSCharsetRule.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSImportRuleidl">trunk/Source/WebCore/css/CSSImportRule.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSKeyframesRuleidl">trunk/Source/WebCore/css/CSSKeyframesRule.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSPageRuleidl">trunk/Source/WebCore/css/CSSPageRule.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSRuleidl">trunk/Source/WebCore/css/CSSRule.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSStyleDeclarationidl">trunk/Source/WebCore/css/CSSStyleDeclaration.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSStyleRuleidl">trunk/Source/WebCore/css/CSSStyleRule.idl</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueidl">trunk/Source/WebCore/css/CSSValue.idl</a></li>
<li><a href="#trunkSourceWebCorecssMediaListidl">trunk/Source/WebCore/css/MediaList.idl</a></li>
<li><a href="#trunkSourceWebCorecssStyleSheetidl">trunk/Source/WebCore/css/StyleSheet.idl</a></li>
<li><a href="#trunkSourceWebCoredomAttridl">trunk/Source/WebCore/dom/Attr.idl</a></li>
<li><a href="#trunkSourceWebCoredomCharacterDataidl">trunk/Source/WebCore/dom/CharacterData.idl</a></li>
<li><a href="#trunkSourceWebCoredomDOMStringListidl">trunk/Source/WebCore/dom/DOMStringList.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentTypeidl">trunk/Source/WebCore/dom/DocumentType.idl</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
<li><a href="#trunkSourceWebCoredomEntityidl">trunk/Source/WebCore/dom/Entity.idl</a></li>
<li><a href="#trunkSourceWebCoredomMutationRecordidl">trunk/Source/WebCore/dom/MutationRecord.idl</a></li>
<li><a href="#trunkSourceWebCoredomNodeidl">trunk/Source/WebCore/dom/Node.idl</a></li>
<li><a href="#trunkSourceWebCoredomProcessingInstructionidl">trunk/Source/WebCore/dom/ProcessingInstruction.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMSettableTokenListidl">trunk/Source/WebCore/html/DOMSettableTokenList.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMTokenListidl">trunk/Source/WebCore/html/DOMTokenList.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLidl">trunk/Source/WebCore/html/DOMURL.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLDebugShadersidl">trunk/Source/WebCore/html/canvas/WebGLDebugShaders.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextBaseidl">trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowidl">trunk/Source/WebCore/page/DOMWindow.idl</a></li>
<li><a href="#trunkSourceWebCorestorageStorageidl">trunk/Source/WebCore/storage/Storage.idl</a></li>
<li><a href="#trunkSourceWebCorestorageStorageEventidl">trunk/Source/WebCore/storage/StorageEvent.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequestidl">trunk/Source/WebCore/xml/XMLHttpRequest.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXPathNSResolveridl">trunk/Source/WebCore/xml/XPathNSResolver.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/ChangeLog        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -1,3 +1,91 @@
</span><ins>+2016-02-24  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Drop [TreatReturnedNullStringAs=Null] WebKit-specific IDL attribute
+        https://bugs.webkit.org/show_bug.cgi?id=154659
+
+        Reviewed by Sam Weinig.
+
+        Drop [TreatReturnedNullStringAs=Null] WebKit-specific IDL attribute and
+        use nullable DOMString types instead:
+        http://heycam.github.io/webidl/#idl-nullable-type
+
+        This is the standard way of doing things. We already had support
+        in the bindings generator for nullable DOMString attributes so
+        we now just leverage this support. However, our IDL parser did
+        not correctly parse nullable DOMString return values for operations.
+        This patch fixes this.
+
+        This patch also drops [TreatNullAs=NullString] and
+        [TreatUndefinedAs=NullString] for writable DOMString attributes that
+        are now marked as nullable because they are implied.
+
+        * Modules/fetch/FetchHeaders.idl:
+        * Modules/indexeddb/IDBObjectStore.idl:
+        * Modules/mediasource/DOMURLMediaSource.idl:
+        * Modules/mediastream/DOMURLMediaStream.idl:
+        * Modules/websockets/WebSocket.idl:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (NativeToJSValue): Deleted.
+        * bindings/scripts/IDLAttributes.txt:
+        * bindings/scripts/IDLParser.pm:
+        (parseAttributeOrOperationRest):
+        (parseOperationOrIterator):
+        (parseSpecialOperation):
+        * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
+        (webkit_dom_test_obj_nullable_string_method):
+        (webkit_dom_test_obj_nullable_string_special_method):
+        (webkit_dom_test_obj_conditional_method3): Deleted.
+        (webkit_dom_test_obj_convert1): Deleted.
+        * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::JSTestObj::getOwnPropertySlot):
+        (WebCore::JSTestObj::getOwnPropertySlotByIndex):
+        (WebCore::JSTestObj::getOwnPropertyNames):
+        (WebCore::jsTestObjPrototypeFunctionNullableStringMethod):
+        (WebCore::jsTestObjConstructorFunctionNullableStringStaticMethod):
+        (WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod):
+        (WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence): Deleted.
+        (WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2): Deleted.
+        * bindings/scripts/test/JS/JSTestObj.h:
+        * bindings/scripts/test/ObjC/DOMTestObj.h:
+        * bindings/scripts/test/ObjC/DOMTestObj.mm:
+        (-[DOMTestObj nullableStringMethod]):
+        (-[DOMTestObj nullableStringStaticMethod]):
+        (-[DOMTestObj nullableStringSpecialMethod:]):
+        (-[DOMTestObj overloadedMethod1:]): Deleted.
+        (-[DOMTestObj getSVGDocument]): Deleted.
+        * bindings/scripts/test/TestObj.idl:
+        * css/CSSCharsetRule.idl:
+        * css/CSSImportRule.idl:
+        * css/CSSKeyframesRule.idl:
+        * css/CSSPageRule.idl:
+        * css/CSSRule.idl:
+        * css/CSSStyleDeclaration.idl:
+        * css/CSSStyleRule.idl:
+        * css/CSSValue.idl:
+        * css/MediaList.idl:
+        * css/StyleSheet.idl:
+        * dom/Attr.idl:
+        * dom/CharacterData.idl:
+        * dom/DOMStringList.idl:
+        * dom/Document.idl:
+        * dom/DocumentType.idl:
+        * dom/Element.idl:
+        * dom/Entity.idl:
+        * dom/MutationRecord.idl:
+        * dom/Node.idl:
+        * dom/ProcessingInstruction.idl:
+        * html/DOMSettableTokenList.idl:
+        * html/DOMTokenList.idl:
+        * html/DOMURL.idl:
+        * html/canvas/WebGLDebugShaders.idl:
+        * html/canvas/WebGLRenderingContextBase.idl:
+        * page/DOMWindow.idl:
+        * storage/Storage.idl:
+        * storage/StorageEvent.idl:
+        * xml/XMLHttpRequest.idl:
+        * xml/XPathNSResolver.idl:
+
</ins><span class="cx"> 2016-02-24  Nikos Andronikos  &lt;nikos.andronikos-webkit@cisra.canon.com.au&gt;
</span><span class="cx"> 
</span><span class="cx">         [web-animations] Add AnimationTimeline, DocumentTimeline and add extensions to Document interface
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchHeadersidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchHeaders.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchHeaders.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/Modules/fetch/FetchHeaders.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> interface FetchHeaders {
</span><span class="cx">     [RaisesException] void append(DOMString name, DOMString value);
</span><span class="cx">     [RaisesException, ImplementedAs=remove] void delete(DOMString name);
</span><del>-    [RaisesException, TreatReturnedNullStringAs=Null] DOMString get(DOMString name);
</del><ins>+    [RaisesException] DOMString? get(DOMString name);
</ins><span class="cx">     [RaisesException] boolean has(DOMString name);
</span><span class="cx">     [RaisesException] void set(DOMString name, DOMString value);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBObjectStoreidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx">     JSCustomMarkFunction,
</span><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx"> ] interface IDBObjectStore {
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
</del><ins>+    readonly attribute DOMString? name;
</ins><span class="cx">     [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
</span><span class="cx">     readonly attribute DOMStringList indexNames;
</span><span class="cx">     readonly attribute IDBTransaction transaction;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceDOMURLMediaSourceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -31,5 +31,5 @@
</span><span class="cx">     Conditional=MEDIA_SOURCE
</span><span class="cx"> ]
</span><span class="cx"> partial interface DOMURL {
</span><del>-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaSource? source);
</del><ins>+    [CallWith=ScriptExecutionContext] static DOMString? createObjectURL(MediaSource? source);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamDOMURLMediaStreamidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/DOMURLMediaStream.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/DOMURLMediaStream.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/Modules/mediastream/DOMURLMediaStream.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -31,5 +31,5 @@
</span><span class="cx">     Conditional=MEDIA_STREAM
</span><span class="cx"> ]
</span><span class="cx"> partial interface DOMURL {
</span><del>-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaStream? stream);
</del><ins>+    [CallWith=ScriptExecutionContext] static DOMString? createObjectURL(MediaStream? stream);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -57,8 +57,8 @@
</span><span class="cx">     attribute EventHandler onerror;
</span><span class="cx">     attribute EventHandler onclose;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString protocol;
-    [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString extensions;
</del><ins>+    readonly attribute DOMString? protocol;
+    readonly attribute DOMString? extensions;
</ins><span class="cx"> 
</span><span class="cx">     attribute DOMString binaryType;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -4262,7 +4262,6 @@
</span><span class="cx">         AddToImplIncludes(&quot;URL.h&quot;, $conditional);
</span><span class="cx">         my $conv = $signature-&gt;extendedAttributes-&gt;{&quot;TreatReturnedNullStringAs&quot;};
</span><span class="cx">         if (defined $conv) {
</span><del>-            return &quot;jsStringOrNull(state, $value)&quot; if $conv eq &quot;Null&quot;;
</del><span class="cx">             return &quot;jsStringOrUndefined(state, $value)&quot; if $conv eq &quot;Undefined&quot;;
</span><span class="cx"> 
</span><span class="cx">             die &quot;Unknown value for TreatReturnedNullStringAs extended attribute&quot;;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLAttributestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> SuppressToJSObject
</span><span class="cx"> TreatNullAs=NullString
</span><span class="cx"> TreatReturnedNaNDateAs=Null|NaN
</span><del>-TreatReturnedNullStringAs=Null|Undefined
</del><ins>+TreatReturnedNullStringAs=Undefined
</ins><span class="cx"> TreatUndefinedAs=NullString
</span><span class="cx"> TypedArray=*
</span><span class="cx"> URL
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLParserpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLParser.pm (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLParser.pm        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/IDLParser.pm        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -1125,7 +1125,12 @@
</span><span class="cx">         my $returnType = $self-&gt;parseReturnType();
</span><span class="cx">         my $interface = $self-&gt;parseOperationRest($extendedAttributeList);
</span><span class="cx">         if (defined ($interface)) {
</span><del>-            $interface-&gt;signature-&gt;type($returnType);
</del><ins>+            if (typeHasNullableSuffix($returnType)) {
+                $interface-&gt;signature-&gt;isNullable(1);
+            } else {
+                $interface-&gt;signature-&gt;isNullable(0);
+            }
+            $interface-&gt;signature-&gt;type(typeRemoveNullableSuffix($returnType));
</ins><span class="cx">         }
</span><span class="cx">         return $interface;
</span><span class="cx">     }
</span><span class="lines">@@ -1223,7 +1228,13 @@
</span><span class="cx">         my $next = $self-&gt;nextToken();
</span><span class="cx">         if ($next-&gt;type() == IdentifierToken || $next-&gt;value() eq &quot;(&quot;) {
</span><span class="cx">             my $operation = $self-&gt;parseOperationRest($extendedAttributeList);
</span><del>-            $operation-&gt;signature-&gt;type($returnType);
</del><ins>+            if (typeHasNullableSuffix($returnType)) {
+                $operation-&gt;signature-&gt;isNullable(1);
+            } else {
+                $operation-&gt;signature-&gt;isNullable(0);
+            }
+            $operation-&gt;signature-&gt;type(typeRemoveNullableSuffix($returnType));
+
</ins><span class="cx">             return $operation;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1242,8 +1253,14 @@
</span><span class="cx">         my $returnType = $self-&gt;parseReturnType();
</span><span class="cx">         my $interface = $self-&gt;parseOperationRest($extendedAttributeList);
</span><span class="cx">         if (defined ($interface)) {
</span><del>-            $interface-&gt;signature-&gt;type($returnType);
-             $interface-&gt;signature-&gt;specials(\@specials);
</del><ins>+            if (typeHasNullableSuffix($returnType)) {
+                $interface-&gt;signature-&gt;isNullable(1);
+            } else {
+                $interface-&gt;signature-&gt;isNullable(0);
+            }
+            $interface-&gt;signature-&gt;type(typeRemoveNullableSuffix($returnType));
+
+            $interface-&gt;signature-&gt;specials(\@specials);
</ins><span class="cx">         }
</span><span class="cx">         return $interface;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -1252,6 +1252,24 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+gchar* webkit_dom_test_obj_nullable_string_method(WebKitDOMTestObj* self)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_val_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self), 0);
+    WebCore::TestObj* item = WebKit::core(self);
+    gchar* result = convertToUTF8String(item-&gt;nullableStringMethod());
+    return result;
+}
+
+gchar* webkit_dom_test_obj_nullable_string_special_method(WebKitDOMTestObj* self, gulong index)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_val_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self), 0);
+    WebCore::TestObj* item = WebKit::core(self);
+    gchar* result = convertToUTF8String(item-&gt;nullableStringSpecialMethod(index));
+    return result;
+}
+
</ins><span class="cx"> void webkit_dom_test_obj_method_with_enum_arg(WebKitDOMTestObj* self, WebKitDOMTestEnumType* enumArg)
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -1549,16 +1567,6 @@
</span><span class="cx">     item-&gt;convert1(convertedValue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void webkit_dom_test_obj_convert2(WebKitDOMTestObj* self, WebKitDOMTestNode* value)
-{
-    WebCore::JSMainThreadNullState state;
-    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
-    g_return_if_fail(WEBKIT_DOM_IS_TEST_NODE(value));
-    WebCore::TestObj* item = WebKit::core(self);
-    WebCore::TestNode* convertedValue = WebKit::core(value);
-    item-&gt;convert2(convertedValue);
-}
-
</del><span class="cx"> void webkit_dom_test_obj_convert4(WebKitDOMTestObj* self, WebKitDOMTestNode* value)
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -247,6 +247,29 @@
</span><span class="cx"> webkit_dom_test_obj_unforgeable_method(WebKitDOMTestObj* self);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_nullable_string_method:
+ * @self: A #WebKitDOMTestObj
+ *
+ * Returns: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API gchar*
+webkit_dom_test_obj_nullable_string_method(WebKitDOMTestObj* self);
+
+/**
+ * webkit_dom_test_obj_nullable_string_special_method:
+ * @self: A #WebKitDOMTestObj
+ * @index: A #gulong
+ *
+ * Returns: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API gchar*
+webkit_dom_test_obj_nullable_string_special_method(WebKitDOMTestObj* self, gulong index);
+
+/**
</ins><span class="cx">  * webkit_dom_test_obj_method_with_enum_arg:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  * @enumArg: A #WebKitDOMTestEnumType
</span><span class="lines">@@ -526,16 +549,6 @@
</span><span class="cx"> webkit_dom_test_obj_convert1(WebKitDOMTestObj* self, WebKitDOMTestNode* value);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * webkit_dom_test_obj_convert2:
- * @self: A #WebKitDOMTestObj
- * @value: A #WebKitDOMTestNode
- *
- * Stability: Unstable
-**/
-WEBKIT_API void
-webkit_dom_test_obj_convert2(WebKitDOMTestObj* self, WebKitDOMTestNode* value);
-
-/**
</del><span class="cx">  * webkit_dom_test_obj_convert4:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  * @value: A #WebKitDOMTestNode
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;runtime/JSArray.h&gt;
</span><span class="cx"> #include &lt;runtime/JSString.h&gt;
</span><ins>+#include &lt;runtime/PropertyNameArray.h&gt;
</ins><span class="cx"> #include &lt;runtime/Symbol.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -99,6 +100,9 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjInstanceFunctionUnforgeableMethod(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringMethod(JSC::ExecState*);
+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionNullableStringStaticMethod(JSC::ExecState*);
+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringSpecialMethod(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithSequenceArg(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodReturningSequence(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithEnumArg(JSC::ExecState*);
</span><span class="lines">@@ -163,7 +167,6 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionGetSVGDocument(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert1(JSC::ExecState*);
</span><del>-JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert2(JSC::ExecState*);
</del><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert4(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert5(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMutablePointFunction(JSC::ExecState*);
</span><span class="lines">@@ -443,6 +446,7 @@
</span><span class="cx">     { &quot;staticStringAttr&quot;, DontDelete, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructorStaticStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConstructorStaticStringAttr) } },
</span><span class="cx">     { &quot;TestSubObj&quot;, DontDelete | ReadOnly, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructorTestSubObj), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
</span><span class="cx">     { &quot;staticReadOnlySymbolAttr&quot;, DontDelete | ReadOnly, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructorStaticReadOnlySymbolAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
</span><ins>+    { &quot;nullableStringStaticMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjConstructorFunctionNullableStringStaticMethod), (intptr_t) (0) } },
</ins><span class="cx">     { &quot;staticMethodWithCallbackAndOptionalArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg), (intptr_t) (0) } },
</span><span class="cx">     { &quot;staticMethodWithCallbackArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjConstructorFunctionStaticMethodWithCallbackArg), (intptr_t) (1) } },
</span><span class="cx">     { &quot;classMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjConstructorFunctionClassMethod), (intptr_t) (0) } },
</span><span class="lines">@@ -611,6 +615,8 @@
</span><span class="cx">     { &quot;longMethodWithArgs&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionLongMethodWithArgs), (intptr_t) (3) } },
</span><span class="cx">     { &quot;objMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionObjMethod), (intptr_t) (0) } },
</span><span class="cx">     { &quot;objMethodWithArgs&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionObjMethodWithArgs), (intptr_t) (3) } },
</span><ins>+    { &quot;nullableStringMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionNullableStringMethod), (intptr_t) (0) } },
+    { &quot;nullableStringSpecialMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionNullableStringSpecialMethod), (intptr_t) (1) } },
</ins><span class="cx">     { &quot;methodWithSequenceArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithSequenceArg), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodReturningSequence&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodReturningSequence), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithEnumArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithEnumArg), (intptr_t) (1) } },
</span><span class="lines">@@ -684,7 +690,6 @@
</span><span class="cx">     { &quot;methodWithAndWithoutNullableSequence2&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2), (intptr_t) (2) } },
</span><span class="cx">     { &quot;getSVGDocument&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionGetSVGDocument), (intptr_t) (0) } },
</span><span class="cx">     { &quot;convert1&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionConvert1), (intptr_t) (1) } },
</span><del>-    { &quot;convert2&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionConvert2), (intptr_t) (1) } },
</del><span class="cx">     { &quot;convert4&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionConvert4), (intptr_t) (1) } },
</span><span class="cx">     { &quot;convert5&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionConvert5), (intptr_t) (1) } },
</span><span class="cx">     { &quot;mutablePointFunction&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMutablePointFunction), (intptr_t) (0) } },
</span><span class="lines">@@ -762,11 +767,30 @@
</span><span class="cx"> {
</span><span class="cx">     auto* thisObject = jsCast&lt;JSTestObj*&gt;(object);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObject, info());
</span><ins>+    Optional&lt;uint32_t&gt; optionalIndex = parseIndex(propertyName);
+    if (optionalIndex) {
+        unsigned index = optionalIndex.value();
+        unsigned attributes = DontDelete | ReadOnly;
+        slot.setValue(thisObject, attributes, jsStringOrUndefined(state, thisObject-&gt;wrapped().item(index)));
+        return true;
+    }
</ins><span class="cx">     if (getStaticPropertySlot&lt;JSTestObj, Base&gt;(state, JSTestObjTable, thisObject, propertyName, slot))
</span><span class="cx">         return true;
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool JSTestObj::getOwnPropertySlotByIndex(JSObject* object, ExecState* state, unsigned index, PropertySlot&amp; slot)
+{
+    auto* thisObject = jsCast&lt;JSTestObj*&gt;(object);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    if (index &lt;= MAX_ARRAY_INDEX) {
+        unsigned attributes = DontDelete | ReadOnly;
+        slot.setValue(thisObject, attributes, jsStringOrUndefined(state, thisObject-&gt;wrapped().item(index)));
+        return true;
+    }
+    return Base::getOwnPropertySlotByIndex(thisObject, state, index, slot);
+}
+
</ins><span class="cx"> EncodedJSValue jsTestObjReadOnlyLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -3075,6 +3099,15 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+void JSTestObj::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
+{
+    auto* thisObject = jsCast&lt;JSTestObj*&gt;(object);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    for (unsigned i = 0, count = thisObject-&gt;wrapped().length(); i &lt; count; ++i)
+        propertyNames.add(Identifier::from(state, i));
+    Base::getOwnPropertyNames(thisObject, state, propertyNames, mode);
+}
+
</ins><span class="cx"> JSValue JSTestObj::getConstructor(VM&amp; vm, const JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx">     return getDOMConstructor&lt;JSTestObjConstructor&gt;(vm, *jsCast&lt;const JSDOMGlobalObject*&gt;(globalObject));
</span><span class="lines">@@ -3267,6 +3300,41 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringMethod(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;nullableStringMethod&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringOrNull(state, impl.nullableStringMethod());
+    return JSValue::encode(result);
+}
+
+EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionNullableStringStaticMethod(ExecState* state)
+{
+    JSValue result = jsStringOrNull(state, TestObj::nullableStringStaticMethod());
+    return JSValue::encode(result);
+}
+
+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringSpecialMethod(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;nullableStringSpecialMethod&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));
+    unsigned index = toUInt32(state, state-&gt;argument(0), NormalConversion);
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    JSValue result = jsStringOrNull(state, impl.nullableStringSpecialMethod(index));
+    return JSValue::encode(result);
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithSequenceArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><span class="lines">@@ -4558,23 +4626,6 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert2(ExecState* state)
-{
-    JSValue thisValue = state-&gt;thisValue();
-    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
-    if (UNLIKELY(!castedThis))
-        return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;convert2&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));
-    TestNode* value = JSTestNode::toWrapped(state-&gt;argument(0));
-    if (UNLIKELY(state-&gt;hadException()))
-        return JSValue::encode(jsUndefined());
-    impl.convert2(value);
-    return JSValue::encode(jsUndefined());
-}
-
</del><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert4(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx">     static JSC::JSObject* getPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
</span><span class="cx">     static TestObj* toWrapped(JSC::JSValue);
</span><span class="cx">     static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;);
</span><ins>+    static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&amp;);
</ins><span class="cx">     static void destroy(JSC::JSCell*);
</span><span class="cx"> 
</span><span class="cx">     DECLARE_INFO;
</span><span class="lines">@@ -52,6 +53,7 @@
</span><span class="cx">         return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&amp;, JSC::EnumerationMode = JSC::EnumerationMode());
</ins><span class="cx">     static JSC::JSValue getConstructor(JSC::VM&amp;, const JSC::JSGlobalObject*);
</span><span class="cx">     mutable JSC::WriteBarrier&lt;JSC::Unknown&gt; m_cachedAttribute1;
</span><span class="cx">     mutable JSC::WriteBarrier&lt;JSC::Unknown&gt; m_cachedAttribute2;
</span><span class="lines">@@ -67,7 +69,7 @@
</span><span class="cx">     JSC::JSValue customMethodWithArgs(JSC::ExecState&amp;);
</span><span class="cx">     static JSC::JSValue classMethod2(JSC::ExecState&amp;);
</span><span class="cx"> public:
</span><del>-    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</del><ins>+    static const unsigned StructureFlags = JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | Base::StructureFlags;
</ins><span class="cx"> protected:
</span><span class="cx">     JSTestObj(JSC::Structure*, JSDOMGlobalObject&amp;, Ref&lt;TestObj&gt;&amp;&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -143,6 +143,9 @@
</span><span class="cx"> - (DOMTestObj *)objMethod;
</span><span class="cx"> - (DOMTestObj *)objMethodWithArgs:(int)longArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg;
</span><span class="cx"> - (int)unforgeableMethod;
</span><ins>+- (NSString *)nullableStringMethod;
+- (NSString *)nullableStringStaticMethod;
+- (NSString *)nullableStringSpecialMethod:(unsigned)index;
</ins><span class="cx"> - (void)methodWithEnumArg:(DOMTestEnumType *)enumArg;
</span><span class="cx"> - (void)methodWithOptionalEnumArgAndDefaultValue:(DOMTestEnumType *)enumArg;
</span><span class="cx"> - (DOMTestObj *)methodThatRequiresAllArgsAndThrows:(NSString *)strArg objArg:(DOMTestObj *)objArg;
</span><span class="lines">@@ -176,7 +179,6 @@
</span><span class="cx"> - (void)classMethod2:(int)arg;
</span><span class="cx"> - (DOMSVGDocument *)getSVGDocument;
</span><span class="cx"> - (void)convert1:(DOMTestNode *)value;
</span><del>-- (void)convert2:(DOMTestNode *)value;
</del><span class="cx"> - (void)convert4:(DOMTestNode *)value;
</span><span class="cx"> - (void)convert5:(DOMTestNode *)value;
</span><span class="cx"> - (DOMSVGPoint *)mutablePointFunction;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -981,6 +981,24 @@
</span><span class="cx">     return IMPL-&gt;unforgeableMethod();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (NSString *)nullableStringMethod
+{
+    WebCore::JSMainThreadNullState state;
+    return IMPL-&gt;nullableStringMethod();
+}
+
+- (NSString *)nullableStringStaticMethod
+{
+    WebCore::JSMainThreadNullState state;
+    return IMPL-&gt;nullableStringStaticMethod();
+}
+
+- (NSString *)nullableStringSpecialMethod:(unsigned)index
+{
+    WebCore::JSMainThreadNullState state;
+    return IMPL-&gt;nullableStringSpecialMethod(index);
+}
+
</ins><span class="cx"> - (void)methodWithEnumArg:(DOMTestEnumType *)enumArg
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -1267,12 +1285,6 @@
</span><span class="cx">     IMPL-&gt;convert1(core(value));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)convert2:(DOMTestNode *)value
-{
-    WebCore::JSMainThreadNullState state;
-    IMPL-&gt;convert2(core(value));
-}
-
</del><span class="cx"> - (void)convert4:(DOMTestNode *)value
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -97,6 +97,11 @@
</span><span class="cx">     TestObj objMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
</span><span class="cx">     [Unforgeable] long unforgeableMethod();
</span><span class="cx"> 
</span><ins>+    // Nullable String return values.
+    DOMString? nullableStringMethod();
+    static DOMString? nullableStringStaticMethod();
+    getter DOMString? nullableStringSpecialMethod(unsigned long index);
+
</ins><span class="cx">     void methodWithSequenceArg(sequence&lt;ScriptProfile&gt; sequenceArg);
</span><span class="cx">     sequence&lt;ScriptProfile&gt; methodReturningSequence(long longArg);
</span><span class="cx"> 
</span><span class="lines">@@ -256,8 +261,7 @@
</span><span class="cx">     [CheckSecurityForNode] readonly attribute Document contentDocument;
</span><span class="cx">     [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
</span><span class="cx"> 
</span><del>-    void convert1([TreatReturnedNullStringAs=Null] TestNode value);
-    void convert2([TreatReturnedNullStringAs=Undefined] TestNode value);
</del><ins>+    void convert1(TestNode value);
</ins><span class="cx">     void convert4([TreatNullAs=NullString] TestNode value);
</span><span class="cx">     void convert5([TreatNullAs=NullString, TreatUndefinedAs=NullString] TestNode value);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSCharsetRuleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSCharsetRule.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSCharsetRule.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSCharsetRule.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -21,9 +21,9 @@
</span><span class="cx"> // Introduced in DOM Level 2:
</span><span class="cx"> interface CSSCharsetRule : CSSRule {
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString encoding;
</del><ins>+    readonly attribute DOMString? encoding;
</ins><span class="cx"> #else
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString encoding;
</del><ins>+    [SetterRaisesException] attribute DOMString? encoding;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSImportRuleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSImportRule.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSImportRule.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSImportRule.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Introduced in DOM Level 2:
</span><span class="cx"> interface CSSImportRule : CSSRule {
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString href;
</del><ins>+    readonly attribute DOMString? href;
</ins><span class="cx">     readonly attribute MediaList media;
</span><span class="cx">     readonly attribute CSSStyleSheet styleSheet;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSKeyframesRuleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSKeyframesRule.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSKeyframesRule.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSKeyframesRule.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -27,8 +27,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface CSSKeyframesRule : CSSRule {
</span><del>-
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString name;
</del><ins>+    attribute DOMString? name;
</ins><span class="cx">     readonly attribute CSSRuleList cssRules;
</span><span class="cx">     
</span><span class="cx">     void insertRule([Default=Undefined] optional DOMString rule);
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPageRuleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPageRule.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPageRule.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSPageRule.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -20,10 +20,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Introduced in DOM Level 2:
</span><span class="cx"> interface CSSPageRule : CSSRule {
</span><ins>+    attribute DOMString? selectorText;
</ins><span class="cx"> 
</span><del>-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectorText;
-
</del><span class="cx">     readonly attribute CSSStyleDeclaration style;
</span><del>-
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSRuleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSRule.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSRule.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSRule.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned short   type;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString cssText;
</del><ins>+    [SetterRaisesException] attribute DOMString? cssText;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute CSSStyleSheet    parentStyleSheet;
</span><span class="cx">     readonly attribute CSSRule          parentRule;
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSStyleDeclarationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSStyleDeclaration.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSStyleDeclaration.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSStyleDeclaration.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx">     CustomEnumerateProperty,
</span><span class="cx">     SkipVTableValidation,
</span><span class="cx"> ] interface CSSStyleDeclaration {
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString cssText;
</del><ins>+    [SetterRaisesException] attribute DOMString? cssText;
</ins><span class="cx"> 
</span><span class="cx">     DOMString getPropertyValue([Default=Undefined] DOMString propertyName);
</span><span class="cx">     [Custom] CSSValue           getPropertyCSSValue([Default=Undefined] optional DOMString propertyName);
</span><del>-    [TreatReturnedNullStringAs=Null, RaisesException] DOMString          removeProperty([Default=Undefined] optional DOMString propertyName);
-    [TreatReturnedNullStringAs=Null] DOMString          getPropertyPriority([Default=Undefined] optional DOMString propertyName);
</del><ins>+    [RaisesException] DOMString          removeProperty([Default=Undefined] optional DOMString propertyName);
+    DOMString?          getPropertyPriority([Default=Undefined] optional DOMString propertyName);
</ins><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException] void setProperty([Default=Undefined] optional DOMString propertyName, 
</span><span class="cx">                                     [TreatNullAs=NullString, Default=Undefined] optional DOMString value, 
</span><span class="cx">                                     [Default=Undefined] optional DOMString priority);
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">     readonly attribute CSSRule          parentRule;
</span><span class="cx"> 
</span><span class="cx">     // Extensions
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString          getPropertyShorthand([Default=Undefined] optional DOMString propertyName);
</del><ins>+    DOMString?          getPropertyShorthand([Default=Undefined] optional DOMString propertyName);
</ins><span class="cx">     boolean            isPropertyImplicit([Default=Undefined] optional DOMString propertyName);
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSStyleRuleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSStyleRule.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSStyleRule.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSStyleRule.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -20,10 +20,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Introduced in DOM Level 2:
</span><span class="cx"> interface CSSStyleRule : CSSRule {
</span><ins>+    attribute DOMString? selectorText;
</ins><span class="cx"> 
</span><del>-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectorText;
-
</del><span class="cx">     readonly attribute CSSStyleDeclaration style;
</span><del>-
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValue.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValue.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/CSSValue.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -25,16 +25,14 @@
</span><span class="cx">     ObjCPolymorphic,
</span><span class="cx">     ImplementationLacksVTable
</span><span class="cx"> ] interface CSSValue {
</span><del>-
</del><span class="cx">     // UnitTypes
</span><span class="cx">     const unsigned short CSS_INHERIT         = 0;
</span><span class="cx">     const unsigned short CSS_PRIMITIVE_VALUE = 1;
</span><span class="cx">     const unsigned short CSS_VALUE_LIST      = 2;
</span><span class="cx">     const unsigned short CSS_CUSTOM          = 3;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString cssText;
</del><ins>+    [SetterRaisesException] attribute DOMString? cssText;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned short cssValueType;
</span><del>-
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssMediaListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/MediaList.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/MediaList.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/MediaList.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -30,10 +30,10 @@
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface MediaList {
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString, TreatReturnedNullStringAs=Null, SetterRaisesException] attribute DOMString mediaText;
</del><ins>+    [SetterRaisesException] attribute DOMString? mediaText;
</ins><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] getter DOMString item([Default=Undefined] optional unsigned long index);
</del><ins>+    getter DOMString? item([Default=Undefined] optional unsigned long index);
</ins><span class="cx">     [RaisesException] void deleteMedium([Default=Undefined] optional DOMString oldMedium);
</span><span class="cx">     [RaisesException] void appendMedium([Default=Undefined] optional DOMString newMedium);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleSheetidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleSheet.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleSheet.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/css/StyleSheet.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -26,12 +26,12 @@
</span><span class="cx">     CustomToJSObject,
</span><span class="cx">     ObjCPolymorphic,
</span><span class="cx"> ] interface StyleSheet {
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString        type;
</del><ins>+    readonly attribute DOMString?       type;
</ins><span class="cx">              attribute boolean          disabled;
</span><span class="cx">     readonly attribute Node             ownerNode;
</span><span class="cx">     readonly attribute StyleSheet       parentStyleSheet;
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString        href;
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString        title;
</del><ins>+    readonly attribute DOMString?       href;
+    readonly attribute DOMString?       title;
</ins><span class="cx">     readonly attribute MediaList        media;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomAttridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Attr.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Attr.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/Attr.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -26,11 +26,11 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 1
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
</del><ins>+    readonly attribute DOMString? name;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute boolean specified;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString value;
</del><ins>+    [SetterRaisesException] attribute DOMString? value;
</ins><span class="cx"> 
</span><span class="cx">     // DOM Level 2
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomCharacterDataidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CharacterData.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CharacterData.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/CharacterData.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx">     
</span><del>-    [TreatReturnedNullStringAs=Null, ObjCLegacyUnnamedParameters, RaisesException] DOMString substringData(unsigned long offset, unsigned long length);
</del><ins>+    [ObjCLegacyUnnamedParameters, RaisesException] DOMString? substringData(unsigned long offset, unsigned long length);
</ins><span class="cx"> 
</span><span class="cx">     void appendData(DOMString data);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDOMStringListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DOMStringList.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DOMStringList.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/DOMStringList.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface DOMStringList {
</span><span class="cx">     readonly attribute unsigned long length;
</span><del>-    [TreatReturnedNullStringAs=Null] getter DOMString item([Default=Undefined] optional unsigned long index);
</del><ins>+    getter DOMString? item([Default=Undefined] optional unsigned long index);
</ins><span class="cx">     boolean contains([Default=Undefined] optional DOMString string);
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/Document.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -69,8 +69,8 @@
</span><span class="cx"> 
</span><span class="cx">     [ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString inputEncoding;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString xmlEncoding;
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlVersion;
</del><ins>+    readonly attribute DOMString? xmlEncoding;
+    [SetterRaisesException] attribute DOMString? xmlVersion;
</ins><span class="cx">     [SetterRaisesException] attribute boolean xmlStandalone;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] Node               adoptNode([Default=Undefined] optional Node source);
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">     // (see http://www.w3.org/TR/2011/WD-dom-20110915/#document). We need to keep
</span><span class="cx">     // the writable version around for Objective C clients, but are moving to
</span><span class="cx">     // read-only for other clients.
</span><del>-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString documentURI;
</del><ins>+    attribute DOMString? documentURI;
</ins><span class="cx"> #else
</span><span class="cx">     [ImplementedAs=urlForBindings] readonly attribute DOMString documentURI;
</span><span class="cx"> #endif
</span><span class="lines">@@ -208,8 +208,8 @@
</span><span class="cx"> 
</span><span class="cx">     // WebKit extensions
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString preferredStylesheetSet;
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectedStylesheetSet;
</del><ins>+    readonly attribute DOMString? preferredStylesheetSet;
+    attribute DOMString? selectedStylesheetSet;
</ins><span class="cx"> 
</span><span class="cx"> #if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
</span><span class="cx">     CSSStyleDeclaration createCSSStyleDeclaration();
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentTypeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentType.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentType.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/DocumentType.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString publicId;
</span><span class="cx">     readonly attribute DOMString systemId;
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString internalSubset;
</del><ins>+    readonly attribute DOMString? internalSubset;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> DocumentType implements ChildNode;
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/Element.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -25,9 +25,9 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 1 Core
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString tagName;
</del><ins>+    readonly attribute DOMString? tagName;
</ins><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString getAttribute([Default=Undefined] optional DOMString name);
</del><ins>+    DOMString? getAttribute([Default=Undefined] optional DOMString name);
</ins><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException] void setAttribute([Default=Undefined] optional DOMString name,
</span><span class="cx">                                      [Default=Undefined] optional DOMString value);
</span><span class="cx">     void removeAttribute([Default=Undefined] optional DOMString name);
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 2 Core
</span><span class="cx"> 
</span><del>-    [ObjCLegacyUnnamedParameters, TreatReturnedNullStringAs=Null] DOMString getAttributeNS([TreatNullAs=NullString, TreatUndefinedAs=NullString, Default=Undefined] optional DOMString namespaceURI,
</del><ins>+    [ObjCLegacyUnnamedParameters] DOMString? getAttributeNS([TreatNullAs=NullString, TreatUndefinedAs=NullString, Default=Undefined] optional DOMString namespaceURI,
</ins><span class="cx">                                             [Default=Undefined] optional DOMString localName);
</span><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException] void setAttributeNS([TreatNullAs=NullString, TreatUndefinedAs=NullString, Default=Undefined] optional DOMString namespaceURI,
</span><span class="cx">                                        [Default=Undefined] optional DOMString qualifiedName, 
</span></span></pre></div>
<a id="trunkSourceWebCoredomEntityidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Entity.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Entity.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/Entity.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     ImplementationLacksVTable
</span><span class="cx"> ] interface Entity : Node {
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString publicId;
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString systemId;
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString notationName;
</del><ins>+    readonly attribute DOMString? publicId;
+    readonly attribute DOMString? systemId;
+    readonly attribute DOMString? notationName;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoredomMutationRecordidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MutationRecord.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MutationRecord.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/MutationRecord.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -39,8 +39,8 @@
</span><span class="cx">     readonly attribute Node previousSibling;
</span><span class="cx">     readonly attribute Node nextSibling;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString attributeName;
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString attributeNamespace;
</del><ins>+    readonly attribute DOMString? attributeName;
+    readonly attribute DOMString? attributeNamespace;
</ins><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString oldValue;
</del><ins>+    readonly attribute DOMString? oldValue;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/Node.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -46,10 +46,10 @@
</span><span class="cx">     const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
</span><span class="cx">     const unsigned short      NOTATION_NODE                  = 12;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString        nodeName;
</del><ins>+    readonly attribute DOMString?        nodeName;
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: the spec says this can also raise on retrieval.
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString nodeValue;
</del><ins>+    [SetterRaisesException] attribute DOMString? nodeValue;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned short   nodeType;
</span><span class="cx">     readonly attribute Node             parentNode;
</span><span class="lines">@@ -80,9 +80,9 @@
</span><span class="cx">                                        [TreatNullAs=NullString,Default=Undefined] optional DOMString version);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString        namespaceURI;
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString prefix;
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString        localName;
</del><ins>+    readonly attribute DOMString?        namespaceURI;
+    [SetterRaisesException] attribute DOMString? prefix;
+    readonly attribute DOMString?        localName;
</ins><span class="cx"> 
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C)
</span><span class="cx">     readonly attribute NamedNodeMap     attributes;
</span><span class="lines">@@ -92,16 +92,16 @@
</span><span class="cx"> 
</span><span class="cx">     // Introduced in DOM Level 3:
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString       baseURI;
</del><ins>+    readonly attribute DOMString?       baseURI;
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: the spec says this can also raise on retrieval.
</span><del>-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, TreatUndefinedAs=NullString, SetterRaisesException] attribute DOMString textContent;
</del><ins>+    [SetterRaisesException] attribute DOMString? textContent;
</ins><span class="cx"> 
</span><span class="cx">     boolean            isSameNode([Default=Undefined] optional Node other);
</span><span class="cx">     boolean            isEqualNode([Default=Undefined] optional Node other);
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString          lookupPrefix([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI);
</del><ins>+    DOMString?         lookupPrefix([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI);
</ins><span class="cx">     boolean            isDefaultNamespace([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI);
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString          lookupNamespaceURI([TreatNullAs=NullString,Default=Undefined] optional DOMString prefix);
</del><ins>+    DOMString?         lookupNamespaceURI([TreatNullAs=NullString,Default=Undefined] optional DOMString prefix);
</ins><span class="cx"> 
</span><span class="cx">     // DocumentPosition
</span><span class="cx">     const unsigned short      DOCUMENT_POSITION_DISCONNECTED = 0x01;
</span></span></pre></div>
<a id="trunkSourceWebCoredomProcessingInstructionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ProcessingInstruction.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ProcessingInstruction.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/dom/ProcessingInstruction.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 1
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString target;
</del><ins>+    readonly attribute DOMString? target;
</ins><span class="cx"> 
</span><span class="cx">     // interface LinkStyle from DOM Level 2 Style Sheets
</span><span class="cx">     readonly attribute StyleSheet sheet;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMSettableTokenListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMSettableTokenList.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMSettableTokenList.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/html/DOMSettableTokenList.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> ] interface DOMSettableTokenList : DOMTokenList {
</span><span class="cx">     attribute DOMString value;
</span><span class="cx"> 
</span><del>-    [TreatReturnedNullStringAs=Null] getter DOMString (unsigned long index);
</del><ins>+    getter DOMString? (unsigned long index);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMTokenListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMTokenList.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMTokenList.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/html/DOMTokenList.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     SkipVTableValidation,
</span><span class="cx"> ] interface DOMTokenList {
</span><span class="cx">     readonly attribute unsigned long length;
</span><del>-    [TreatReturnedNullStringAs=Null] getter DOMString item(unsigned long index);
</del><ins>+    getter DOMString? item(unsigned long index);
</ins><span class="cx">     [RaisesException] boolean contains(DOMString token);
</span><span class="cx">     [RaisesException] void add(DOMString... tokens);
</span><span class="cx">     [RaisesException] void remove(DOMString... tokens);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMURLidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMURL.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMURL.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/html/DOMURL.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     InterfaceName=URL,
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface DOMURL {
</span><del>-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(Blob? blob);
</del><ins>+    [CallWith=ScriptExecutionContext] static DOMString? createObjectURL(Blob? blob);
</ins><span class="cx">     [CallWith=ScriptExecutionContext] static void revokeObjectURL(DOMString url);
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLDebugShadersidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLDebugShaders.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLDebugShaders.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/html/canvas/WebGLDebugShaders.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -28,5 +28,5 @@
</span><span class="cx">     Conditional=WEBGL,
</span><span class="cx">     GenerateIsReachable=ImplWebGLRenderingContext,
</span><span class="cx"> ] interface WebGLDebugShaders {
</span><del>-    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString getTranslatedShaderSource(WebGLShader shader);
</del><ins>+    [StrictTypeChecking, RaisesException] DOMString? getTranslatedShaderSource(WebGLShader shader);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextBaseidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -554,15 +554,15 @@
</span><span class="cx">     [StrictTypeChecking, Custom, RaisesException] any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname);
</span><span class="cx">     [StrictTypeChecking, Custom, RaisesException] any getParameter(GLenum pname);
</span><span class="cx">     [StrictTypeChecking, Custom, RaisesException] any getProgramParameter(WebGLProgram program, GLenum pname);
</span><del>-    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString getProgramInfoLog(WebGLProgram program);
</del><ins>+    [StrictTypeChecking, RaisesException] DOMString? getProgramInfoLog(WebGLProgram program);
</ins><span class="cx">     [StrictTypeChecking, Custom, RaisesException] any getRenderbufferParameter(GLenum target, GLenum pname);
</span><span class="cx">     [StrictTypeChecking, Custom, RaisesException] any getShaderParameter(WebGLShader shader, GLenum pname);
</span><span class="cx"> 
</span><del>-    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString    getShaderInfoLog(WebGLShader shader);
</del><ins>+    [StrictTypeChecking, RaisesException] DOMString?    getShaderInfoLog(WebGLShader shader);
</ins><span class="cx"> 
</span><span class="cx">     [StrictTypeChecking, RaisesException] WebGLShaderPrecisionFormat getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype);
</span><span class="cx"> 
</span><del>-    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString    getShaderSource(WebGLShader shader);
</del><ins>+    [StrictTypeChecking, RaisesException] DOMString?    getShaderSource(WebGLShader shader);
</ins><span class="cx"> 
</span><span class="cx">     [StrictTypeChecking, Custom] sequence&lt;DOMString&gt; getSupportedExtensions();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/page/DOMWindow.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> 
</span><span class="cx">     void alert([Default=Undefined] optional DOMString message);
</span><span class="cx">     boolean confirm([Default=Undefined] optional DOMString message);
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString prompt([Default=Undefined] optional DOMString message,
</del><ins>+    DOMString? prompt([Default=Undefined] optional DOMString message,
</ins><span class="cx">                                                 [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString defaultValue);
</span><span class="cx"> 
</span><span class="cx">     boolean find([Default=Undefined] optional DOMString string,
</span></span></pre></div>
<a id="trunkSourceWebCorestorageStorageidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/storage/Storage.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/storage/Storage.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/storage/Storage.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx">     SkipVTableValidation,
</span><span class="cx"> ] interface Storage {
</span><span class="cx">     [GetterRaisesException] readonly attribute unsigned long length;
</span><del>-    [TreatReturnedNullStringAs=Null, RaisesException] DOMString key(unsigned long index);
-    [TreatReturnedNullStringAs=Null, RaisesException] getter DOMString getItem(DOMString key);
</del><ins>+    [RaisesException] DOMString? key(unsigned long index);
+    [RaisesException] getter DOMString? getItem(DOMString key);
</ins><span class="cx">     [RaisesException] void setItem(DOMString key, DOMString data);
</span><span class="cx">     [RaisesException] void removeItem(DOMString key);
</span><span class="cx">     [RaisesException] void clear();
</span></span></pre></div>
<a id="trunkSourceWebCorestorageStorageEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/storage/StorageEvent.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/storage/StorageEvent.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/storage/StorageEvent.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -27,8 +27,8 @@
</span><span class="cx">     ConstructorTemplate=Event,
</span><span class="cx"> ] interface StorageEvent : Event {
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString key;
</span><del>-    [InitializedByEventConstructor, TreatReturnedNullStringAs=Null] readonly attribute DOMString oldValue;
-    [InitializedByEventConstructor, TreatReturnedNullStringAs=Null] readonly attribute DOMString newValue;
</del><ins>+    [InitializedByEventConstructor] readonly attribute DOMString? oldValue;
+    [InitializedByEventConstructor] readonly attribute DOMString? newValue;
</ins><span class="cx">     [InitializedByEventConstructor] readonly attribute DOMString url;
</span><span class="cx">     [InitializedByEventConstructor] readonly attribute Storage storageArea;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -70,8 +70,8 @@
</span><span class="cx"> 
</span><span class="cx">     // response
</span><span class="cx">     [TreatReturnedNullStringAs=Undefined] DOMString getAllResponseHeaders();
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString getResponseHeader(DOMString header);
-    [GetterRaisesException, CustomGetter] readonly attribute DOMString responseText; // The custom getter implements TreatReturnedNullStringAs=Null
</del><ins>+    DOMString? getResponseHeader(DOMString header);
+    [GetterRaisesException, CustomGetter] readonly attribute DOMString? responseText;
</ins><span class="cx">     [GetterRaisesException] readonly attribute Document responseXML;
</span><span class="cx"> 
</span><span class="cx">     [SetterRaisesException] attribute XMLHttpRequestResponseType responseType;
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathNSResolveridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathNSResolver.idl (197059 => 197060)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathNSResolver.idl        2016-02-25 01:28:51 UTC (rev 197059)
+++ trunk/Source/WebCore/xml/XPathNSResolver.idl        2016-02-25 02:39:19 UTC (rev 197060)
</span><span class="lines">@@ -23,6 +23,6 @@
</span><span class="cx">     ObjCProtocol,
</span><span class="cx">     SkipVTableValidation,
</span><span class="cx"> ] interface XPathNSResolver {
</span><del>-    [TreatReturnedNullStringAs=Null] DOMString lookupNamespaceURI([Default=Undefined] optional DOMString prefix);
</del><ins>+    DOMString? lookupNamespaceURI([Default=Undefined] optional DOMString prefix);
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>