Fix the case of "null type Blob slice" in wpt/FileAPI/blob/Blob-slice.html
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Jun 2020 16:34:13 +0000 (16:34 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Jun 2020 16:34:13 +0000 (16:34 +0000)
https://bugs.webkit.org/show_bug.cgi?id=213370

Patch by Tetsuharu Ohzeki <tetsuharu.ohzeki@gmail.com> on 2020-06-22
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/FileAPI/blob/Blob-slice-expected.txt:

Source/WebCore:

* fileapi/Blob.h:
(WebCore::Blob::slice const):
Remove unnecessary default arguments
These default arguments are introduced in r83873
but we don't need them because WebIDL binding handles them.

* fileapi/Blob.idl:
- Update the definition of `Blob.slice()` to match the latest spec.
  https://w3c.github.io/FileAPI/#blob-section

- We should use empty string as a default value by step 4-a of
  https://w3c.github.io/FileAPI/#dfn-slice

- In the previous code, we use `optional DOMString?` for the
  _contentType_ arguments for `Blob.slice()`.
  Then, our codegen generates a code which uses `convert<IDLNullable<IDLDOMString>>`
  and it returns `String()` if the JS value is `null`.
  This caused the failure case in this change.

LayoutTests:

* http/tests/local/fileapi/send-sliced-dragged-file-expected.txt:
* http/tests/local/fileapi/send-sliced-dragged-file.html:

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

LayoutTests/ChangeLog
LayoutTests/http/tests/local/fileapi/send-sliced-dragged-file.html
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/FileAPI/blob/Blob-slice-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/fileapi/Blob.h
Source/WebCore/fileapi/Blob.idl

index 84508de..fbcbc2a 100644 (file)
@@ -1,3 +1,13 @@
+2020-06-22  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>
+
+        Fix the case of "null type Blob slice" in wpt/FileAPI/blob/Blob-slice.html
+        https://bugs.webkit.org/show_bug.cgi?id=213370
+
+        Reviewed by Darin Adler.
+
+        * http/tests/local/fileapi/send-sliced-dragged-file-expected.txt:
+        * http/tests/local/fileapi/send-sliced-dragged-file.html:
+
 2020-06-22  Youenn Fablet  <youenn@apple.com>
 
         [WebRTC] Add support for freeze/pause receiver stats
index ce58560..13892ef 100644 (file)
@@ -64,12 +64,12 @@ function computeExpectedLength(fileLength, start, length)
     return expectedLength;
 }
 
-function onStableFileDrop(file, filePath, fileLength, start, length, contentType)
+function onStableFileDrop(file, filePath, fileLength, start, length, contentType = "")
 {
     // Slice the file.
     subfile = file.slice(start, start + length, contentType);
     shouldEvaluateTo("subfile.size", computeExpectedLength(fileLength, start, length));
-    shouldBe("subfile.type", (contentType != undefined && contentType != null) ? '"' + contentType + '"' : '""');
+    shouldBe("subfile.type", '"' + contentType + '"');
 
     // Upload the sliced file.
     uploadFile(subfile, filePath, start, length, false);
@@ -83,12 +83,12 @@ function dragAndSliceStableFile(filePath, fileLength, start, length, contentType
     eventSender.mouseUp();
 }
 
-function onUnstableFileDrop(file, filePath, fileLength, start, length, contentType)
+function onUnstableFileDrop(file, filePath, fileLength, start, length, contentType = "")
 {
     // Slice the file.
     subfile = file.slice(start, start + length, contentType);
     shouldEvaluateTo("subfile.size", computeExpectedLength(fileLength, start, length));
-    shouldBe("subfile.type", (contentType != undefined && contentType != null) ? '"' + contentType + '"' : '""');
+    shouldBe("subfile.type", '"' + contentType + '"');
   
     // Upload the sliced file.
     uploadFile(subfile, filePath, start, length, false);
@@ -121,7 +121,7 @@ function runTest()
     dragAndSliceStableFile("../resources/empty.txt", 0, 0, 10);
 
     debug("Test slicing and sending a small file.");
-    dragAndSliceStableFile("../resources/file-for-drag-to-send.txt", 10, 2, 4, null);
+    dragAndSliceStableFile("../resources/file-for-drag-to-send.txt", 10, 2, 4);
     dragAndSliceStableFile("../resources/file-for-drag-to-send.txt", 10, 2, 20, "type/foo");
     dragAndSliceStableFile("../resources/file-for-drag-to-send.txt", 10, 15, 20, "type/bar");
 
index 9880684..9ba1eab 100644 (file)
@@ -1,3 +1,12 @@
+2020-06-22  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>
+
+        Fix the case of "null type Blob slice" in wpt/FileAPI/blob/Blob-slice.html
+        https://bugs.webkit.org/show_bug.cgi?id=213370
+
+        Reviewed by Darin Adler.
+
+        * web-platform-tests/FileAPI/blob/Blob-slice-expected.txt:
+
 2020-06-10  Sergio Villar Senin  <svillar@igalia.com>
 
         [WebXR] Add a preliminary implementation of XRWebGLLayer
index b5be196..c60a7c0 100644 (file)
@@ -3,7 +3,7 @@ PASS no-argument Blob slice
 PASS Slices 
 PASS blob1. 
 PASS blob2. 
-FAIL null type Blob slice assert_equals: expected "null" but got ""
+PASS null type Blob slice 
 PASS undefined type Blob slice 
 PASS no type Blob slice 
 PASS Slicing test (0,0). 
index 92e5eee..9f4af06 100644 (file)
@@ -1,3 +1,30 @@
+2020-06-22  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>
+
+        Fix the case of "null type Blob slice" in wpt/FileAPI/blob/Blob-slice.html
+        https://bugs.webkit.org/show_bug.cgi?id=213370
+
+        Reviewed by Darin Adler.
+
+        * fileapi/Blob.h:
+        (WebCore::Blob::slice const):
+        Remove unnecessary default arguments
+        These default arguments are introduced in r83873
+        but we don't need them because WebIDL binding handles them.
+
+        * fileapi/Blob.idl:
+        - Update the definition of `Blob.slice()` to match the latest spec.
+          https://w3c.github.io/FileAPI/#blob-section
+
+        - We should use empty string as a default value by step 4-a of
+          https://w3c.github.io/FileAPI/#dfn-slice
+
+        - In the previous code, we use `optional DOMString?` for the
+          _contentType_ arguments for `Blob.slice()`.
+          Then, our codegen generates a code which uses `convert<IDLNullable<IDLDOMString>>`
+          and it returns `String()` if the JS value is `null`.
+          This caused the failure case in this change.
+
+
 2020-06-22  Andres Gonzalez  <andresg_22@apple.com>
 
         Code cleanup in WebAccessibilityObjectWrapper updateObjectBackingStore and position.
index 614d809..a4b6e11 100644 (file)
@@ -101,7 +101,7 @@ public:
     // URLRegistrable
     URLRegistry& registry() const override;
 
-    Ref<Blob> slice(long long start = 0, long long end = std::numeric_limits<long long>::max(), const String& contentType = String()) const
+    Ref<Blob> slice(long long start, long long end, const String& contentType) const
     {
         return adoptRef(*new Blob(m_internalURL, start, end, contentType));
     }
index 118b91e..7e0ad54 100644 (file)
@@ -40,8 +40,7 @@ typedef (BufferSource or Blob or USVString) BlobPart;
     readonly attribute unsigned long long size;
     readonly attribute DOMString type;
 
-    // slice Blob into byte-ranged chunks
-    Blob slice(optional long long start = 0, optional long long end = 0x7FFFFFFFFFFFFFFF, optional DOMString? contentType = null);
+    Blob slice(optional long long start = 0, optional long long end = 0x7FFFFFFFFFFFFFFF, optional DOMString contentType = "");
 
     // FIXME: Implement:
     // readonly attribute boolean isClosed;