<!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>[56003] trunk</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>WebCore: Add DOMFormData.idl to expose FormData interface.
https://bugs.webkit.org/show_bug.cgi?id=36024

Reviewed by Sam Weinig.

The implementation is based on XMLHttpRequest 2 spec:
http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#formdata

Test: http/tests/local/send-form-data.html

* Android.derived.jscbindings.mk:
* Android.derived.v8bindings.mk:
* Android.jscbindings.mk:
* DerivedSources.cpp:
* DerivedSources.make:
* GNUmakefile.am:
* WebCore.pri:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMFormDataCustom.cpp: Added.
* bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::send):
* bindings/scripts/CodeGeneratorJS.pm:
* html/DOMFormData.idl: Added.
* page/DOMWindow.idl:

LayoutTests: Add DOMFormData.idl to expose FormData interface
https://bugs.webkit.org/show_bug.cgi?id=36024

Reviewed by Sam Weinig.

Add a layout test to test sending FormData via XMLHttpRequest. Also
changed all test results that are affected by exposing FormData.

* fast/dom/Window/window-properties-expected.txt:
* fast/dom/Window/window-property-descriptors-expected.txt:
* fast/dom/constructed-objects-prototypes-expected.txt:
* fast/dom/prototype-inheritance-2-expected.txt:
* fast/dom/prototype-inheritance-expected.txt:
* fast/js/global-constructors-expected.txt:
* http/tests/local/resources/send-form-data.js: Added.
* http/tests/local/send-form-data-expected.txt: Added.
* http/tests/local/send-form-data.html: Added.
* http/tests/xmlhttprequest/resources/multipart-post-echo.php: Added.
* platform/gtk/Skipped:
* platform/gtk/fast/dom/Window/window-properties-expected.txt:
* platform/qt/Skipped:
* platform/qt/fast/dom/Window/window-properties-expected.txt:
* platform/qt/fast/dom/Window/window-property-descriptors-expected.txt:
* platform/qt/fast/dom/prototype-inheritance-expected.txt:
* platform/qt/fast/js/global-constructors-expected.txt:
* platform/win/Skipped:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowwindowpropertiesexpectedtxt">trunk/LayoutTests/fast/dom/Window/window-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowwindowpropertydescriptorsexpectedtxt">trunk/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomconstructedobjectsprototypesexpectedtxt">trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomprototypeinheritance2expectedtxt">trunk/LayoutTests/fast/dom/prototype-inheritance-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomprototypeinheritanceexpectedtxt">trunk/LayoutTests/fast/dom/prototype-inheritance-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastjsglobalconstructorsexpectedtxt">trunk/LayoutTests/fast/js/global-constructors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtkSkipped">trunk/LayoutTests/platform/gtk/Skipped</a></li>
<li><a href="#trunkLayoutTestsplatformgtkfastdomWindowwindowpropertiesexpectedtxt">trunk/LayoutTests/platform/gtk/fast/dom/Window/window-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformqtSkipped">trunk/LayoutTests/platform/qt/Skipped</a></li>
<li><a href="#trunkLayoutTestsplatformqtfastdomWindowwindowpropertiesexpectedtxt">trunk/LayoutTests/platform/qt/fast/dom/Window/window-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformqtfastdomWindowwindowpropertydescriptorsexpectedtxt">trunk/LayoutTests/platform/qt/fast/dom/Window/window-property-descriptors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformqtfastdomprototypeinheritanceexpectedtxt">trunk/LayoutTests/platform/qt/fast/dom/prototype-inheritance-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformqtfastjsglobalconstructorsexpectedtxt">trunk/LayoutTests/platform/qt/fast/js/global-constructors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformwinSkipped">trunk/LayoutTests/platform/win/Skipped</a></li>
<li><a href="#trunkWebCoreAndroidderivedjscbindingsmk">trunk/WebCore/Android.derived.jscbindings.mk</a></li>
<li><a href="#trunkWebCoreAndroidderivedv8bindingsmk">trunk/WebCore/Android.derived.v8bindings.mk</a></li>
<li><a href="#trunkWebCoreAndroidjscbindingsmk">trunk/WebCore/Android.jscbindings.mk</a></li>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCoreDerivedSourcescpp">trunk/WebCore/DerivedSources.cpp</a></li>
<li><a href="#trunkWebCoreDerivedSourcesmake">trunk/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkWebCoreGNUmakefileam">trunk/WebCore/GNUmakefile.am</a></li>
<li><a href="#trunkWebCoreWebCorepri">trunk/WebCore/WebCore.pri</a></li>
<li><a href="#trunkWebCoreWebCorepro">trunk/WebCore/WebCore.pro</a></li>
<li><a href="#trunkWebCoreWebCorevcprojWebCorevcproj">trunk/WebCore/WebCore.vcproj/WebCore.vcproj</a></li>
<li><a href="#trunkWebCoreWebCorexcodeprojprojectpbxproj">trunk/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkWebCorebindingsjsJSXMLHttpRequestCustomcpp">trunk/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp</a></li>
<li><a href="#trunkWebCorebindingsscriptsCodeGeneratorJSpm">trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkWebCorepageDOMWindowidl">trunk/WebCore/page/DOMWindow.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestshttptestslocalresourcessendformdatajs">trunk/LayoutTests/http/tests/local/resources/send-form-data.js</a></li>
<li><a href="#trunkLayoutTestshttptestslocalsendformdataexpectedtxt">trunk/LayoutTests/http/tests/local/send-form-data-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestslocalsendformdatahtml">trunk/LayoutTests/http/tests/local/send-form-data.html</a></li>
<li><a href="#trunkLayoutTestshttptestsxmlhttprequestresourcesmultipartpostechophp">trunk/LayoutTests/http/tests/xmlhttprequest/resources/multipart-post-echo.php</a></li>
<li><a href="#trunkWebCorebindingsjsJSDOMFormDataCustomcpp">trunk/WebCore/bindings/js/JSDOMFormDataCustom.cpp</a></li>
<li><a href="#trunkWebCorehtmlDOMFormDataidl">trunk/WebCore/html/DOMFormData.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/ChangeLog        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2010-03-15  Jian Li  &lt;jianli@chromium.org&gt;
+
+        Reviewed by Sam Weinig.
+
+        Add DOMFormData.idl to expose FormData interface
+        https://bugs.webkit.org/show_bug.cgi?id=36024
+        
+        Add a layout test to test sending FormData via XMLHttpRequest. Also
+        changed all test results that are affected by exposing FormData.
+
+        * fast/dom/Window/window-properties-expected.txt:
+        * fast/dom/Window/window-property-descriptors-expected.txt:
+        * fast/dom/constructed-objects-prototypes-expected.txt:
+        * fast/dom/prototype-inheritance-2-expected.txt:
+        * fast/dom/prototype-inheritance-expected.txt:
+        * fast/js/global-constructors-expected.txt:
+        * http/tests/local/resources/send-form-data.js: Added.
+        * http/tests/local/send-form-data-expected.txt: Added.
+        * http/tests/local/send-form-data.html: Added.
+        * http/tests/xmlhttprequest/resources/multipart-post-echo.php: Added.
+        * platform/gtk/Skipped:
+        * platform/gtk/fast/dom/Window/window-properties-expected.txt:
+        * platform/qt/Skipped:
+        * platform/qt/fast/dom/Window/window-properties-expected.txt:
+        * platform/qt/fast/dom/Window/window-property-descriptors-expected.txt:
+        * platform/qt/fast/dom/prototype-inheritance-expected.txt:
+        * platform/qt/fast/js/global-constructors-expected.txt:
+        * platform/win/Skipped:
+
</ins><span class="cx"> 2010-03-15  Patrik Persson  &lt;patrik.j.persson@ericsson.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Darin Adler.
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowwindowpropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/window-properties-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/window-properties-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/fast/dom/Window/window-properties-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -901,6 +901,9 @@
</span><span class="cx"> window.FileList [object FileListConstructor]
</span><span class="cx"> window.FileList.prototype [object FileListPrototype]
</span><span class="cx"> window.FileList.prototype.item [function]
</span><ins>+window.FormData [object FormDataConstructor]
+window.FormData.prototype [object FormDataPrototype]
+window.FormData.prototype.append [function]
</ins><span class="cx"> window.HTMLAllCollection [object HTMLAllCollectionConstructor]
</span><span class="cx"> window.HTMLAllCollection.prototype [object HTMLAllCollectionPrototype]
</span><span class="cx"> window.HTMLAllCollection.prototype.item [function]
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowwindowpropertydescriptorsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -49,6 +49,7 @@
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'EventSource') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'File') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'FileList') is 'object'
</span><ins>+PASS typeof Object.getOwnPropertyDescriptor(window, 'FormData') is 'object'
</ins><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'Function') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'HTMLAllCollection') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'HTMLAnchorElement') is 'object'
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomconstructedobjectsprototypesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -7,6 +7,8 @@
</span><span class="cx"> PASS (new inner.Audio()).constructor.isInner is true
</span><span class="cx"> PASS (new inner.DOMParser()).isInner is true
</span><span class="cx"> PASS (new inner.DOMParser()).constructor.isInner is true
</span><ins>+PASS (new inner.FormData()).isInner is true
+PASS (new inner.FormData()).constructor.isInner is true
</ins><span class="cx"> PASS (new inner.Image()).isInner is true
</span><span class="cx"> PASS (new inner.Image()).constructor.isInner is true
</span><span class="cx"> PASS (new inner.MessageChannel()).isInner is true
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomprototypeinheritance2expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/prototype-inheritance-2-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/prototype-inheritance-2-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/fast/dom/prototype-inheritance-2-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -221,6 +221,7 @@
</span><span class="cx"> Never found EntityReference
</span><span class="cx"> Never found File
</span><span class="cx"> Never found FileList
</span><ins>+Never found FormData
</ins><span class="cx"> Never found HTMLAllCollection
</span><span class="cx"> Never found HTMLBaseElement
</span><span class="cx"> Never found HTMLBaseFontElement
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomprototypeinheritanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/prototype-inheritance-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/prototype-inheritance-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/fast/dom/prototype-inheritance-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -87,6 +87,8 @@
</span><span class="cx"> PASS inner.File.constructor.isInner is true
</span><span class="cx"> PASS inner.FileList.isInner is true
</span><span class="cx"> PASS inner.FileList.constructor.isInner is true
</span><ins>+PASS inner.FormData.isInner is true
+PASS inner.FormData.constructor.isInner is true
</ins><span class="cx"> PASS inner.HTMLAllCollection.isInner is true
</span><span class="cx"> PASS inner.HTMLAllCollection.constructor.isInner is true
</span><span class="cx"> PASS inner.HTMLAnchorElement.isInner is true
</span></span></pre></div>
<a id="trunkLayoutTestsfastjsglobalconstructorsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/js/global-constructors-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/js/global-constructors-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/fast/js/global-constructors-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> PASS EventException.toString() is '[object EventExceptionConstructor]'
</span><span class="cx"> PASS File.toString() is '[object FileConstructor]'
</span><span class="cx"> PASS FileList.toString() is '[object FileListConstructor]'
</span><ins>+PASS FormData.toString() is '[object FormDataConstructor]'
</ins><span class="cx"> PASS HTMLAllCollection.toString() is '[object HTMLAllCollectionConstructor]'
</span><span class="cx"> PASS HTMLAnchorElement.toString() is '[object HTMLAnchorElementConstructor]'
</span><span class="cx"> PASS HTMLAppletElement.toString() is '[object HTMLAppletElementConstructor]'
</span></span></pre></div>
<a id="trunkLayoutTestshttptestslocalresourcessendformdatajs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/local/resources/send-form-data.js (0 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/local/resources/send-form-data.js                                (rev 0)
+++ trunk/LayoutTests/http/tests/local/resources/send-form-data.js        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+description(&quot;Test for sending FormData via XMLHttpRequest.&quot;);
+
+var fileInput = document.createElement(&quot;input&quot;);
+fileInput.type = 'file';
+fileInput.style.width = &quot;100%&quot;; // So that any manual testing will show full file names
+// Important that we put this at the top of the doc so that logging does not cause it to go out of view (where it can't be dragged to)
+document.body.insertBefore(fileInput, document.body.firstChild);
+
+function moveMouseToCenterOfElement(element)
+{
+    var centerX = element.offsetLeft + element.offsetWidth / 2;
+    var centerY = element.offsetTop + element.offsetHeight / 2;
+    eventSender.mouseMoveTo(centerX, centerY);
+}
+
+function getFileName(filePath)
+{
+    var index = filePath.lastIndexOf('/');
+    if (index == -1)
+        return filePath;
+    return filePath.substr(index + 1);
+}
+
+function sendFormData(formDataList)
+{
+    var formData = new FormData();
+    for (var i = 0; i &lt; formDataList.length; i++)
+        formData.append(formDataList[i]['name'], formDataList[i]['value']);
+
+    var xhr = new XMLHttpRequest();
+    xhr.open(&quot;POST&quot;, &quot;http://127.0.0.1:8000/xmlhttprequest/resources/multipart-post-echo.php&quot;, false);
+    xhr.send(formData);
+
+    debug(xhr.responseText);
+}
+
+function testSendingFormData(dataList)
+{
+    var filesToDrag = [];
+    for (var i = 0; i &lt; dataList.length; i++) {
+        if (dataList[i]['type'] == 'file')
+            filesToDrag.push(dataList[i]['value']);
+    }
+
+    if (filesToDrag) {
+        eventSender.beginDragWithFiles(filesToDrag);
+        moveMouseToCenterOfElement(fileInput);
+        eventSender.mouseUp();
+    }
+
+    var files = fileInput.files;
+    var formDataList = [];
+    for (var i = 0; i &lt; dataList.length; i++) {
+        if (dataList[i]['type'] == 'file') {
+            var fileName = getFileName(dataList[i]['value']);
+            for (var j = 0; j &lt; files.length; j++) {
+                if (fileName == files[j].name) {
+                    formDataList.push({'name': dataList[i]['name'], 'value': files[j]});
+                    break;
+                }
+            }
+        } else {
+            formDataList.push({'name': dataList[i]['name'], 'value': dataList[i]['value']});
+        }
+    }
+
+    sendFormData(formDataList);
+}
+
+function runTest()
+{
+    debug(&quot;Sending FormData containing one string with empty name:&quot;);
+    testSendingFormData([
+        { 'type': 'string', 'name': '', 'value': 'foo' }
+    ]);
+
+    debug(&quot;Sending FormData containing one file with empty name:&quot;);
+    testSendingFormData([
+        { 'type': 'file', 'name': '', 'value': 'resources/file-for-drag-to-send.txt' }
+    ]);
+
+    debug(&quot;Sending FormData containing one string:&quot;);
+    testSendingFormData([
+        { 'type': 'string', 'name': 'string', 'value': 'foo' }
+    ]);
+
+    debug(&quot;Sending FormData containing one file:&quot;);
+    testSendingFormData([
+        { 'type': 'file', 'name': 'file', 'value': 'resources/file-for-drag-to-send.txt' }
+    ]);
+
+    debug(&quot;Sending FormData containing one string and one file:&quot;);
+    testSendingFormData([
+        { 'type': 'string', 'name': 'string1', 'value': 'foo' },
+        { 'type': 'file', 'name': 'file1', 'value': 'resources/file-for-drag-to-send.txt' }
+    ]);
+
+    debug(&quot;Sending FormData containing two strings and two files:&quot;);
+    testSendingFormData([
+        { 'type': 'string', 'name': 'string1', 'value': 'foo' },
+        { 'type': 'file', 'name': 'file1', 'value': 'resources/file-for-drag-to-send.txt' },
+        { 'type': 'string', 'name': 'string2', 'value': 'bar' },
+        { 'type': 'file', 'name': 'file2', 'value': 'resources/file-for-drag-to-send.txt' }
+    ]);
+}
+
+if (window.eventSender) {
+    runTest();
+    // Clean up after ourselves
+    fileInput.parentNode.removeChild(fileInput);
+} else {
+    testFailed(&quot;This test is not interactive, please run using DumpRenderTree&quot;);
+}
+
+var successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestslocalsendformdataexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/local/send-form-data-expected.txt (0 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/local/send-form-data-expected.txt                                (rev 0)
+++ trunk/LayoutTests/http/tests/local/send-form-data-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+Test for sending FormData via XMLHttpRequest.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Sending FormData containing one string with empty name:
+
+Sending FormData containing one file with empty name:
+
+Sending FormData containing one string:
+string=foo
+Sending FormData containing one file:
+file=file-for-drag-to-send.txt:1234567890
+Sending FormData containing one string and one file:
+string1=foo&amp;file1=file-for-drag-to-send.txt:1234567890
+Sending FormData containing two strings and two files:
+string1=foo&amp;string2=bar&amp;file1=file-for-drag-to-send.txt:1234567890&amp;file2=file-for-drag-to-send.txt:1234567890
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestslocalsendformdatahtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/local/send-form-data.html (0 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/local/send-form-data.html                                (rev 0)
+++ trunk/LayoutTests/http/tests/local/send-form-data.html        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;../../../fast/js/resources/js-test-style.css&quot;&gt;
+&lt;script src=&quot;../../../fast/js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;resources/send-form-data.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../fast/js/resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsxmlhttprequestresourcesmultipartpostechophp"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/xmlhttprequest/resources/multipart-post-echo.php (0 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/xmlhttprequest/resources/multipart-post-echo.php                                (rev 0)
+++ trunk/LayoutTests/http/tests/xmlhttprequest/resources/multipart-post-echo.php        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;?php
+if (strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data; boundary=') != 0) {
+    echo 'Invalid Content-Types.';
+    return;
+}
+
+$values = array();
+
+foreach ($_POST as $key =&gt; $value) {
+    $values[] = &quot;$key=$value&quot;;
+}
+
+foreach ($_FILES as $key =&gt; $value) {
+    $file = $_FILES[$key];
+    if ($file['error']) {
+        echo 'Upload file error: ' . $file['error'];
+        return;
+    } else {
+        $fp = fopen($file['tmp_name'], 'r');
+        if ($fp) {
+            $content = fread($fp, $file['size']);
+            fclose($fp);
+        }
+        $values[] = $key . '=' . $file['name'] . ':' . $content;
+    }
+}
+
+echo join('&amp;', $values);
+?&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/http/tests/xmlhttprequest/resources/multipart-post-echo.php
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<a id="trunkLayoutTestsplatformgtkSkipped"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/Skipped (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/Skipped        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/gtk/Skipped        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -3422,6 +3422,7 @@
</span><span class="cx"> http/tests/loading/text-content-type-with-binary-extension.html
</span><span class="cx"> http/tests/local/send-dragged-file.html
</span><span class="cx"> http/tests/local/send-sliced-dragged-file.html
</span><ins>+http/tests/local/send-form-data.html
</ins><span class="cx"> http/tests/media/video-play-stall-seek.html
</span><span class="cx"> http/tests/media/video-play-stall.html
</span><span class="cx"> http/tests/media/video-seekable-stall.html
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkfastdomWindowwindowpropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/fast/dom/Window/window-properties-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/fast/dom/Window/window-properties-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/gtk/fast/dom/Window/window-properties-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -872,6 +872,9 @@
</span><span class="cx"> window.FileList [object FileListConstructor]
</span><span class="cx"> window.FileList.prototype [object FileListPrototype]
</span><span class="cx"> window.FileList.prototype.item [function]
</span><ins>+window.FormData [object FormDataConstructor]
+window.FormData.prototype [object FormDataPrototype]
+window.FormData.prototype.append [function]
</ins><span class="cx"> window.HTMLAnchorElement [object HTMLAnchorElementConstructor]
</span><span class="cx"> window.HTMLAnchorElement.prototype [printed above as window.Element.prototype]
</span><span class="cx"> window.HTMLAppletElement [object HTMLAppletElementConstructor]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformqtSkipped"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/qt/Skipped (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/qt/Skipped        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/qt/Skipped        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx"> http/tests/local/drag-over-remote-content.html
</span><span class="cx"> http/tests/local/send-dragged-file.html
</span><span class="cx"> http/tests/local/send-sliced-dragged-file.html
</span><ins>+http/tests/local/send-form-data.html
</ins><span class="cx"> 
</span><span class="cx"> # Failing navigation tests
</span><span class="cx"> http/tests/navigation/anchor-frames.html
</span></span></pre></div>
<a id="trunkLayoutTestsplatformqtfastdomWindowwindowpropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/qt/fast/dom/Window/window-properties-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/qt/fast/dom/Window/window-properties-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/qt/fast/dom/Window/window-properties-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -901,6 +901,9 @@
</span><span class="cx"> window.FileList [object FileListConstructor]
</span><span class="cx"> window.FileList.prototype [object FileListPrototype]
</span><span class="cx"> window.FileList.prototype.item [function]
</span><ins>+window.FormData [object FormDataConstructor]
+window.FormData.prototype [object FormDataPrototype]
+window.FormData.prototype.append [function]
</ins><span class="cx"> window.HTMLAllCollection [object HTMLAllCollectionConstructor]
</span><span class="cx"> window.HTMLAllCollection.prototype [object HTMLAllCollectionPrototype]
</span><span class="cx"> window.HTMLAllCollection.prototype.item [function]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformqtfastdomWindowwindowpropertydescriptorsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/qt/fast/dom/Window/window-property-descriptors-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/qt/fast/dom/Window/window-property-descriptors-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/qt/fast/dom/Window/window-property-descriptors-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -49,6 +49,7 @@
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'EventSource') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'File') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'FileList') is 'object'
</span><ins>+PASS typeof Object.getOwnPropertyDescriptor(window, 'FormData') is 'object'
</ins><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'Function') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'HTMLAllCollection') is 'object'
</span><span class="cx"> PASS typeof Object.getOwnPropertyDescriptor(window, 'HTMLAnchorElement') is 'object'
</span></span></pre></div>
<a id="trunkLayoutTestsplatformqtfastdomprototypeinheritanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/qt/fast/dom/prototype-inheritance-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/qt/fast/dom/prototype-inheritance-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/qt/fast/dom/prototype-inheritance-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -87,6 +87,8 @@
</span><span class="cx"> PASS inner.File.constructor.isInner is true
</span><span class="cx"> PASS inner.FileList.isInner is true
</span><span class="cx"> PASS inner.FileList.constructor.isInner is true
</span><ins>+PASS inner.FormData.isInner is true
+PASS inner.FormData.constructor.isInner is true
</ins><span class="cx"> PASS inner.HTMLAllCollection.isInner is true
</span><span class="cx"> PASS inner.HTMLAllCollection.constructor.isInner is true
</span><span class="cx"> PASS inner.HTMLAnchorElement.isInner is true
</span></span></pre></div>
<a id="trunkLayoutTestsplatformqtfastjsglobalconstructorsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/qt/fast/js/global-constructors-expected.txt (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/qt/fast/js/global-constructors-expected.txt        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/qt/fast/js/global-constructors-expected.txt        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> PASS EventException.toString() is '[object EventExceptionConstructor]'
</span><span class="cx"> PASS File.toString() is '[object FileConstructor]'
</span><span class="cx"> PASS FileList.toString() is '[object FileListConstructor]'
</span><ins>+PASS FormData.toString() is '[object FormDataConstructor]'
</ins><span class="cx"> PASS HTMLAllCollection.toString() is '[object HTMLAllCollectionConstructor]'
</span><span class="cx"> PASS HTMLAnchorElement.toString() is '[object HTMLAnchorElementConstructor]'
</span><span class="cx"> PASS HTMLAppletElement.toString() is '[object HTMLAppletElementConstructor]'
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwinSkipped"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/win/Skipped (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/win/Skipped        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/LayoutTests/platform/win/Skipped        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -665,6 +665,7 @@
</span><span class="cx"> # &lt;https://bugs.webkit.org/show_bug.cgi?id=29287&gt;
</span><span class="cx"> http/tests/local/send-dragged-file.html
</span><span class="cx"> http/tests/local/send-sliced-dragged-file.html
</span><ins>+http/tests/local/send-form-data.html
</ins><span class="cx"> 
</span><span class="cx"> # &lt;https://bugs.webkit.org/show_bug.cgi?id=29289&gt;
</span><span class="cx"> plugins/destroy-during-npp-new.html
</span></span></pre></div>
<a id="trunkWebCoreAndroidderivedjscbindingsmk"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/Android.derived.jscbindings.mk (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/Android.derived.jscbindings.mk        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/Android.derived.jscbindings.mk        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -153,6 +153,7 @@
</span><span class="cx"> # HTML
</span><span class="cx"> GEN := \
</span><span class="cx">     $(intermediates)/html/JSBlob.h \
</span><ins>+    $(intermediates)/html/JSDOMFormData.h \
</ins><span class="cx">     $(intermediates)/html/JSDataGridColumn.h \
</span><span class="cx">     $(intermediates)/html/JSDataGridColumnList.h \
</span><span class="cx">     $(intermediates)/html/JSFile.h \
</span></span></pre></div>
<a id="trunkWebCoreAndroidderivedv8bindingsmk"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/Android.derived.v8bindings.mk (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/Android.derived.v8bindings.mk        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/Android.derived.v8bindings.mk        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -513,6 +513,7 @@
</span><span class="cx"> 
</span><span class="cx"> # XML
</span><span class="cx"> GEN := \
</span><ins>+    $(intermediates)/bindings/V8DOMFormData.h \
</ins><span class="cx">     $(intermediates)/bindings/V8DOMParser.h \
</span><span class="cx">     $(intermediates)/bindings/V8XMLHttpRequest.h \
</span><span class="cx">     $(intermediates)/bindings/V8XMLHttpRequestException.h \
</span></span></pre></div>
<a id="trunkWebCoreAndroidjscbindingsmk"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/Android.jscbindings.mk (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/Android.jscbindings.mk        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/Android.jscbindings.mk        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -84,6 +84,7 @@
</span><span class="cx">         bindings/js/JSDesktopNotificationsCustom.cpp \
</span><span class="cx">         bindings/js/JSDOMApplicationCacheCustom.cpp \
</span><span class="cx">         bindings/js/JSDOMBinding.cpp \
</span><ins>+  bindings/js/JSDOMFormDataCustom.cpp \
</ins><span class="cx">         bindings/js/JSDOMGlobalObject.cpp \
</span><span class="cx">         bindings/js/JSDOMWindowBase.cpp \
</span><span class="cx">         bindings/js/JSDOMWindowCustom.cpp \
</span></span></pre></div>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/ChangeLog        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2010-03-15  Jian Li  &lt;jianli@chromium.org&gt;
+
+        Reviewed by Sam Weinig.
+
+        Add DOMFormData.idl to expose FormData interface.
+        https://bugs.webkit.org/show_bug.cgi?id=36024
+        
+        The implementation is based on XMLHttpRequest 2 spec:
+        http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#formdata
+
+        Test: http/tests/local/send-form-data.html
+
+        * Android.derived.jscbindings.mk:
+        * Android.derived.v8bindings.mk:
+        * Android.jscbindings.mk:
+        * DerivedSources.cpp:
+        * DerivedSources.make:
+        * GNUmakefile.am:
+        * WebCore.pri:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSDOMFormDataCustom.cpp: Added.
+        * bindings/js/JSXMLHttpRequestCustom.cpp:
+        (WebCore::JSXMLHttpRequest::send):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        * html/DOMFormData.idl: Added.
+        * page/DOMWindow.idl:
+
</ins><span class="cx"> 2010-03-15  Patrik Persson  &lt;patrik.j.persson@ericsson.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Darin Adler.
</span></span></pre></div>
<a id="trunkWebCoreDerivedSourcescpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/DerivedSources.cpp (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/DerivedSources.cpp        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/DerivedSources.cpp        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx"> #include &quot;JSDocumentType.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMApplicationCache.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMCoreException.cpp&quot;
</span><ins>+#include &quot;JSDOMFormData.cpp&quot;
</ins><span class="cx"> #include &quot;JSDOMImplementation.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMParser.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMSelection.cpp&quot;
</span></span></pre></div>
<a id="trunkWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/DerivedSources.make (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/DerivedSources.make        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/DerivedSources.make        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -108,6 +108,7 @@
</span><span class="cx">     DedicatedWorkerContext \
</span><span class="cx">     DOMApplicationCache \
</span><span class="cx">     DOMCoreException \
</span><ins>+    DOMFormData \
</ins><span class="cx">     DOMImplementation \
</span><span class="cx">     DOMParser \
</span><span class="cx">     DOMSelection \
</span></span></pre></div>
<a id="trunkWebCoreGNUmakefileam"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/GNUmakefile.am (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/GNUmakefile.am        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/GNUmakefile.am        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -182,6 +182,7 @@
</span><span class="cx">         WebCore/html/canvas/WebGLUnsignedShortArray.idl \
</span><span class="cx">         WebCore/html/DataGridColumn.idl \
</span><span class="cx">         WebCore/html/DataGridColumnList.idl \
</span><ins>+        WebCore/html/DOMFormData.idl \
</ins><span class="cx">         WebCore/html/File.idl \
</span><span class="cx">         WebCore/html/FileList.idl \
</span><span class="cx">         WebCore/html/HTMLAllCollection.idl \
</span><span class="lines">@@ -380,6 +381,7 @@
</span><span class="cx">         WebCore/bindings/js/JSCustomXPathNSResolver.h \
</span><span class="cx">         WebCore/bindings/js/JSDOMBinding.cpp \
</span><span class="cx">         WebCore/bindings/js/JSDOMBinding.h \
</span><ins>+  WebCore/bindings/js/JSDOMFormDataCustom.cpp \
</ins><span class="cx">         WebCore/bindings/js/JSDOMGlobalObject.cpp \
</span><span class="cx">         WebCore/bindings/js/JSDOMGlobalObject.h \
</span><span class="cx">         WebCore/bindings/js/JSDOMWindowBase.cpp \
</span></span></pre></div>
<a id="trunkWebCoreWebCorepri"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.pri (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.pri        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/WebCore.pri        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -312,6 +312,7 @@
</span><span class="cx">     html/canvas/WebGLUnsignedShortArray.idl \
</span><span class="cx">     html/DataGridColumn.idl \
</span><span class="cx">     html/DataGridColumnList.idl \
</span><ins>+    html/DOMFormData.idl \
</ins><span class="cx">     html/File.idl \
</span><span class="cx">     html/FileList.idl \
</span><span class="cx">     html/HTMLAllCollection.idl \
</span></span></pre></div>
<a id="trunkWebCoreWebCorepro"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.pro (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.pro        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/WebCore.pro        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -289,6 +289,7 @@
</span><span class="cx">     bindings/js/JSDebugWrapperSet.cpp \
</span><span class="cx">     bindings/js/JSDocumentCustom.cpp \
</span><span class="cx">     bindings/js/JSDocumentFragmentCustom.cpp \
</span><ins>+    bindings/js/JSDOMFormDataCustom.cpp \
</ins><span class="cx">     bindings/js/JSDOMGlobalObject.cpp \
</span><span class="cx">     bindings/js/JSDOMWindowBase.cpp \
</span><span class="cx">     bindings/js/JSDOMWindowCustom.cpp \
</span></span></pre></div>
<a id="trunkWebCoreWebCorevcprojWebCorevcproj"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.vcproj/WebCore.vcproj (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.vcproj/WebCore.vcproj        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/WebCore.vcproj/WebCore.vcproj        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -2905,6 +2905,14 @@
</span><span class="cx">                                 &gt;
</span><span class="cx">                         &lt;/File&gt;
</span><span class="cx">                         &lt;File
</span><ins>+                                RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMFormData.cpp&quot;
+                                &gt;
+                        &lt;/File&gt;
+                        &lt;File
+                                RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMFormData.h&quot;
+                                &gt;
+                        &lt;/File&gt;
+                        &lt;File
</ins><span class="cx">                                 RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSDOMImplementation.cpp&quot;
</span><span class="cx">                                 &gt;
</span><span class="cx">                                 &lt;FileConfiguration
</span><span class="lines">@@ -35972,6 +35980,10 @@
</span><span class="cx">                                         &gt;
</span><span class="cx">                                 &lt;/File&gt;
</span><span class="cx">                                 &lt;File
</span><ins>+                                        RelativePath=&quot;..\bindings\js\JSDOMFormDataCustom.cpp&quot;
+                                        &gt;
+                                &lt;/File&gt;
+                                &lt;File
</ins><span class="cx">                                         RelativePath=&quot;..\bindings\js\JSDOMGlobalObject.cpp&quot;
</span><span class="cx">                                         &gt;
</span><span class="cx">                                         &lt;FileConfiguration
</span></span></pre></div>
<a id="trunkWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.xcodeproj/project.pbxproj (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.xcodeproj/project.pbxproj        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/WebCore.xcodeproj/project.pbxproj        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -594,6 +594,10 @@
</span><span class="cx">                 29A8124B0FBB9CA900510293 /* AXObjectCacheMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29A812470FBB9CA900510293 /* AXObjectCacheMac.mm */; };
</span><span class="cx">                 2D9066060BE141D400956998 /* LayoutState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D9066040BE141D400956998 /* LayoutState.cpp */; };
</span><span class="cx">                 2D9066070BE141D400956998 /* LayoutState.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9066050BE141D400956998 /* LayoutState.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                2E0888C4114883A900AF4265 /* DOMFormData.idl in Resources */ = {isa = PBXBuildFile; fileRef = 2E0888C3114883A900AF4265 /* DOMFormData.idl */; };
+                2E0888D41148848A00AF4265 /* JSDOMFormData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */; };
+                2E0888D51148848A00AF4265 /* JSDOMFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0888D31148848A00AF4265 /* JSDOMFormData.h */; };
+                2E0888E6114884E200AF4265 /* JSDOMFormDataCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */; };
</ins><span class="cx">                 2E2D99CD10E2BBDA00496337 /* JSBlob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E2D99CB10E2BBDA00496337 /* JSBlob.cpp */; };
</span><span class="cx">                 2E2D99CE10E2BBDA00496337 /* JSBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99CC10E2BBDA00496337 /* JSBlob.h */; };
</span><span class="cx">                 2E2D99E710E2BC1C00496337 /* DOMBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99E510E2BC1C00496337 /* DOMBlob.h */; };
</span><span class="lines">@@ -5964,6 +5968,10 @@
</span><span class="cx">                 2D9066050BE141D400956998 /* LayoutState.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LayoutState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D90660B0665D937006B6F1A /* ClipboardMac.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = ClipboardMac.h; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
</span><span class="cx">                 2D90660C0665D937006B6F1A /* ClipboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClipboardMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
</span><ins>+                2E0888C3114883A900AF4265 /* DOMFormData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMFormData.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMFormData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E0888D31148848A00AF4265 /* JSDOMFormData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMFormData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMFormDataCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2E2D99CB10E2BBDA00496337 /* JSBlob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBlob.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E2D99CC10E2BBDA00496337 /* JSBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBlob.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E2D99E510E2BC1C00496337 /* DOMBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMBlob.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12895,6 +12903,7 @@
</span><span class="cx">                                 BC7DAAED0FF9615D00CE0138 /* DOMDataGridDataSource.h */,
</span><span class="cx">                                 2ED609BA1145B07100C8684E /* DOMFormData.cpp */,
</span><span class="cx">                                 2ED609BB1145B07100C8684E /* DOMFormData.h */,
</span><ins>+                                2E0888C3114883A900AF4265 /* DOMFormData.idl */,
</ins><span class="cx">                                 BCDBB8CC0E08958400C60FF6 /* File.cpp */,
</span><span class="cx">                                 BCDBB8CB0E08958400C60FF6 /* File.h */,
</span><span class="cx">                                 BC1881D90E08C4ED00048C13 /* File.idl */,
</span><span class="lines">@@ -13212,6 +13221,8 @@
</span><span class="cx">                                 BC77D1660FF19F550070887B /* JSDataGridColumn.h */,
</span><span class="cx">                                 BC77D1670FF19F550070887B /* JSDataGridColumnList.cpp */,
</span><span class="cx">                                 BC77D1680FF19F550070887B /* JSDataGridColumnList.h */,
</span><ins>+                                2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */,
+                                2E0888D31148848A00AF4265 /* JSDOMFormData.h */,
</ins><span class="cx">                                 BC00F0100E0A189500FD04E3 /* JSFile.cpp */,
</span><span class="cx">                                 BC00F0110E0A189500FD04E3 /* JSFile.h */,
</span><span class="cx">                                 BC00F0120E0A189500FD04E3 /* JSFileList.cpp */,
</span><span class="lines">@@ -14861,6 +14872,7 @@
</span><span class="cx">                                 49C7BA8C1042F5B10009D447 /* JSDocumentCustom.cpp */,
</span><span class="cx">                                 BCCE58AE1061E90C008FB35A /* JSDocumentFragmentCustom.cpp */,
</span><span class="cx">                                 1AC226160DB69F740089B669 /* JSDOMApplicationCacheCustom.cpp */,
</span><ins>+                                2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */,
</ins><span class="cx">                                 BCD9C25E0C17AA67005C90A2 /* JSDOMWindowCustom.cpp */,
</span><span class="cx">                                 652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */,
</span><span class="cx">                                 BC2ED5540C6B9BD300920BFF /* JSElementCustom.cpp */,
</span><span class="lines">@@ -17496,6 +17508,7 @@
</span><span class="cx">                                 1AC2260D0DB69F190089B669 /* JSDOMApplicationCache.h in Headers */,
</span><span class="cx">                                 93B70D6409EB0C7C009D8468 /* JSDOMBinding.h in Headers */,
</span><span class="cx">                                 BC60D7C10D29A46300B9918F /* JSDOMCoreException.h in Headers */,
</span><ins>+                                2E0888D51148848A00AF4265 /* JSDOMFormData.h in Headers */,
</ins><span class="cx">                                 E1C36C030EB076D6007410BC /* JSDOMGlobalObject.h in Headers */,
</span><span class="cx">                                 65DF31F809D1CC60000BE325 /* JSDOMImplementation.h in Headers */,
</span><span class="cx">                                 1ACE53E00A8D18810022947D /* JSDOMParser.h in Headers */,
</span><span class="lines">@@ -18771,6 +18784,7 @@
</span><span class="cx">                                 85136CA80AED665900F90A3D /* westResizeCursor.png in Resources */,
</span><span class="cx">                                 1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
</span><span class="cx">                                 1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */,
</span><ins>+                                2E0888C4114883A900AF4265 /* DOMFormData.idl in Resources */,
</ins><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                 };
</span><span class="lines">@@ -19730,6 +19744,8 @@
</span><span class="cx">                                 1AC226170DB69F740089B669 /* JSDOMApplicationCacheCustom.cpp in Sources */,
</span><span class="cx">                                 93B70D6309EB0C7C009D8468 /* JSDOMBinding.cpp in Sources */,
</span><span class="cx">                                 BC60D7C00D29A46300B9918F /* JSDOMCoreException.cpp in Sources */,
</span><ins>+                                2E0888D41148848A00AF4265 /* JSDOMFormData.cpp in Sources */,
+                                2E0888E6114884E200AF4265 /* JSDOMFormDataCustom.cpp in Sources */,
</ins><span class="cx">                                 E1C36CBD0EB08062007410BC /* JSDOMGlobalObject.cpp in Sources */,
</span><span class="cx">                                 65DF31F709D1CC60000BE325 /* JSDOMImplementation.cpp in Sources */,
</span><span class="cx">                                 1ACE53DF0A8D18810022947D /* JSDOMParser.cpp in Sources */,
</span></span></pre></div>
<a id="trunkWebCorebindingsjsJSDOMFormDataCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/WebCore/bindings/js/JSDOMFormDataCustom.cpp (0 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/js/JSDOMFormDataCustom.cpp                                (rev 0)
+++ trunk/WebCore/bindings/js/JSDOMFormDataCustom.cpp        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSDOMFormData.h&quot;
+
+#include &quot;DOMFormData.h&quot;
+#include &quot;JSBlob.h&quot;
+#include &lt;runtime/Error.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSDOMFormData::append(ExecState* exec, const ArgList&amp; args)
+{
+    if (args.size() &gt;= 2) {
+        String name = args.at(0).toString(exec);
+        JSValue value = args.at(1);
+        if (value.inherits(&amp;JSBlob::s_info))
+            impl()-&gt;append(name, toBlob(value));
+        else
+            impl()-&gt;append(name, value.toString(exec));
+    }
+
+    return jsUndefined();
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkWebCorebindingsjsJSXMLHttpRequestCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include &quot;JSXMLHttpRequest.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Blob.h&quot;
</span><ins>+#include &quot;DOMFormData.h&quot;
</ins><span class="cx"> #include &quot;DOMWindow.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="lines">@@ -37,6 +38,7 @@
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;HTMLDocument.h&quot;
</span><span class="cx"> #include &quot;JSBlob.h&quot;
</span><ins>+#include &quot;JSDOMFormData.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;JSDocument.h&quot;
</span><span class="cx"> #include &quot;JSEvent.h&quot;
</span><span class="lines">@@ -113,6 +115,8 @@
</span><span class="cx">             impl()-&gt;send(toDocument(val), ec);
</span><span class="cx">         else if (val.inherits(&amp;JSBlob::s_info))
</span><span class="cx">             impl()-&gt;send(toBlob(val), ec);
</span><ins>+        else if (val.inherits(&amp;JSDOMFormData::s_info))
+            impl()-&gt;send(toDOMFormData(val), ec);
</ins><span class="cx">         else
</span><span class="cx">             impl()-&gt;send(val.toString(exec), ec);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -144,6 +144,7 @@
</span><span class="cx">     my $className = shift;
</span><span class="cx"> 
</span><span class="cx">     return &quot;DOMException&quot; if $className eq &quot;DOMCoreException&quot;;
</span><ins>+    return &quot;FormData&quot; if $className eq &quot;DOMFormData&quot;;
</ins><span class="cx">     return $className;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebCorehtmlDOMFormDataidl"></a>
<div class="addfile"><h4>Added: trunk/WebCore/html/DOMFormData.idl (0 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/html/DOMFormData.idl                                (rev 0)
+++ trunk/WebCore/html/DOMFormData.idl        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+module html {
+
+    interface [
+        CanBeConstructed,
+        GenerateNativeConverter,
+        GenerateToJS
+    ] DOMFormData {
+        // void append(DOMString name, Blob value);
+        [Custom] void append(in DOMString name, in DOMString value);
+    };
+
+}
</ins></span></pre></div>
<a id="trunkWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/page/DOMWindow.idl (56002 => 56003)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/page/DOMWindow.idl        2010-03-15 17:14:10 UTC (rev 56002)
+++ trunk/WebCore/page/DOMWindow.idl        2010-03-15 17:27:16 UTC (rev 56003)
</span><span class="lines">@@ -716,6 +716,8 @@
</span><span class="cx">         attribute TouchEventConstructor TouchEvent;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+        attribute DOMFormDataConstructor FormData;
+
</ins><span class="cx"> #endif // defined(LANGUAGE_JAVASCRIPT)
</span><span class="cx"> 
</span><span class="cx"> #if defined(V8_BINDING) &amp;&amp; V8_BINDING
</span></span></pre>
</div>
</div>

</body>
</html>