Drop custom bindings for FormData.append()
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Aug 2016 22:55:39 +0000 (22:55 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Aug 2016 22:55:39 +0000 (22:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=160466

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/XMLHttpRequest/interfaces-expected.txt:

Source/WebCore:

Drop custom bindings for FormData.append(). We no longer need them now
that we have proper support for overloads after r204028.

This patch also fixes the fact that FormData.prototype.append.length
was 0 instead of 2.

No new tests, rebaselined existing test.

* bindings/js/JSDOMFormDataCustom.cpp:
(WebCore::JSDOMFormData::append): Deleted.
* html/DOMFormData.cpp:
(WebCore::DOMFormData::append):
* html/DOMFormData.h:
* html/DOMFormData.idl:
* html/FileInputType.cpp:
(WebCore::FileInputType::appendFormData):
* html/FormDataList.cpp:
(WebCore::FormDataList::appendBlob):
* html/FormDataList.h:
(WebCore::FormDataList::Item::Item):
(WebCore::FormDataList::appendBlob):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@204048 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMFormDataCustom.cpp
Source/WebCore/html/DOMFormData.cpp
Source/WebCore/html/DOMFormData.h
Source/WebCore/html/DOMFormData.idl
Source/WebCore/html/FileInputType.cpp
Source/WebCore/html/FormDataList.cpp
Source/WebCore/html/FormDataList.h

index c1743e7..9f38595 100644 (file)
@@ -1,5 +1,14 @@
 2016-08-02  Chris Dumez  <cdumez@apple.com>
 
+        Drop custom bindings for FormData.append()
+        https://bugs.webkit.org/show_bug.cgi?id=160466
+
+        Reviewed by Sam Weinig.
+
+        * web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
+
+2016-08-02  Chris Dumez  <cdumez@apple.com>
+
         Named / Indexed properties should be configurable
         https://bugs.webkit.org/show_bug.cgi?id=160457
 
index 00b12bb..c6768c8 100644 (file)
@@ -120,8 +120,8 @@ PASS FormData interface object length
 PASS FormData interface object name 
 PASS FormData interface: existence and properties of interface prototype object 
 PASS FormData interface: existence and properties of interface prototype object's "constructor" property 
-FAIL FormData interface: operation append(USVString,Blob,USVString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL FormData interface: operation append(USVString,USVString) assert_equals: property has wrong .length expected 2 but got 0
+PASS FormData interface: operation append(USVString,Blob,USVString) 
+PASS FormData interface: operation append(USVString,USVString) 
 FAIL FormData interface: operation delete(USVString) assert_own_property: interface prototype object missing non-static operation expected property "delete" missing
 FAIL FormData interface: operation get(USVString) assert_own_property: interface prototype object missing non-static operation expected property "get" missing
 FAIL FormData interface: operation getAll(USVString) assert_own_property: interface prototype object missing non-static operation expected property "getAll" missing
@@ -131,13 +131,9 @@ FAIL FormData interface: operation set(USVString,USVString) assert_own_property:
 PASS FormData must be primary interface of new FormData() 
 PASS Stringification of new FormData() 
 PASS FormData interface: new FormData() must inherit property "append" with the proper type (0) 
-FAIL FormData interface: calling append(USVString,Blob,USVString) on new FormData() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
-            fn.apply(obj, args);
-        }" did not throw
+PASS FormData interface: calling append(USVString,Blob,USVString) on new FormData() with too few arguments must throw TypeError 
 PASS FormData interface: new FormData() must inherit property "append" with the proper type (1) 
-FAIL FormData interface: calling append(USVString,USVString) on new FormData() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
-            fn.apply(obj, args);
-        }" did not throw
+PASS FormData interface: calling append(USVString,USVString) on new FormData() with too few arguments must throw TypeError 
 FAIL FormData interface: new FormData() must inherit property "delete" with the proper type (2) assert_inherits: property "delete" not found in prototype chain
 FAIL FormData interface: calling delete(USVString) on new FormData() with too few arguments must throw TypeError assert_inherits: property "delete" not found in prototype chain
 FAIL FormData interface: new FormData() must inherit property "get" with the proper type (3) assert_inherits: property "get" not found in prototype chain
@@ -153,13 +149,9 @@ FAIL FormData interface: calling set(USVString,USVString) on new FormData() with
 PASS FormData must be primary interface of new FormData(form) 
 PASS Stringification of new FormData(form) 
 PASS FormData interface: new FormData(form) must inherit property "append" with the proper type (0) 
-FAIL FormData interface: calling append(USVString,Blob,USVString) on new FormData(form) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
-            fn.apply(obj, args);
-        }" did not throw
+PASS FormData interface: calling append(USVString,Blob,USVString) on new FormData(form) with too few arguments must throw TypeError 
 PASS FormData interface: new FormData(form) must inherit property "append" with the proper type (1) 
-FAIL FormData interface: calling append(USVString,USVString) on new FormData(form) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
-            fn.apply(obj, args);
-        }" did not throw
+PASS FormData interface: calling append(USVString,USVString) on new FormData(form) with too few arguments must throw TypeError 
 FAIL FormData interface: new FormData(form) must inherit property "delete" with the proper type (2) assert_inherits: property "delete" not found in prototype chain
 FAIL FormData interface: calling delete(USVString) on new FormData(form) with too few arguments must throw TypeError assert_inherits: property "delete" not found in prototype chain
 FAIL FormData interface: new FormData(form) must inherit property "get" with the proper type (3) assert_inherits: property "get" not found in prototype chain
index f1ff937..da830e8 100644 (file)
@@ -1,3 +1,32 @@
+2016-08-02  Chris Dumez  <cdumez@apple.com>
+
+        Drop custom bindings for FormData.append()
+        https://bugs.webkit.org/show_bug.cgi?id=160466
+
+        Reviewed by Sam Weinig.
+
+        Drop custom bindings for FormData.append(). We no longer need them now
+        that we have proper support for overloads after r204028.
+
+        This patch also fixes the fact that FormData.prototype.append.length
+        was 0 instead of 2.
+
+        No new tests, rebaselined existing test.
+
+        * bindings/js/JSDOMFormDataCustom.cpp:
+        (WebCore::JSDOMFormData::append): Deleted.
+        * html/DOMFormData.cpp:
+        (WebCore::DOMFormData::append):
+        * html/DOMFormData.h:
+        * html/DOMFormData.idl:
+        * html/FileInputType.cpp:
+        (WebCore::FileInputType::appendFormData):
+        * html/FormDataList.cpp:
+        (WebCore::FormDataList::appendBlob):
+        * html/FormDataList.h:
+        (WebCore::FormDataList::Item::Item):
+        (WebCore::FormDataList::appendBlob):
+
 2016-08-02  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r203799.
index 2fecc95..065baa3 100644 (file)
@@ -55,21 +55,4 @@ EncodedJSValue JSC_HOST_CALL constructJSDOMFormData(ExecState& exec)
     return JSValue::encode(toJSNewlyCreated(&exec, jsConstructor->globalObject(), WTFMove(domFormData)));
 }
 
-JSValue JSDOMFormData::append(ExecState& exec)
-{
-    if (exec.argumentCount() >= 2) {
-        String name = exec.uncheckedArgument(0).toWTFString(&exec);
-        JSValue value = exec.uncheckedArgument(1);
-        if (value.inherits(JSBlob::info())) {
-            String filename;
-            if (exec.argumentCount() >= 3 && !exec.uncheckedArgument(2).isUndefinedOrNull())
-                filename = exec.uncheckedArgument(2).toWTFString(&exec);
-            wrapped().append(name, JSBlob::toWrapped(value), filename);
-        } else
-            wrapped().append(name, value.toWTFString(&exec));
-    }
-
-    return jsUndefined();
-}
-
 } // namespace WebCore
index 4bb68d7..6442d57 100644 (file)
@@ -59,7 +59,7 @@ void DOMFormData::append(const String& name, const String& value)
         appendData(name, value);
 }
 
-void DOMFormData::append(const String& name, Blob* blob, const String& filename)
+void DOMFormData::append(const String& name, Blob& blob, const String& filename)
 {
     if (!name.isEmpty())
         appendBlob(name, blob, filename);
index 63f9313..024ff10 100644 (file)
@@ -48,7 +48,7 @@ public:
     static Ref<DOMFormData> create(const TextEncoding& encoding) { return adoptRef(*new DOMFormData(encoding)); }
 
     void append(const String& name, const String& value);
-    void append(const String& name, Blob*, const String& filename = String());
+    void append(const String& name, Blob&, const String& filename = String());
 
 private:
     explicit DOMFormData(const TextEncoding&);
index 8b03aa3..a648218 100644 (file)
     InterfaceName=FormData,
     ImplementationLacksVTable,
 ] interface DOMFormData {
-    // void append(DOMString name, DOMString value);
-    // void append(DOMString name, Blob value, optional DOMString filename);
-    [Custom] void append(optional DOMString name,
-                         optional DOMString value,
-                         optional DOMString filename);
+    void append(DOMString name, DOMString value);
+    void append(DOMString name, Blob value, optional DOMString filename);
 };
 
index 1dd09b6..377b3fb 100644 (file)
@@ -155,7 +155,7 @@ bool FileInputType::appendFormData(FormDataList& encoding, bool multipart) const
     }
 
     for (unsigned i = 0; i < numFiles; ++i)
-        encoding.appendBlob(element().name(), fileList->item(i));
+        encoding.appendBlob(element().name(), *fileList->item(i));
     return true;
 }
 
index 136b6af..644faf7 100644 (file)
@@ -42,9 +42,9 @@ void FormDataList::appendString(const CString& s)
     m_items.append(s);
 }
 
-void FormDataList::appendBlob(PassRefPtr<Blob> blob, const String& filename)
+void FormDataList::appendBlob(Ref<Blob>&& blob, const String& filename)
 {
-    m_items.append(Item(blob, filename));
+    m_items.append(Item(WTFMove(blob), filename));
 }
 
 } // namespace
index 24f5449..10ea7d9 100644 (file)
@@ -34,7 +34,10 @@ public:
     public:
         Item() { }
         Item(const WTF::CString& data) : m_data(data) { }
-        Item(PassRefPtr<Blob> blob, const String& filename) : m_blob(blob), m_filename(filename) { }
+        Item(Ref<Blob>&& blob, const String& filename)
+            : m_blob(WTFMove(blob))
+            , m_filename(filename)
+        { }
 
         const WTF::CString& data() const { return m_data; }
         Blob* blob() const { return m_blob.get(); }
@@ -63,10 +66,10 @@ public:
         appendString(key);
         appendString(String::number(value));
     }
-    void appendBlob(const String& key, PassRefPtr<Blob> blob, const String& filename = String())
+    void appendBlob(const String& key, Ref<Blob>&& blob, const String& filename = String())
     {
         appendString(key);
-        appendBlob(blob, filename);
+        appendBlob(WTFMove(blob), filename);
     }
 
     const Vector<Item>& items() const { return m_items; }
@@ -75,7 +78,7 @@ public:
 private:
     void appendString(const CString&);
     void appendString(const String&);
-    void appendBlob(PassRefPtr<Blob>, const String& filename);
+    void appendBlob(Ref<Blob>&&, const String& filename);
 
     TextEncoding m_encoding;
     Vector<Item> m_items;