<!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>[197353] 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/197353">197353</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-02-29 09:28:13 -0800 (Mon, 29 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Web IDL] Add support for [TreatNullAs=EmptyString] and use it
https://bugs.webkit.org/show_bug.cgi?id=154654

Reviewed by Darin Adler.

Add support for [TreatNullAs=EmptyString] standard Web IDL extended
attribute:
- http://heycam.github.io/webidl/#TreatNullAs

This replaces the WebKit-specific [TreatNullAs=NullString] IDL
extended attribute. Instead of passing a null String() to the
implementation, emptyString() is passed.

This patch does not cause any web-exposed behavior change. For
case where switching from NullString to EmptyString would change
the behavior (or require changes to the implementation), the old
IDL attribute was kept. However, it was renamed to
[TreatNullAs=LegacyNullString] to discourage its use in new code.
Eventually, this legacy IDL attribute should go away entirely.

[TreatNullAs=EmptyString] should only be used when it is present
in the corresponding specification. Note that there are a lot of
places where we use [TreatNullAs=EmptyString] in our IDL where it
does not match the specification. I have added FIXME comments for
those so we can clean them up later.

No new tests, no web-exposed behavior change.

* Modules/mediastream/RTCPeerConnection.idl:
No behavior change because this is not implemented.

* bindings/js/JSDOMBinding.cpp:
(WebCore::valueToStringTreatingNullAsEmptyString):
* bindings/js/JSDOMBinding.h:
Add new function to convert a JSValue into a String while treating
null as the empty string.

* bindings/scripts/CodeGeneratorJS.pm:
(JSValueToNative):
* bindings/scripts/IDLAttributes.txt:
- Add support for [TreatNullAs=EmptyString].
- Rename NullString to LegacyNullString to discourage its use.

* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
* bindings/scripts/test/GObject/WebKitDOMTestObj.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
* bindings/scripts/test/TestObj.idl:
Add bindings tests coverage for [TreatNullAs=EmptyString].

* css/CSSStyleDeclaration.idl:
* dom/CharacterData.idl:
* dom/DOMImplementation.idl:
* dom/Document.idl:
* dom/Element.idl:
* dom/ShadowRoot.idl:
* html/HTMLOutputElement.idl:
* html/HTMLScriptElement.idl:
* html/URLUtils.idl:
* svg/SVGAngle.idl:
* svg/SVGLength.idl:
Use [TreatNullAs=EmptyString] instead of [TreatNullAs=NullString].
There is not behavior change because the implementation does
not distinguish the null string from the empty string.

* html/HTMLBaseElement.idl:
* html/HTMLButtonElement.idl:
* html/HTMLFormElement.idl:
* html/HTMLMediaElement.idl:
* html/HTMLSelectElement.idl:
* svg/SVGElement.idl:
* svg/SVGScriptElement.idl:
Rename [TreatNullAs=NullString] to [TreatNullAs=LegacyNullString],
no behavior change.

* html/HTMLDocument.idl:
- dir and *Color: Rename [TreatNullAs=NullString] to
  [TreatNullAs=LegacyNullString].
- designMode: Drop [TreatNullAs=NullString] as per the specification:
  - https://html.spec.whatwg.org/multipage/dom.html#the-document-object
  null now gets converted to &quot;null&quot; instead of the null String but this
  does not change behavior because the implementation only recognizes
  &quot;on&quot; / &quot;off&quot; / others. So we still end up using inherit mode when
  set to null.

* html/HTMLElement.idl:
- Use [TreatNullAs=EmptyString] instead of [TreatNullAs=NullString] for
  innerText / outerText. Does not change behavior because the
  implementation does not distinguishes.
- Drop [TreatNullAs=NullString] from contentEditable to match the spec:
  - https://html.spec.whatwg.org/multipage/interaction.html#elementcontenteditable
  This does not change behavior because the implementation will the a SyntaxError
  wether a null String or the string &quot;null&quot; is passed.

* html/HTMLFrameElement.idl:
Drop [TreatNullAs=NullString] from location attribute. This does not
change behavior because the attribute is using a custom setter.

* html/HTMLInputElement.idl:
- formEnctype / formMethod / autocapitalize: Rename [TreatNullAs=NullString] to
  [TreatNullAs=LegacyNullString].
- value: Rename [TreatNullAs=NullString] to Rename [TreatNullAs=EmptyString], which
  does not change behavior because the implementation does not distinguish. Also
  drop the extended attribute for non-JS bindings as it has no impact.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setMediaGroup):
Drop redundant group.isNull() check as group.isEmpty() already checks for null.

* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::setText):
Drop useless .impl() call as we have a String and the method requires a String
as input.

* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::setValueCommon):
Use emptyString() instead of &quot;&quot; as it is slightly more efficient.

* html/HTMLTextAreaElement.idl:
- value: Use [TreatNullAs=EmptyString] instead of [TreatNullAs=NullString]. No
  behavior change because the implementation does not distinguish.
- autocapitalize: Rename [TreatNullAs=NullString] to [TreatNullAs=LegacyNullString].

* html/canvas/CanvasRenderingContext2D.idl:
- globalCompositeOperation / repetitionType: Use [TreatNullAs=EmptyString] instead of
  [TreatNullAs=NullString]. No behavior change because the implementation does not
  distinguish.
- lineCap / lineJoin: Drop the [TreatNullAs=NullString] to match the spec:
  - https://html.spec.whatwg.org/multipage/scripting.html#canvaspathdrawingstyles
  There is no behavior change because those are string enumerations and the value
  is not recognized either way (String() or String(&quot;null&quot;)).
- shadowColor: Drop the [TreatNullAs=NullString] to match the spec:
  - https://html.spec.whatwg.org/multipage/scripting.html#canvasshadowstyles
  No behavior change because this is not a valid color either way.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectionidl">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#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="#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="#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="#trunkSourceWebCorecssCSSStyleDeclarationidl">trunk/Source/WebCore/css/CSSStyleDeclaration.idl</a></li>
<li><a href="#trunkSourceWebCoredomCharacterDataidl">trunk/Source/WebCore/dom/CharacterData.idl</a></li>
<li><a href="#trunkSourceWebCoredomDOMImplementationidl">trunk/Source/WebCore/dom/DOMImplementation.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
<li><a href="#trunkSourceWebCoredomShadowRootidl">trunk/Source/WebCore/dom/ShadowRoot.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBaseElementidl">trunk/Source/WebCore/html/HTMLBaseElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLButtonElementidl">trunk/Source/WebCore/html/HTMLButtonElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDocumentidl">trunk/Source/WebCore/html/HTMLDocument.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementidl">trunk/Source/WebCore/html/HTMLElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormElementidl">trunk/Source/WebCore/html/HTMLFormElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementidl">trunk/Source/WebCore/html/HTMLFrameElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementidl">trunk/Source/WebCore/html/HTMLInputElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementidl">trunk/Source/WebCore/html/HTMLMediaElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOutputElementidl">trunk/Source/WebCore/html/HTMLOutputElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLScriptElementcpp">trunk/Source/WebCore/html/HTMLScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLScriptElementidl">trunk/Source/WebCore/html/HTMLScriptElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementidl">trunk/Source/WebCore/html/HTMLSelectElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementcpp">trunk/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementidl">trunk/Source/WebCore/html/HTMLTextAreaElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlURLUtilsidl">trunk/Source/WebCore/html/URLUtils.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Didl">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAngleidl">trunk/Source/WebCore/svg/SVGAngle.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementidl">trunk/Source/WebCore/svg/SVGElement.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLengthidl">trunk/Source/WebCore/svg/SVGLength.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGScriptElementidl">trunk/Source/WebCore/svg/SVGScriptElement.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/ChangeLog        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -1,3 +1,141 @@
</span><ins>+2016-02-29  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [Web IDL] Add support for [TreatNullAs=EmptyString] and use it
+        https://bugs.webkit.org/show_bug.cgi?id=154654
+
+        Reviewed by Darin Adler.
+
+        Add support for [TreatNullAs=EmptyString] standard Web IDL extended
+        attribute:
+        - http://heycam.github.io/webidl/#TreatNullAs
+
+        This replaces the WebKit-specific [TreatNullAs=NullString] IDL
+        extended attribute. Instead of passing a null String() to the
+        implementation, emptyString() is passed.
+
+        This patch does not cause any web-exposed behavior change. For
+        case where switching from NullString to EmptyString would change
+        the behavior (or require changes to the implementation), the old
+        IDL attribute was kept. However, it was renamed to
+        [TreatNullAs=LegacyNullString] to discourage its use in new code.
+        Eventually, this legacy IDL attribute should go away entirely.
+
+        [TreatNullAs=EmptyString] should only be used when it is present
+        in the corresponding specification. Note that there are a lot of
+        places where we use [TreatNullAs=EmptyString] in our IDL where it
+        does not match the specification. I have added FIXME comments for
+        those so we can clean them up later.
+
+        No new tests, no web-exposed behavior change.
+
+        * Modules/mediastream/RTCPeerConnection.idl:
+        No behavior change because this is not implemented.
+
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::valueToStringTreatingNullAsEmptyString):
+        * bindings/js/JSDOMBinding.h:
+        Add new function to convert a JSValue into a String while treating
+        null as the empty string.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (JSValueToNative):
+        * bindings/scripts/IDLAttributes.txt:
+        - Add support for [TreatNullAs=EmptyString].
+        - Rename NullString to LegacyNullString to discourage its use.
+
+        * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
+        * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/ObjC/DOMTestObj.h:
+        * bindings/scripts/test/ObjC/DOMTestObj.mm:
+        * bindings/scripts/test/TestObj.idl:
+        Add bindings tests coverage for [TreatNullAs=EmptyString].
+
+        * css/CSSStyleDeclaration.idl:
+        * dom/CharacterData.idl:
+        * dom/DOMImplementation.idl:
+        * dom/Document.idl:
+        * dom/Element.idl:
+        * dom/ShadowRoot.idl:
+        * html/HTMLOutputElement.idl:
+        * html/HTMLScriptElement.idl:
+        * html/URLUtils.idl:
+        * svg/SVGAngle.idl:
+        * svg/SVGLength.idl:
+        Use [TreatNullAs=EmptyString] instead of [TreatNullAs=NullString].
+        There is not behavior change because the implementation does
+        not distinguish the null string from the empty string.
+
+        * html/HTMLBaseElement.idl:
+        * html/HTMLButtonElement.idl:
+        * html/HTMLFormElement.idl:
+        * html/HTMLMediaElement.idl:
+        * html/HTMLSelectElement.idl:
+        * svg/SVGElement.idl:
+        * svg/SVGScriptElement.idl:
+        Rename [TreatNullAs=NullString] to [TreatNullAs=LegacyNullString],
+        no behavior change.
+
+        * html/HTMLDocument.idl:
+        - dir and *Color: Rename [TreatNullAs=NullString] to
+          [TreatNullAs=LegacyNullString].
+        - designMode: Drop [TreatNullAs=NullString] as per the specification:
+          - https://html.spec.whatwg.org/multipage/dom.html#the-document-object
+          null now gets converted to &quot;null&quot; instead of the null String but this
+          does not change behavior because the implementation only recognizes
+          &quot;on&quot; / &quot;off&quot; / others. So we still end up using inherit mode when
+          set to null.
+
+        * html/HTMLElement.idl:
+        - Use [TreatNullAs=EmptyString] instead of [TreatNullAs=NullString] for
+          innerText / outerText. Does not change behavior because the
+          implementation does not distinguishes.
+        - Drop [TreatNullAs=NullString] from contentEditable to match the spec:
+          - https://html.spec.whatwg.org/multipage/interaction.html#elementcontenteditable
+          This does not change behavior because the implementation will the a SyntaxError
+          wether a null String or the string &quot;null&quot; is passed.
+
+        * html/HTMLFrameElement.idl:
+        Drop [TreatNullAs=NullString] from location attribute. This does not
+        change behavior because the attribute is using a custom setter.
+
+        * html/HTMLInputElement.idl:
+        - formEnctype / formMethod / autocapitalize: Rename [TreatNullAs=NullString] to
+          [TreatNullAs=LegacyNullString].
+        - value: Rename [TreatNullAs=NullString] to Rename [TreatNullAs=EmptyString], which
+          does not change behavior because the implementation does not distinguish. Also
+          drop the extended attribute for non-JS bindings as it has no impact.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::setMediaGroup):
+        Drop redundant group.isNull() check as group.isEmpty() already checks for null.
+
+        * html/HTMLScriptElement.cpp:
+        (WebCore::HTMLScriptElement::setText):
+        Drop useless .impl() call as we have a String and the method requires a String
+        as input.
+
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::setValueCommon):
+        Use emptyString() instead of &quot;&quot; as it is slightly more efficient.
+
+        * html/HTMLTextAreaElement.idl:
+        - value: Use [TreatNullAs=EmptyString] instead of [TreatNullAs=NullString]. No
+          behavior change because the implementation does not distinguish.
+        - autocapitalize: Rename [TreatNullAs=NullString] to [TreatNullAs=LegacyNullString].
+
+        * html/canvas/CanvasRenderingContext2D.idl:
+        - globalCompositeOperation / repetitionType: Use [TreatNullAs=EmptyString] instead of
+          [TreatNullAs=NullString]. No behavior change because the implementation does not
+          distinguish.
+        - lineCap / lineJoin: Drop the [TreatNullAs=NullString] to match the spec:
+          - https://html.spec.whatwg.org/multipage/scripting.html#canvaspathdrawingstyles
+          There is no behavior change because those are string enumerations and the value
+          is not recognized either way (String() or String(&quot;null&quot;)).
+        - shadowColor: Drop the [TreatNullAs=NullString] to match the spec:
+          - https://html.spec.whatwg.org/multipage/scripting.html#canvasshadowstyles
+          No behavior change because this is not a valid color either way.
+
</ins><span class="cx"> 2016-02-29  Youenn Fablet  &lt;youenn.fablet@crf.canon.fr&gt;
</span><span class="cx"> 
</span><span class="cx">         Refactor FetchBody constructors
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     //                                 RTCStatsCallback successCallback,
</span><span class="cx">     //                                 RTCPeerConnectionErrorCallback errorCallback);
</span><span class="cx"> 
</span><del>-    [RaisesException] RTCDataChannel createDataChannel([TreatNullAs=NullString] DOMString label, optional Dictionary options);
</del><ins>+    [RaisesException] RTCDataChannel createDataChannel([TreatNullAs=EmptyString] DOMString label, optional Dictionary options);
</ins><span class="cx"> 
</span><span class="cx">     void close();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -107,6 +107,13 @@
</span><span class="cx">     return value.toString(exec)-&gt;value(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String valueToStringTreatingNullAsEmptyString(ExecState* exec, JSValue value)
+{
+    if (value.isNull())
+        return emptyString();
+    return value.toString(exec)-&gt;value(exec);
+}
+
</ins><span class="cx"> String valueToStringWithUndefinedOrNullCheck(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><span class="cx">     if (value.isUndefinedOrNull())
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -316,7 +316,10 @@
</span><span class="cx"> 
</span><span class="cx"> AtomicString propertyNameToAtomicString(JSC::PropertyName);
</span><span class="cx"> 
</span><ins>+// FIXME: This is only used by legacy code and should go away. Use valueToStringTreatingNullAsEmptyString() instead.
</ins><span class="cx"> String valueToStringWithNullCheck(JSC::ExecState*, JSC::JSValue); // null if the value is null
</span><ins>+
+String valueToStringTreatingNullAsEmptyString(JSC::ExecState*, JSC::JSValue);
</ins><span class="cx"> String valueToStringWithUndefinedOrNullCheck(JSC::ExecState*, JSC::JSValue); // null if the value is null or undefined
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt; JSC::JSValue toNullableJSNumber(Optional&lt;T&gt;); // null if the optional is null
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -4141,8 +4141,9 @@
</span><span class="cx">     return &quot;valueToDate(state, $value)&quot; if $type eq &quot;Date&quot;;
</span><span class="cx"> 
</span><span class="cx">     if ($type eq &quot;DOMString&quot;) {
</span><del>-        if ($signature-&gt;extendedAttributes-&gt;{&quot;TreatNullAs&quot;} and $signature-&gt;extendedAttributes-&gt;{&quot;TreatNullAs&quot;} eq &quot;NullString&quot;) {
-            return &quot;valueToStringWithNullCheck(state, $value)&quot;
</del><ins>+        if ($signature-&gt;extendedAttributes-&gt;{&quot;TreatNullAs&quot;}) {
+            return &quot;valueToStringTreatingNullAsEmptyString(state, $value)&quot; if $signature-&gt;extendedAttributes-&gt;{&quot;TreatNullAs&quot;} eq &quot;EmptyString&quot;;
+            return &quot;valueToStringWithNullCheck(state, $value)&quot; if $signature-&gt;extendedAttributes-&gt;{&quot;TreatNullAs&quot;} eq &quot;LegacyNullString&quot;;
</ins><span class="cx">         }
</span><span class="cx">         return &quot;valueToStringWithUndefinedOrNullCheck(state, $value)&quot; if $signature-&gt;isNullable;
</span><span class="cx">         return &quot;$value.toString(state)-&gt;toAtomicString(state)&quot; if $signature-&gt;extendedAttributes-&gt;{&quot;AtomicString&quot;};
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLAttributestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> SkipVTableValidation
</span><span class="cx"> StrictTypeChecking
</span><span class="cx"> SuppressToJSObject
</span><del>-TreatNullAs=NullString
</del><ins>+TreatNullAs=EmptyString|LegacyNullString
</ins><span class="cx"> TreatReturnedNaNDateAs=Null|NaN
</span><span class="cx"> TypedArray=*
</span><span class="cx"> URL
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -92,6 +92,7 @@
</span><span class="cx">     PROP_TEST_OBJ_ATTR,
</span><span class="cx">     PROP_LENIENT_TEST_OBJ_ATTR,
</span><span class="cx">     PROP_UNFORGEABLE_ATTR,
</span><ins>+    PROP_STRING_ATTR_TREATING_NULL_AS_EMPTY_STRING,
</ins><span class="cx">     PROP_XML_OBJ_ATTR,
</span><span class="cx">     PROP_CREATE,
</span><span class="cx">     PROP_REFLECTED_STRING_ATTR,
</span><span class="lines">@@ -183,6 +184,9 @@
</span><span class="cx">     case PROP_STRING_ATTR:
</span><span class="cx">         webkit_dom_test_obj_set_string_attr(self, g_value_get_string(value));
</span><span class="cx">         break;
</span><ins>+    case PROP_STRING_ATTR_TREATING_NULL_AS_EMPTY_STRING:
+        webkit_dom_test_obj_set_string_attr_treating_null_as_empty_string(self, g_value_get_string(value));
+        break;
</ins><span class="cx">     case PROP_CREATE:
</span><span class="cx">         webkit_dom_test_obj_set_create(self, g_value_get_boolean(value));
</span><span class="cx">         break;
</span><span class="lines">@@ -311,6 +315,9 @@
</span><span class="cx">     case PROP_UNFORGEABLE_ATTR:
</span><span class="cx">         g_value_take_string(value, webkit_dom_test_obj_get_unforgeable_attr(self));
</span><span class="cx">         break;
</span><ins>+    case PROP_STRING_ATTR_TREATING_NULL_AS_EMPTY_STRING:
+        g_value_take_string(value, webkit_dom_test_obj_get_string_attr_treating_null_as_empty_string(self));
+        break;
</ins><span class="cx">     case PROP_XML_OBJ_ATTR:
</span><span class="cx">         g_value_set_object(value, webkit_dom_test_obj_get_xml_obj_attr(self));
</span><span class="cx">         break;
</span><span class="lines">@@ -629,6 +636,16 @@
</span><span class="cx"> 
</span><span class="cx">     g_object_class_install_property(
</span><span class="cx">         gobjectClass,
</span><ins>+        PROP_STRING_ATTR_TREATING_NULL_AS_EMPTY_STRING,
+        g_param_spec_string(
+            &quot;string-attr-treating-null-as-empty-string&quot;,
+            &quot;TestObj:string-attr-treating-null-as-empty-string&quot;,
+            &quot;read-write gchar* TestObj:string-attr-treating-null-as-empty-string&quot;,
+            &quot;&quot;,
+            WEBKIT_PARAM_READWRITE));
+
+    g_object_class_install_property(
+        gobjectClass,
</ins><span class="cx">         PROP_XML_OBJ_ATTR,
</span><span class="cx">         g_param_spec_object(
</span><span class="cx">             &quot;xml-obj-attr&quot;,
</span><span class="lines">@@ -1252,6 +1269,16 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void webkit_dom_test_obj_method_with_arg_treating_null_as_empty_string(WebKitDOMTestObj* self, const gchar* arg)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+    g_return_if_fail(arg);
+    WebCore::TestObj* item = WebKit::core(self);
+    WTF::String convertedArg = WTF::String::fromUTF8(arg);
+    item-&gt;methodWithArgTreatingNullAsEmptyString(convertedArg);
+}
+
</ins><span class="cx"> gchar* webkit_dom_test_obj_nullable_string_method(WebKitDOMTestObj* self)
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -1911,6 +1938,25 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+gchar* webkit_dom_test_obj_get_string_attr_treating_null_as_empty_string(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;stringAttrTreatingNullAsEmptyString());
+    return result;
+}
+
+void webkit_dom_test_obj_set_string_attr_treating_null_as_empty_string(WebKitDOMTestObj* self, const gchar* value)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+    g_return_if_fail(value);
+    WebCore::TestObj* item = WebKit::core(self);
+    WTF::String convertedValue = WTF::String::fromUTF8(value);
+    item-&gt;setStringAttrTreatingNullAsEmptyString(convertedValue);
+}
+
</ins><span class="cx"> WebKitDOMTestObj* webkit_dom_test_obj_get_xml_obj_attr(WebKitDOMTestObj* self)
</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 (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -247,6 +247,16 @@
</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_method_with_arg_treating_null_as_empty_string:
+ * @self: A #WebKitDOMTestObj
+ * @arg: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_method_with_arg_treating_null_as_empty_string(WebKitDOMTestObj* self, const gchar* arg);
+
+/**
</ins><span class="cx">  * webkit_dom_test_obj_nullable_string_method:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  *
</span><span class="lines">@@ -937,6 +947,27 @@
</span><span class="cx"> webkit_dom_test_obj_get_unforgeable_attr(WebKitDOMTestObj* self);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_get_string_attr_treating_null_as_empty_string:
+ * @self: A #WebKitDOMTestObj
+ *
+ * Returns: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API gchar*
+webkit_dom_test_obj_get_string_attr_treating_null_as_empty_string(WebKitDOMTestObj* self);
+
+/**
+ * webkit_dom_test_obj_set_string_attr_treating_null_as_empty_string:
+ * @self: A #WebKitDOMTestObj
+ * @value: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_set_string_attr_treating_null_as_empty_string(WebKitDOMTestObj* self, const gchar* value);
+
+/**
</ins><span class="cx">  * webkit_dom_test_obj_get_xml_obj_attr:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  *
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -100,6 +100,7 @@
</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 jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionNullableStringStaticMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringSpecialMethod(JSC::ExecState*);
</span><span class="lines">@@ -224,6 +225,8 @@
</span><span class="cx"> JSC::EncodedJSValue jsTestObjLenientTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> void setJSTestObjLenientTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjUnforgeableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><ins>+JSC::EncodedJSValue jsTestObjStringAttrTreatingNullAsEmptyString(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStringAttrTreatingNullAsEmptyString(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> void setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -527,6 +530,7 @@
</span><span class="cx">     { &quot;stringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttr) } },
</span><span class="cx">     { &quot;testObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestObjAttr) } },
</span><span class="cx">     { &quot;lenientTestObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLenientTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLenientTestObjAttr) } },
</span><ins>+    { &quot;stringAttrTreatingNullAsEmptyString&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrTreatingNullAsEmptyString) } },
</ins><span class="cx">     { &quot;XMLObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjXMLObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjXMLObjAttr) } },
</span><span class="cx">     { &quot;create&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCreate), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCreate) } },
</span><span class="cx">     { &quot;readOnlySymbolAttr&quot;, ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlySymbolAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
</span><span class="lines">@@ -616,6 +620,7 @@
</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;methodWithArgTreatingNullAsEmptyString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString), (intptr_t) (1) } },
</ins><span class="cx">     { &quot;nullableStringMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionNullableStringMethod), (intptr_t) (0) } },
</span><span class="cx">     { &quot;nullableStringSpecialMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionNullableStringSpecialMethod), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithSequenceArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithSequenceArg), (intptr_t) (1) } },
</span><span class="lines">@@ -1067,6 +1072,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjStringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObj&quot;, &quot;stringAttrTreatingNullAsEmptyString&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = jsStringWithCache(state, impl.stringAttrTreatingNullAsEmptyString());
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -2245,6 +2265,23 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+void setJSTestObjStringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;stringAttrTreatingNullAsEmptyString&quot;);
+        return;
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    String nativeValue = valueToStringTreatingNullAsEmptyString(state, value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return;
+    impl.setStringAttrTreatingNullAsEmptyString(nativeValue);
+}
+
+
</ins><span class="cx"> void setJSTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -3302,6 +3339,23 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithArgTreatingNullAsEmptyString&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));
+    String arg = valueToStringTreatingNullAsEmptyString(state, state-&gt;argument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithArgTreatingNullAsEmptyString(arg);
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx"> @property (strong) DOMTestObj *testObjAttr;
</span><span class="cx"> @property (strong) DOMTestObj *lenientTestObjAttr;
</span><span class="cx"> @property (readonly, copy) NSString *unforgeableAttr;
</span><ins>+@property (copy) NSString *stringAttrTreatingNullAsEmptyString;
</ins><span class="cx"> @property (strong) DOMTestObj *XMLObjAttr;
</span><span class="cx"> @property BOOL create;
</span><span class="cx"> @property (copy) NSString *reflectedStringAttr;
</span><span class="lines">@@ -143,6 +144,7 @@
</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>+- (void)methodWithArgTreatingNullAsEmptyString:(NSString *)arg;
</ins><span class="cx"> - (NSString *)nullableStringMethod;
</span><span class="cx"> - (NSString *)nullableStringStaticMethod;
</span><span class="cx"> - (NSString *)nullableStringSpecialMethod:(unsigned)index;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -245,6 +245,18 @@
</span><span class="cx">     return IMPL-&gt;unforgeableAttr();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (NSString *)stringAttrTreatingNullAsEmptyString
+{
+    WebCore::JSMainThreadNullState state;
+    return IMPL-&gt;stringAttrTreatingNullAsEmptyString();
+}
+
+- (void)setStringAttrTreatingNullAsEmptyString:(NSString *)newStringAttrTreatingNullAsEmptyString
+{
+    WebCore::JSMainThreadNullState state;
+    IMPL-&gt;setStringAttrTreatingNullAsEmptyString(newStringAttrTreatingNullAsEmptyString);
+}
+
</ins><span class="cx"> - (DOMTestObj *)XMLObjAttr
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -981,6 +993,12 @@
</span><span class="cx">     return IMPL-&gt;unforgeableMethod();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)methodWithArgTreatingNullAsEmptyString:(NSString *)arg
+{
+    WebCore::JSMainThreadNullState state;
+    IMPL-&gt;methodWithArgTreatingNullAsEmptyString(arg);
+}
+
</ins><span class="cx"> - (NSString *)nullableStringMethod
</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 (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">     attribute TestObj                  testObjAttr;
</span><span class="cx">     [LenientThis] attribute TestObj    lenientTestObjAttr;
</span><span class="cx">     [Unforgeable] readonly attribute DOMString unforgeableAttr;
</span><ins>+    [TreatNullAs=EmptyString] attribute DOMString stringAttrTreatingNullAsEmptyString;
</ins><span class="cx"> 
</span><span class="cx">     // WK_ucfirst, WK_lcfirst exceptional cases.
</span><span class="cx">     attribute TestObj                  XMLObjAttr;
</span><span class="lines">@@ -96,6 +97,7 @@
</span><span class="cx">     TestObj objMethod();
</span><span class="cx">     TestObj objMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
</span><span class="cx">     [Unforgeable] long unforgeableMethod();
</span><ins>+    void methodWithArgTreatingNullAsEmptyString([TreatNullAs=EmptyString] DOMString arg);
</ins><span class="cx"> 
</span><span class="cx">     // Nullable String return values.
</span><span class="cx">     DOMString? nullableStringMethod();
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSStyleDeclarationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSStyleDeclaration.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSStyleDeclaration.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/css/CSSStyleDeclaration.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -34,8 +34,10 @@
</span><span class="cx">     [Custom] CSSValue           getPropertyCSSValue([Default=Undefined] optional DOMString propertyName);
</span><span class="cx">     [RaisesException] DOMString          removeProperty([Default=Undefined] optional DOMString propertyName);
</span><span class="cx">     DOMString?          getPropertyPriority([Default=Undefined] optional DOMString propertyName);
</span><ins>+
+    // FIXME: 'priority' should use [TreatNullAs=EmptyString].
</ins><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException] void setProperty([Default=Undefined] optional DOMString propertyName, 
</span><del>-                                    [TreatNullAs=NullString, Default=Undefined] optional DOMString value, 
</del><ins>+                                    [TreatNullAs=EmptyString, Default=Undefined] optional DOMString value,
</ins><span class="cx">                                     [Default=Undefined] optional DOMString priority);
</span><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned long    length;
</span></span></pre></div>
<a id="trunkSourceWebCoredomCharacterDataidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CharacterData.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CharacterData.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/dom/CharacterData.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx"> 
</span><span class="cx"> interface CharacterData : Node {
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString] attribute DOMString data;
</del><ins>+    [TreatNullAs=EmptyString] attribute DOMString data;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoredomDOMImplementationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DOMImplementation.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DOMImplementation.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/dom/DOMImplementation.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx">     // DOM Level 1
</span><span class="cx"> 
</span><span class="cx">     [ObjCLegacyUnnamedParameters] boolean hasFeature([Default=Undefined] optional DOMString feature,
</span><del>-        [TreatNullAs=NullString, Default=Undefined] optional DOMString version);
</del><ins>+        [TreatNullAs=EmptyString, Default=Undefined] optional DOMString version);
</ins><span class="cx"> 
</span><span class="cx">     // DOM Level 2
</span><span class="cx"> 
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">         optional DocumentType doctype);
</span><span class="cx"> #else
</span><span class="cx">     [RaisesException, NewObject] XMLDocument createDocument([Default=Undefined] optional DOMString? namespaceURI,
</span><del>-        [TreatNullAs=NullString, Default=Undefined] optional DOMString qualifiedName, [Default=Undefined] optional DocumentType? doctype);
</del><ins>+        [TreatNullAs=EmptyString, Default=Undefined] optional DOMString qualifiedName, [Default=Undefined] optional DocumentType? doctype);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // DOMImplementationCSS interface from DOM Level 2 CSS
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/dom/Document.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -54,10 +54,14 @@
</span><span class="cx"> 
</span><span class="cx">     [ObjCLegacyUnnamedParameters, NewObject, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
</span><span class="cx">                     optional boolean deep);
</span><ins>+
+    // FIXME: 'qualifiedName' should not have [TreatNullAs=EmptyString].
</ins><span class="cx">     [ObjCLegacyUnnamedParameters, NewObject, RaisesException] Element createElementNS([Default=Undefined] optional DOMString? namespaceURI,
</span><del>-        [TreatNullAs=NullString, Default=Undefined] optional DOMString qualifiedName);
</del><ins>+        [TreatNullAs=EmptyString, Default=Undefined] optional DOMString qualifiedName);
+
+    // FIXME: 'qualifiedName' should not have [TreatNullAs=EmptyString].
</ins><span class="cx">     [ObjCLegacyUnnamedParameters, NewObject, RaisesException] Attr createAttributeNS([Default=Undefined] optional DOMString? namespaceURI,
</span><del>-        [TreatNullAs=NullString, Default=Undefined] optional DOMString qualifiedName);
</del><ins>+        [TreatNullAs=EmptyString, Default=Undefined] optional DOMString qualifiedName);
</ins><span class="cx"> 
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><span class="cx">     [ObjCLegacyUnnamedParameters, ImplementedAs=getElementsByTagNameNSForObjC] NodeList getElementsByTagNameNS(optional DOMString namespaceURI, optional DOMString localName);
</span><span class="lines">@@ -158,16 +162,20 @@
</span><span class="cx"> 
</span><span class="cx">     // Moved down from HTMLDocument
</span><span class="cx"> 
</span><del>-             [TreatNullAs=NullString] attribute DOMString title;
</del><ins>+    // FIXME: Should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString] attribute DOMString title;
+
</ins><span class="cx">     readonly attribute DOMString referrer;
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><del>-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString domain;
</del><ins>+    // FIXME: Should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString domain;
</ins><span class="cx"> #else
</span><span class="cx">     readonly attribute DOMString domain;
</span><span class="cx"> #endif
</span><span class="cx">     [ImplementedAs=urlForBindings] readonly attribute DOMString URL;
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
</del><ins>+    // FIXME: Should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
</ins><span class="cx"> 
</span><span class="cx">     [SetterRaisesException, ImplementedAs=bodyOrFrameset, StrictTypeChecking] attribute HTMLElement body;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/dom/Element.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -117,8 +117,8 @@
</span><span class="cx"> #else
</span><span class="cx">     HTMLCollection getElementsByClassName([Default=Undefined] optional DOMString name);
</span><span class="cx"> #endif
</span><del>-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString innerHTML;
-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString outerHTML;
</del><ins>+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString innerHTML;
+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString outerHTML;
</ins><span class="cx">              
</span><span class="cx"> 
</span><span class="cx">     [Reflect=class] attribute DOMString className;
</span></span></pre></div>
<a id="trunkSourceWebCoredomShadowRootidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/dom/ShadowRoot.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -30,6 +30,5 @@
</span><span class="cx">     readonly attribute Element          activeElement;
</span><span class="cx">     readonly attribute Element          host;
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString, SetterRaisesException]
-    attribute DOMString                 innerHTML;
</del><ins>+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString innerHTML;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBaseElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBaseElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBaseElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLBaseElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -18,6 +18,8 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLBaseElement : HTMLElement {
</span><del>-    [TreatNullAs=NullString] attribute DOMString href;
</del><ins>+    // FIXME: This should not have [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString href;
+
</ins><span class="cx">     [Reflect] attribute DOMString target;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLButtonElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLButtonElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLButtonElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLButtonElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -23,12 +23,15 @@
</span><span class="cx">     [Reflect] attribute boolean disabled;
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><span class="cx">     attribute DOMString formAction;
</span><del>-    [TreatNullAs=NullString] attribute DOMString formEnctype;
-    [TreatNullAs=NullString] attribute DOMString formMethod;
</del><ins>+
+    // FIXME: These should not have [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString formEnctype;
+    [TreatNullAs=LegacyNullString] attribute DOMString formMethod;
+    [TreatNullAs=LegacyNullString] attribute DOMString type;
+
</ins><span class="cx">     [Reflect] attribute boolean formNoValidate;
</span><span class="cx">     [Reflect] attribute DOMString formTarget;
</span><span class="cx">     [Reflect] attribute DOMString name;
</span><del>-    [TreatNullAs=NullString] attribute DOMString type;
</del><span class="cx">     [Reflect] attribute DOMString value;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute boolean willValidate;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDocument.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDocument.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLDocument.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -50,15 +50,18 @@
</span><span class="cx">     readonly attribute long height;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-             [TreatNullAs=NullString] attribute DOMString dir;
-             [TreatNullAs=NullString] attribute DOMString designMode;
</del><ins>+    // FIXME: This should not have [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString dir;
+
+    attribute DOMString designMode;
</ins><span class="cx">     readonly attribute DOMString compatMode;
</span><span class="cx"> 
</span><del>-    // Deprecated attributes
-             [TreatNullAs=NullString] attribute DOMString bgColor;
-             [TreatNullAs=NullString] attribute DOMString fgColor;
-             [TreatNullAs=NullString] attribute DOMString alinkColor;
-             [TreatNullAs=NullString] attribute DOMString linkColor;
-             [TreatNullAs=NullString] attribute DOMString vlinkColor;
</del><ins>+    // Deprecated attributes.
+    // FIXME: These should not have [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString bgColor;
+    [TreatNullAs=LegacyNullString] attribute DOMString fgColor;
+    [TreatNullAs=LegacyNullString] attribute DOMString alinkColor;
+    [TreatNullAs=LegacyNullString] attribute DOMString linkColor;
+    [TreatNullAs=LegacyNullString] attribute DOMString vlinkColor;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -45,8 +45,8 @@
</span><span class="cx">              [Reflect] attribute DOMString accessKey;
</span><span class="cx"> 
</span><span class="cx">     // Extensions
</span><del>-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString innerText;
-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString outerText;
</del><ins>+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString innerText;
+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString outerText;
</ins><span class="cx">              
</span><span class="cx">     [RaisesException] Element insertAdjacentElement([Default=Undefined] optional DOMString where,
</span><span class="cx">                                   [Default=Undefined] optional Element element);
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     readonly attribute HTMLCollection children;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-             [TreatNullAs=NullString, SetterRaisesException] attribute DOMString contentEditable;
</del><ins>+    [SetterRaisesException] attribute DOMString contentEditable;
</ins><span class="cx">     readonly attribute boolean isContentEditable;
</span><span class="cx"> 
</span><span class="cx">              attribute boolean spellcheck;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLFormElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -25,9 +25,12 @@
</span><span class="cx">     [Reflect=accept_charset] attribute DOMString acceptCharset;
</span><span class="cx">     [Reflect, URL] attribute DOMString action;
</span><span class="cx">     attribute DOMString autocomplete;
</span><del>-    [TreatNullAs=NullString] attribute DOMString enctype;
-    [TreatNullAs=NullString] attribute DOMString encoding;
-    [TreatNullAs=NullString] attribute DOMString method;
</del><ins>+
+    // FIXME: These should not have [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString enctype;
+    [TreatNullAs=LegacyNullString] attribute DOMString encoding;
+    [TreatNullAs=LegacyNullString] attribute DOMString method;
+
</ins><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="cx">     [Reflect] attribute boolean noValidate;
</span><span class="cx">     [Reflect] attribute DOMString target;
</span><span class="lines">@@ -42,8 +45,10 @@
</span><span class="cx">     getter Element (unsigned long index);
</span><span class="cx"> 
</span><span class="cx">     [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE] attribute boolean autocorrect;
</span><del>-    [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=NullString] attribute DOMString autocapitalize;
</del><span class="cx"> 
</span><ins>+    // FIXME: This should not use [TreatNullAs=LegacyNullString].
+    [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=LegacyNullString] attribute DOMString autocapitalize;
+
</ins><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [ImplementedAs=submitFromJavaScript] void submit();
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLFrameElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> 
</span><span class="cx">     [Reflect] attribute DOMString frameBorder;
</span><span class="cx">     [Reflect] attribute DOMString longDesc;
</span><ins>+
+    // FIXME: These should use [TreatNullAs=EmptyString].
</ins><span class="cx">     [Reflect] attribute DOMString marginHeight;
</span><span class="cx">     [Reflect] attribute DOMString marginWidth;
</span><ins>+
</ins><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="cx">     [Reflect] attribute boolean noResize;
</span><span class="cx">     [Reflect] attribute DOMString scrolling;
</span><span class="lines">@@ -39,7 +42,7 @@
</span><span class="cx">     [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString, CustomSetter] attribute DOMString location;
</del><ins>+    [CustomSetter] attribute DOMString location;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute long width;
</span><span class="cx">     readonly attribute long height;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLInputElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -31,8 +31,11 @@
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><span class="cx">     attribute FileList files;
</span><span class="cx">     attribute DOMString formAction;
</span><del>-    [TreatNullAs=NullString] attribute DOMString formEnctype;
-    [TreatNullAs=NullString] attribute DOMString formMethod;
</del><ins>+
+    // FIXME: These should not use [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString formEnctype;
+    [TreatNullAs=LegacyNullString] attribute DOMString formMethod;
+
</ins><span class="cx">     [Reflect] attribute boolean formNoValidate;
</span><span class="cx">     [Reflect] attribute DOMString formTarget;
</span><span class="cx">     attribute unsigned long height;
</span><span class="lines">@@ -58,9 +61,9 @@
</span><span class="cx">     attribute DOMString defaultValue;
</span><span class="cx">     // See the discussion in https://bugs.webkit.org/show_bug.cgi?id=100085
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><del>-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString value;
</del><ins>+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString value;
</ins><span class="cx"> #else
</span><del>-    [TreatNullAs=NullString] attribute DOMString value;
</del><ins>+    attribute DOMString value;
</ins><span class="cx"> #endif
</span><span class="cx">     [SetterRaisesException] attribute Date valueAsDate;
</span><span class="cx">     [SetterRaisesException] attribute unrestricted double valueAsNumber;
</span><span class="lines">@@ -120,8 +123,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE] attribute boolean autocorrect;
</span><del>-    [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=NullString] attribute DOMString autocapitalize;
</del><span class="cx"> 
</span><ins>+    // FIXME: This should not use TreatNullAs=LegacyNullString.
+    [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=LegacyNullString] attribute DOMString autocapitalize;
+
</ins><span class="cx">     // See http://www.w3.org/TR/html-media-capture/
</span><span class="cx">     [Conditional=MEDIA_CAPTURE, Reflect] attribute boolean capture;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -5792,7 +5792,7 @@
</span><span class="cx">     setController(0);
</span><span class="cx"> 
</span><span class="cx">     // 3. If m's mediagroup attribute is being removed, then abort these steps.
</span><del>-    if (group.isNull() || group.isEmpty())
</del><ins>+    if (group.isEmpty())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // 4. If there is another media element whose Document is the same as m's Document (even if one or both
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -108,7 +108,9 @@
</span><span class="cx">     [Conditional=VIDEO_TRACK] readonly attribute VideoTrackList videoTracks;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
</del><ins>+    // FIXME: This should not use [TreatNullAs=LegacyNullString].
+    [Reflect, TreatNullAs=LegacyNullString] attribute DOMString mediaGroup;
+
</ins><span class="cx">     [CustomSetter] attribute MediaController controller;
</span><span class="cx"> 
</span><span class="cx"> #if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOutputElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOutputElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOutputElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLOutputElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -29,8 +29,8 @@
</span><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString type;
</span><del>-    [TreatNullAs=NullString] attribute DOMString defaultValue;
-    [TreatNullAs=NullString] attribute DOMString value;
</del><ins>+    [TreatNullAs=EmptyString] attribute DOMString defaultValue;
+    [TreatNullAs=EmptyString] attribute DOMString value;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute boolean willValidate;
</span><span class="cx">     readonly attribute ValidityState validity;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.cpp (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.cpp        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLScriptElement.cpp        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">     ScriptElement::finishedInsertingSubtree();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLScriptElement::setText(const String &amp;value)
</del><ins>+void HTMLScriptElement::setText(const String&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;HTMLScriptElement&gt; protectFromMutationEvents(*this);
</span><span class="cx"> 
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     if (hasChildNodes())
</span><span class="cx">         removeChildren();
</span><span class="cx"> 
</span><del>-    appendChild(document().createTextNode(value.impl()), IGNORE_EXCEPTION);
</del><ins>+    appendChild(document().createTextNode(value), IGNORE_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLScriptElement::setAsync(bool async)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLScriptElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -18,7 +18,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLScriptElement : HTMLElement {
</span><del>-    [TreatNullAs=NullString] attribute DOMString text;
</del><ins>+    // FIXME: This should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString] attribute DOMString text;
+
</ins><span class="cx">     [Reflect=for] attribute DOMString htmlFor;
</span><span class="cx">     [Reflect] attribute DOMString event;
</span><span class="cx">     [Reflect] attribute DOMString charset;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLSelectElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -64,8 +64,10 @@
</span><span class="cx"> #endif
</span><span class="cx">     readonly attribute HTMLCollection selectedOptions;
</span><span class="cx">     attribute long selectedIndex;
</span><del>-    [TreatNullAs=NullString] attribute DOMString value;
</del><span class="cx"> 
</span><ins>+    // FIXME: This should not use [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString value;
+
</ins><span class="cx">     readonly attribute boolean willValidate;
</span><span class="cx">     readonly attribute ValidityState validity;
</span><span class="cx">     readonly attribute DOMString validationMessage;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -368,7 +368,7 @@
</span><span class="cx">     m_wasModifiedByUser = false;
</span><span class="cx">     // Code elsewhere normalizes line endings added by the user via the keyboard or pasting.
</span><span class="cx">     // We normalize line endings coming from JavaScript here.
</span><del>-    String normalizedValue = newValue.isNull() ? &quot;&quot; : newValue;
</del><ins>+    String normalizedValue = newValue.isNull() ? emptyString() : newValue;
</ins><span class="cx">     normalizedValue.replace(&quot;\r\n&quot;, &quot;\n&quot;);
</span><span class="cx">     normalizedValue.replace('\r', '\n');
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString type;
</span><span class="cx">     attribute DOMString defaultValue;
</span><del>-    [TreatNullAs=NullString] attribute DOMString value;
</del><ins>+    [TreatNullAs=EmptyString] attribute DOMString value;
</ins><span class="cx">     readonly attribute unsigned long textLength;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute boolean willValidate;
</span><span class="lines">@@ -71,8 +71,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE] attribute boolean autocorrect;
</span><del>-    [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=NullString] attribute DOMString autocapitalize;
</del><span class="cx"> 
</span><ins>+    // FIXME: This should not use [TreatNullAs=LegacyNullString].
+    [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=LegacyNullString] attribute DOMString autocapitalize;
+
</ins><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><span class="cx">     [Reflect] attribute DOMString accessKey;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlURLUtilsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/URLUtils.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/URLUtils.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/URLUtils.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -32,14 +32,16 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString origin;
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString] attribute DOMString protocol;
-    [TreatNullAs=NullString] attribute DOMString username;
-    [TreatNullAs=NullString] attribute DOMString password;
-    [TreatNullAs=NullString] attribute DOMString host;
-    [TreatNullAs=NullString] attribute DOMString hostname;
-    [TreatNullAs=NullString] attribute DOMString port;
-    [TreatNullAs=NullString] attribute DOMString pathname;
-    [TreatNullAs=NullString] attribute DOMString search;
-    //    attribute URLSearchParams? searchParams;
-    [TreatNullAs=NullString] attribute DOMString hash;
</del><ins>+    // FIXME: These should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString] attribute DOMString protocol;
+    [TreatNullAs=EmptyString] attribute DOMString username;
+    [TreatNullAs=EmptyString] attribute DOMString password;
+    [TreatNullAs=EmptyString] attribute DOMString host;
+    [TreatNullAs=EmptyString] attribute DOMString hostname;
+    [TreatNullAs=EmptyString] attribute DOMString port;
+    [TreatNullAs=EmptyString] attribute DOMString pathname;
+    [TreatNullAs=EmptyString] attribute DOMString hash;
+
+    // FIXME: This should not have [TreatNullAs=NullString].
+    [TreatNullAs=LegacyNullString] attribute DOMString search;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Didl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -42,20 +42,22 @@
</span><span class="cx">         unrestricted float dx, unrestricted float dy);
</span><span class="cx"> 
</span><span class="cx">     attribute unrestricted float globalAlpha;
</span><del>-    [TreatNullAs=NullString] attribute DOMString globalCompositeOperation;
</del><span class="cx"> 
</span><ins>+    // FIXME: This should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString] attribute DOMString globalCompositeOperation;
+
</ins><span class="cx">     [RaisesException] CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
</span><span class="cx">     [RaisesException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
</span><span class="cx"> 
</span><span class="cx">     attribute unrestricted float lineWidth;
</span><del>-    [TreatNullAs=NullString] attribute DOMString lineCap;
-    [TreatNullAs=NullString] attribute DOMString lineJoin;
</del><ins>+    attribute DOMString lineCap;
+    attribute DOMString lineJoin;
</ins><span class="cx">     attribute unrestricted float miterLimit;
</span><span class="cx"> 
</span><span class="cx">     attribute unrestricted float shadowOffsetX;
</span><span class="cx">     attribute unrestricted float shadowOffsetY;
</span><span class="cx">     attribute unrestricted float shadowBlur;
</span><del>-    [TreatNullAs=NullString] attribute DOMString shadowColor;
</del><ins>+    attribute DOMString shadowColor;
</ins><span class="cx"> 
</span><span class="cx">     void setLineDash(sequence&lt;unrestricted float&gt; dash);
</span><span class="cx">     sequence&lt;unrestricted float&gt; getLineDash();
</span><span class="lines">@@ -170,8 +172,8 @@
</span><span class="cx">     [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy);
</span><span class="cx">     [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
</span><span class="cx"> 
</span><del>-    [RaisesException] CanvasPattern createPattern(HTMLCanvasElement? canvas, [TreatNullAs=NullString] DOMString repetitionType);
-    [RaisesException] CanvasPattern createPattern(HTMLImageElement? image, [TreatNullAs=NullString] DOMString repetitionType);
</del><ins>+    [RaisesException] CanvasPattern createPattern(HTMLCanvasElement? canvas, [TreatNullAs=EmptyString] DOMString repetitionType);
+    [RaisesException] CanvasPattern createPattern(HTMLImageElement? image, [TreatNullAs=EmptyString] DOMString repetitionType);
</ins><span class="cx">     [RaisesException] ImageData createImageData(ImageData? imagedata);
</span><span class="cx">     [RaisesException] ImageData createImageData(float sw, float sh);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAngleidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAngle.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAngle.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/svg/SVGAngle.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -32,7 +32,8 @@
</span><span class="cx">     [StrictTypeChecking] attribute unrestricted float value;
</span><span class="cx">     [StrictTypeChecking] attribute unrestricted float valueInSpecifiedUnits;
</span><span class="cx"> 
</span><del>-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString valueAsString;
</del><ins>+    // FIXME: This should not have [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString valueAsString;
</ins><span class="cx"> 
</span><span class="cx">     [StrictTypeChecking, RaisesException] void newValueSpecifiedUnits(unsigned short unitType, unrestricted float valueInSpecifiedUnits);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/svg/SVGElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -24,7 +24,8 @@
</span><span class="cx">     JSGenerateToNativeObject,
</span><span class="cx"> ] interface SVGElement : Element {
</span><span class="cx">     // FIXME: the xmlbase attribute is no longer part of SVG2 and Chrome already dropped it.
</span><del>-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlbase;
</del><ins>+    // FIXME: This should not use [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString, SetterRaisesException] attribute DOMString xmlbase;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute SVGSVGElement ownerSVGElement;
</span><span class="cx">     readonly attribute SVGElement viewportElement;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLengthidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLength.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLength.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/svg/SVGLength.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -38,8 +38,10 @@
</span><span class="cx">     [GetterRaisesException, SetterRaisesException, Custom, StrictTypeChecking] attribute unrestricted float value;
</span><span class="cx"> 
</span><span class="cx">     [StrictTypeChecking] attribute unrestricted float valueInSpecifiedUnits;
</span><del>-    [TreatNullAs=NullString, StrictTypeChecking, SetterRaisesException] attribute DOMString valueAsString;
</del><span class="cx"> 
</span><ins>+    // FIXME: This should not use [TreatNullAs=EmptyString].
+    [TreatNullAs=EmptyString, StrictTypeChecking, SetterRaisesException] attribute DOMString valueAsString;
+
</ins><span class="cx">     [StrictTypeChecking, RaisesException] void newValueSpecifiedUnits(unsigned short unitType, 
</span><span class="cx">                                                      unrestricted float valueInSpecifiedUnits);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGScriptElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGScriptElement.idl (197352 => 197353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGScriptElement.idl        2016-02-29 15:03:41 UTC (rev 197352)
+++ trunk/Source/WebCore/svg/SVGScriptElement.idl        2016-02-29 17:28:13 UTC (rev 197353)
</span><span class="lines">@@ -24,7 +24,8 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface SVGScriptElement : SVGElement {
</span><del>-    [TreatNullAs=NullString, Reflect] attribute DOMString type;
</del><ins>+    // FIXME: This should not use [TreatNullAs=LegacyNullString].
+    [TreatNullAs=LegacyNullString, Reflect] attribute DOMString type;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> SVGScriptElement implements SVGExternalResourcesRequired;
</span></span></pre>
</div>
</div>

</body>
</html>