Title: [212656] trunk
Revision
212656
Author
commit-qu...@webkit.org
Date
2017-02-20 10:18:06 -0800 (Mon, 20 Feb 2017)

Log Message

[Readable Streams API] Add ReadableByteStreamController byobRequest attribute
https://bugs.webkit.org/show_bug.cgi?id=168319

Patch by Romain Bellessort <romain.belless...@crf.canon.fr> on 2017-02-20
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated expectations for imported w3c tests (new type of error is now obtained).

* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Added ReadableByteStreamController byobRequest attribute.

Added tests related to ReadableStreamBYOBRequest as a dedicated object
and also as an attribute of ReadableByteStreamController.

* CMakeLists.txt: Added new files.
* DerivedSources.cpp: Added new files.
* DerivedSources.make: Added new files.
* Modules/streams/ReadableByteStreamController.idl: Added byobRequest support.
* Modules/streams/ReadableByteStreamController.js: Added byobRequest support.
* Modules/streams/ReadableByteStreamInternals.js:
(privateInitializeReadableStreamBYOBRequest): Added constructor.
* Modules/streams/ReadableStreamBYOBRequest.idl: Added.
* Modules/streams/ReadableStreamBYOBRequest.js: Added.
(respond): Not implemented yet.
(respondWithNewView): Not implemented yet.
(view): Not implemented yet.
* WebCore.xcodeproj/project.pbxproj: Added new files.
* bindings/js/JSDOMGlobalObject.cpp: Added ReadableStreamBYOBRequest support.
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::visitChildren):
* bindings/js/JSReadableStreamPrivateConstructors.cpp: Added ReadableStreamBYOBRequest support.
(WebCore::constructJSReadableByteStreamController):
(WebCore::constructJSReadableStreamBYOBRequest):
(WebCore::JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable):
(WebCore::createReadableStreamBYOBRequestPrivateConstructor):
* bindings/js/JSReadableStreamPrivateConstructors.h: Added ReadableStreamBYOBRequest support.
* bindings/js/WebCoreBuiltinNames.h: Added ReadableStreamBYOBRequest support.

LayoutTests:

Added tests related to ReadableStreamBYOBRequest as a dedicated object
and also as an attribute of ReadableByteStreamController.

* streams/readable-byte-stream-controller.js: Updated with byobRequest attribute test.
* streams/readable-stream-byob-request-expected.txt: Added.
* streams/readable-stream-byob-request.html: Added.
* streams/readable-stream-byob-request.js: Added to cover tests related to ReadableStreamBYOBRequest.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (212655 => 212656)


--- trunk/LayoutTests/ChangeLog	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/LayoutTests/ChangeLog	2017-02-20 18:18:06 UTC (rev 212656)
@@ -1,3 +1,18 @@
+2017-02-20  Romain Bellessort  <romain.belless...@crf.canon.fr>
+
+        [Readable Streams API] Add ReadableByteStreamController byobRequest attribute
+        https://bugs.webkit.org/show_bug.cgi?id=168319
+
+        Reviewed by Youenn Fablet.
+
+        Added tests related to ReadableStreamBYOBRequest as a dedicated object
+        and also as an attribute of ReadableByteStreamController.
+
+        * streams/readable-byte-stream-controller.js: Updated with byobRequest attribute test.
+        * streams/readable-stream-byob-request-expected.txt: Added.
+        * streams/readable-stream-byob-request.html: Added.
+        * streams/readable-stream-byob-request.js: Added to cover tests related to ReadableStreamBYOBRequest.
+
 2017-02-20  Ryan Haddad  <ryanhad...@apple.com>
 
         Rebaseline fast/canvas/webgl/context-creation-attributes.html after r212650.

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (212655 => 212656)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-02-20 18:18:06 UTC (rev 212656)
@@ -1,3 +1,15 @@
+2017-02-20  Romain Bellessort  <romain.belless...@crf.canon.fr>
+
+        [Readable Streams API] Add ReadableByteStreamController byobRequest attribute
+        https://bugs.webkit.org/show_bug.cgi?id=168319
+
+        Reviewed by Youenn Fablet.
+
+        Updated expectations for imported w3c tests (new type of error is now obtained).
+
+        * web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
+        * web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.
+
 2017-02-19  Chris Dumez  <cdu...@apple.com>
 
         onbeforeunload event return value coercion is not per-spec

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt (212655 => 212656)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt	2017-02-20 18:18:06 UTC (rev 212656)
@@ -14,7 +14,7 @@
 PASS ReadableStream with byte source: Automatic pull() after start() 
 PASS ReadableStream with byte source: Automatic pull() after start() and read() 
 FAIL ReadableStream with byte source: autoAllocateChunkSize assert_equals: pull() must have been invoked once expected 1 but got 0
-FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'byobRequest.view')"
+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object "TypeError: ReadableByteStreamController view is not implemented"
 PASS ReadableStream with byte source: Automatic pull() after start() and read(view) 
 PASS ReadableStream with byte source: enqueue(), getReader(), then read() 
 PASS ReadableStream with byte source: Push source that doesn't understand pull signal 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt (212655 => 212656)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt	2017-02-20 18:18:06 UTC (rev 212656)
@@ -14,7 +14,7 @@
 PASS ReadableStream with byte source: Automatic pull() after start() 
 PASS ReadableStream with byte source: Automatic pull() after start() and read() 
 FAIL ReadableStream with byte source: autoAllocateChunkSize assert_equals: pull() must have been invoked once expected 1 but got 0
-FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'byobRequest.view')"
+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object "TypeError: ReadableByteStreamController view is not implemented"
 PASS ReadableStream with byte source: Automatic pull() after start() and read(view) 
 PASS ReadableStream with byte source: enqueue(), getReader(), then read() 
 PASS ReadableStream with byte source: Push source that doesn't understand pull signal 

Modified: trunk/LayoutTests/streams/readable-byte-stream-controller.js (212655 => 212656)


--- trunk/LayoutTests/streams/readable-byte-stream-controller.js	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/LayoutTests/streams/readable-byte-stream-controller.js	2017-02-20 18:18:06 UTC (rev 212656)
@@ -12,8 +12,7 @@
 
 test(() => {
     const methods = ['close', 'constructor', 'enqueue', 'error'];
-    // FIXME: Add byobRequest when implemented.
-    const properties = methods.concat(['desiredSize']).sort();
+    const properties = methods.concat(['byobRequest', 'desiredSize']).sort();
 
     let controller;
 
@@ -36,6 +35,12 @@
         assert_equals(typeof controller[m], 'function', 'should have be a method');
     }
 
+    const byobRequestPropDesc = Object.getOwnPropertyDescriptor(proto, 'byobRequest');
+    assert_equals(byobRequestPropDesc.enumerable, false, 'byobRequest should be non-enumerable');
+    assert_equals(byobRequestPropDesc.configurable, true, 'byobRequest should be configurable');
+    assert_not_equals(byobRequestPropDesc.get, undefined, 'byobRequest should have a getter');
+    assert_equals(byobRequestPropDesc.set, undefined, 'byobRequest should not have a setter');
+
     const desiredSizePropDesc = Object.getOwnPropertyDescriptor(proto, 'desiredSize');
     assert_equals(desiredSizePropDesc.enumerable, false, 'desiredSize should be non-enumerable');
     assert_equals(desiredSizePropDesc.configurable, true, 'desiredSize should be configurable');

Added: trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt (0 => 212656)


--- trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt	2017-02-20 18:18:06 UTC (rev 212656)
@@ -0,0 +1,6 @@
+
+PASS ReadableStreamBYOBRequest instances should have the correct list of properties 
+PASS By default, byobRequest should be undefined 
+PASS ReadableStreamBYOBRequest instances should have the correct list of properties 
+PASS By default, byobRequest should be undefined 
+

Added: trunk/LayoutTests/streams/readable-stream-byob-request.html (0 => 212656)


--- trunk/LayoutTests/streams/readable-stream-byob-request.html	                        (rev 0)
+++ trunk/LayoutTests/streams/readable-stream-byob-request.html	2017-02-20 18:18:06 UTC (rev 212656)
@@ -0,0 +1,9 @@
+
+<!DOCTYPE html>
+<script src=''></script>
+<script src=''></script>
+<script src=''></script>
+<script>
+'use strict';
+fetch_tests_from_worker(new Worker('readable-stream-byob-request.js'));
+</script>

Added: trunk/LayoutTests/streams/readable-stream-byob-request.js (0 => 212656)


--- trunk/LayoutTests/streams/readable-stream-byob-request.js	                        (rev 0)
+++ trunk/LayoutTests/streams/readable-stream-byob-request.js	2017-02-20 18:18:06 UTC (rev 212656)
@@ -0,0 +1,69 @@
+'use strict';
+
+if (self.importScripts) {
+    self.importScripts('../resources/testharness.js');
+}
+
+test(() => {
+    const methods = ['constructor', 'respond', 'respondWithNewView'];
+    const properties = methods.concat(['view']).sort();
+
+    let controller;
+
+    // FIXME: Remove next line when bug https://bugs.webkit.org/show_bug.cgi?id=167697
+    // is fixed. For the moment, so that test may pass, we have to insert a reference
+    // to Uint8Array here (otherwise, the private variable cannot be resolved).
+    const d = new Uint8Array(1);
+
+    // Specifying autoAllocateChunkSize and calling read() are steps that allow
+    // getting a ReadableStreamBYOBRequest returned instead of undefined. The
+    // purpose here is just to get such an object.
+    const rs = new ReadableStream({
+        autoAllocateChunkSize: 128,
+        start: function(c) {
+            controller = c;
+        },
+        type: "bytes"
+    });
+
+    rs.getReader().read();
+    const byobReq = controller.byobRequest;
+
+    const proto = Object.getPrototypeOf(byobReq);
+
+    assert_array_equals(Object.getOwnPropertyNames(proto).sort(), properties);
+
+    for (const m of methods) {
+        const propDesc = Object.getOwnPropertyDescriptor(proto, m);
+        assert_equals(propDesc.enumerable, false, 'method should be non-enumerable');
+        assert_equals(propDesc.configurable, true, 'method should be configurable');
+        assert_equals(propDesc.writable, true, 'method should be writable');
+        assert_equals(typeof byobReq[m], 'function', 'should have be a method');
+    }
+
+    const viewPropDesc = Object.getOwnPropertyDescriptor(proto, 'view');
+    assert_equals(viewPropDesc.enumerable, false, 'view should be non-enumerable');
+    assert_equals(viewPropDesc.configurable, true, 'view should be configurable');
+    assert_not_equals(viewPropDesc.get, undefined, 'view should have a getter');
+    assert_equals(viewPropDesc.set, undefined, 'view should not have a setter');
+
+    assert_equals(byobReq.constructor.length, 2, 'constructor has 2 parameters');
+    assert_equals(byobReq.respond.length, 1, 'respond has 1 parameter');
+    assert_equals(byobReq.respondWithNewView.length, 1, 'respondWithNewView has 1 parameter');
+
+}, 'ReadableStreamBYOBRequest instances should have the correct list of properties');
+
+test(function() {
+    let controller;
+
+    const rs = new ReadableStream({
+        start: function(c) {
+            controller = c;
+        },
+        type: "bytes"
+    });
+
+    assert_equals(controller.byobRequest, undefined, "by default byobRequest should be undefined");
+}, "By default, byobRequest should be undefined");
+
+done();

Modified: trunk/Source/WebCore/CMakeLists.txt (212655 => 212656)


--- trunk/Source/WebCore/CMakeLists.txt	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/CMakeLists.txt	2017-02-20 18:18:06 UTC (rev 212656)
@@ -260,6 +260,7 @@
     Modules/streams/CountQueuingStrategy.idl
     Modules/streams/ReadableByteStreamController.idl
     Modules/streams/ReadableStream.idl
+    Modules/streams/ReadableStreamBYOBRequest.idl
     Modules/streams/ReadableStreamDefaultController.idl
     Modules/streams/ReadableStreamDefaultReader.idl
     Modules/streams/ReadableStreamSource.idl
@@ -3675,6 +3676,7 @@
     ${WEBCORE_DIR}/Modules/streams/ReadableByteStreamController.js
     ${WEBCORE_DIR}/Modules/streams/ReadableByteStreamInternals.js
     ${WEBCORE_DIR}/Modules/streams/ReadableStream.js
+    ${WEBCORE_DIR}/Modules/streams/ReadableStreamBYOBRequest.js
     ${WEBCORE_DIR}/Modules/streams/ReadableStreamDefaultController.js
     ${WEBCORE_DIR}/Modules/streams/ReadableStreamInternals.js
     ${WEBCORE_DIR}/Modules/streams/ReadableStreamDefaultReader.js

Modified: trunk/Source/WebCore/ChangeLog (212655 => 212656)


--- trunk/Source/WebCore/ChangeLog	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/ChangeLog	2017-02-20 18:18:06 UTC (rev 212656)
@@ -1,3 +1,40 @@
+2017-02-20  Romain Bellessort  <romain.belless...@crf.canon.fr>
+
+        [Readable Streams API] Add ReadableByteStreamController byobRequest attribute
+        https://bugs.webkit.org/show_bug.cgi?id=168319
+
+        Reviewed by Youenn Fablet.
+
+        Added ReadableByteStreamController byobRequest attribute.
+
+        Added tests related to ReadableStreamBYOBRequest as a dedicated object
+        and also as an attribute of ReadableByteStreamController.
+
+        * CMakeLists.txt: Added new files.
+        * DerivedSources.cpp: Added new files.
+        * DerivedSources.make: Added new files.
+        * Modules/streams/ReadableByteStreamController.idl: Added byobRequest support.
+        * Modules/streams/ReadableByteStreamController.js: Added byobRequest support.
+        * Modules/streams/ReadableByteStreamInternals.js:
+        (privateInitializeReadableStreamBYOBRequest): Added constructor.
+        * Modules/streams/ReadableStreamBYOBRequest.idl: Added.
+        * Modules/streams/ReadableStreamBYOBRequest.js: Added.
+        (respond): Not implemented yet.
+        (respondWithNewView): Not implemented yet.
+        (view): Not implemented yet.
+        * WebCore.xcodeproj/project.pbxproj: Added new files.
+        * bindings/js/JSDOMGlobalObject.cpp: Added ReadableStreamBYOBRequest support.
+        (WebCore::JSDOMGlobalObject::addBuiltinGlobals):
+        (WebCore::JSDOMGlobalObject::finishCreation):
+        (WebCore::JSDOMGlobalObject::visitChildren):
+        * bindings/js/JSReadableStreamPrivateConstructors.cpp: Added ReadableStreamBYOBRequest support.
+        (WebCore::constructJSReadableByteStreamController):
+        (WebCore::constructJSReadableStreamBYOBRequest):
+        (WebCore::JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable):
+        (WebCore::createReadableStreamBYOBRequestPrivateConstructor):
+        * bindings/js/JSReadableStreamPrivateConstructors.h: Added ReadableStreamBYOBRequest support.
+        * bindings/js/WebCoreBuiltinNames.h: Added ReadableStreamBYOBRequest support.
+
 2017-02-20  Per Arne Vollan  <pvol...@apple.com>
 
         [Win] Custom scale factor is not applied in all cases.

Modified: trunk/Source/WebCore/DerivedSources.cpp (212655 => 212656)


--- trunk/Source/WebCore/DerivedSources.cpp	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/DerivedSources.cpp	2017-02-20 18:18:06 UTC (rev 212656)
@@ -386,6 +386,7 @@
 #include "JSRange.cpp"
 #include "JSReadableByteStreamController.cpp"
 #include "JSReadableStream.cpp"
+#include "JSReadableStreamBYOBRequest.cpp"
 #include "JSReadableStreamDefaultController.cpp"
 #include "JSReadableStreamDefaultReader.cpp"
 #include "JSRequestAnimationFrameCallback.cpp"

Modified: trunk/Source/WebCore/DerivedSources.make (212655 => 212656)


--- trunk/Source/WebCore/DerivedSources.make	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/DerivedSources.make	2017-02-20 18:18:06 UTC (rev 212656)
@@ -203,6 +203,7 @@
     $(WebCore)/Modules/streams/CountQueuingStrategy.idl \
     $(WebCore)/Modules/streams/ReadableByteStreamController.idl \
     $(WebCore)/Modules/streams/ReadableStream.idl \
+    $(WebCore)/Modules/streams/ReadableStreamBYOBRequest.idl \
     $(WebCore)/Modules/streams/ReadableStreamDefaultController.idl \
     $(WebCore)/Modules/streams/ReadableStreamDefaultReader.idl \
     $(WebCore)/Modules/streams/ReadableStreamSource.idl \
@@ -1349,6 +1350,7 @@
     $(WebCore)/Modules/streams/ReadableByteStreamController.js \
     $(WebCore)/Modules/streams/ReadableByteStreamInternals.js \
     $(WebCore)/Modules/streams/ReadableStream.js \
+    $(WebCore)/Modules/streams/ReadableStreamBYOBRequest.js \
     $(WebCore)/Modules/streams/ReadableStreamDefaultController.js \
     $(WebCore)/Modules/streams/ReadableStreamInternals.js \
     $(WebCore)/Modules/streams/ReadableStreamDefaultReader.js \

Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl (212655 => 212656)


--- trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl	2017-02-20 18:18:06 UTC (rev 212656)
@@ -38,6 +38,6 @@
     [NotEnumerable] void close();
     [NotEnumerable] void error(optional any error);
 
-    //FIXME: Add byobRequest when implemented.
+    [NotEnumerable] readonly attribute ReadableStreamBYOBRequest byobRequest;
     [NotEnumerable] readonly attribute double desiredSize;
 };

Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.js (212655 => 212656)


--- trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.js	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.js	2017-02-20 18:18:06 UTC (rev 212656)
@@ -80,8 +80,18 @@
 {
     "use strict";
 
-    //FIXME: Implement appropriate behavior.
-    @throwTypeError("ReadableByteStreamController byobRequest is not implemented");
+    if (!@isReadableByteStreamController(this))
+        throw @makeGetterTypeError("ReadableByteStreamController", "byobRequest");
+
+    if (this.@byobRequest === @undefined && this.@pendingPullIntos.length) {
+        const firstDescriptor = this.@pendingPullIntos[0];
+        const view = new @Uint8Array(firstDescriptor.buffer,
+            firstDescriptor.byteOffset + firstDescriptor.bytesFilled,
+            firstDescriptor.byteLength - firstDescriptor.bytesFilled);
+        this.@byobRequest = new @ReadableStreamBYOBRequest(this, view);
+    }
+
+    return this.@byobRequest;
 }
 
 function desiredSize()

Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js (212655 => 212656)


--- trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js	2017-02-20 18:18:06 UTC (rev 212656)
@@ -78,6 +78,14 @@
     return this;
 }
 
+function privateInitializeReadableStreamBYOBRequest(controller, view)
+{
+    "use strict";
+
+    this.@associatedReadableByteStreamController = controller;
+    this.@view = view;
+}
+
 function isReadableByteStreamController(controller)
 {
     "use strict";

Copied: trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.idl (from rev 212655, trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl) (0 => 212656)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.idl	                        (rev 0)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.idl	2017-02-20 18:18:06 UTC (rev 212656)
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 Canon Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions
+ * are required to be met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Canon 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 CANON INC. AND ITS CONTRIBUTORS "AS IS" 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 CANON INC. AND ITS 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.
+ */
+
+[
+    Conditional=READABLE_STREAM_API&READABLE_BYTE_STREAM_API,
+    CustomConstructor(ReadableByteStreamController controller, TypedArray view),
+    Exposed=(Window,Worker),
+    JSBuiltin,
+    NoInterfaceObject
+] interface ReadableStreamBYOBRequest {
+    [NotEnumerable] void respond(optional any bytesWritten);
+    [NotEnumerable] void respondWithNewView(optional any view);
+
+    [NotEnumerable] readonly attribute TypedArray view;
+};

Added: trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.js (0 => 212656)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.js	                        (rev 0)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.js	2017-02-20 18:18:06 UTC (rev 212656)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2017 Canon Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' 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 APPLE INC. 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.
+ */
+
+// @conditional=ENABLE(READABLE_STREAM_API) && ENABLE(READABLE_BYTE_STREAM_API)
+
+function respond(bytesWritten)
+{
+    "use strict";
+
+    // FIXME: Implement appropriate behavior.
+    @throwTypeError("ReadableStreamBYOBRequest respond() is not implemented");
+}
+
+function respondWithNewView(view)
+{
+    "use strict";
+
+    // FIXME: Implement appropriate behavior.
+    @throwTypeError("ReadableStreamBYOBRequest respondWithNewView() is not implemented");
+}
+
+function view()
+{
+    "use strict";
+
+    // FIXME: Implement appropriate behavior.
+    @throwTypeError("ReadableByteStreamController view is not implemented");
+}

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (212655 => 212656)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-02-20 18:18:06 UTC (rev 212656)
@@ -2612,8 +2612,10 @@
 		6B693A2E1C51A82E00B03BEF /* ResourceLoadObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		6B693A341C51A95D00B03BEF /* ResourceLoadObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B693A331C51A95D00B03BEF /* ResourceLoadObserver.cpp */; };
 		6C4C96DE1AD4483500363F64 /* JSReadableByteStreamController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C4C96DA1AD4483500363F64 /* JSReadableByteStreamController.cpp */; };
+		6C4C96DE1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C4C96DA1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp */; };
 		6C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultController.cpp */; };
 		6C4C96DF1AD4483500363F64 /* JSReadableByteStreamController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4C96DB1AD4483500363F64 /* JSReadableByteStreamController.h */; };
+		6C4C96DF1AD4483500365672 /* JSReadableStreamBYOBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4C96DB1AD4483500365672 /* JSReadableStreamBYOBRequest.h */; };
 		6C4C96DF1AD4483500365A50 /* JSReadableStreamDefaultController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4C96DB1AD4483500365A50 /* JSReadableStreamDefaultController.h */; };
 		6C638895A96CCEE50C8C946C /* CachedResourceRequestInitiators.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		6C638896A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */; };
@@ -8770,6 +8772,7 @@
 		41103AAA1E39790A00769F03 /* RealtimeIncomingAudioSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RealtimeIncomingAudioSource.cpp; sourceTree = "<group>"; };
 		41189EF71AD8232800B90A0D /* ReadableStreamDefaultController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableStreamDefaultController.idl; sourceTree = "<group>"; };
 		41189EF71AD8232800B93F64 /* ReadableByteStreamController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableByteStreamController.idl; sourceTree = "<group>"; };
+		41189EF71AD8232800B95672 /* ReadableStreamBYOBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableStreamBYOBRequest.idl; sourceTree = "<group>"; };
 		4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptState.cpp; sourceTree = "<group>"; };
 		4129DF831BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamPrivateConstructors.cpp; sourceTree = "<group>"; };
 		4129DF841BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamPrivateConstructors.h; sourceTree = "<group>"; };
@@ -10018,8 +10021,10 @@
 		6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadObserver.h; sourceTree = "<group>"; };
 		6B693A331C51A95D00B03BEF /* ResourceLoadObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadObserver.cpp; sourceTree = "<group>"; };
 		6C4C96DA1AD4483500363F64 /* JSReadableByteStreamController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableByteStreamController.cpp; sourceTree = "<group>"; };
+		6C4C96DA1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamBYOBRequest.cpp; sourceTree = "<group>"; };
 		6C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamDefaultController.cpp; sourceTree = "<group>"; };
 		6C4C96DB1AD4483500363F64 /* JSReadableByteStreamController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableByteStreamController.h; sourceTree = "<group>"; };
+		6C4C96DB1AD4483500365672 /* JSReadableStreamBYOBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamBYOBRequest.h; sourceTree = "<group>"; };
 		6C4C96DB1AD4483500365A50 /* JSReadableStreamDefaultController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamDefaultController.h; sourceTree = "<group>"; };
 		6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceRequestInitiators.h; sourceTree = "<group>"; };
 		6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceRequestInitiators.cpp; sourceTree = "<group>"; };
@@ -11609,6 +11614,7 @@
 		9908B0EF1BCACF9100ED0F75 /* WritableStream.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = WritableStream.js; sourceTree = "<group>"; };
 		9908B0F01BCACF9100ED0F65 /* ReadableStreamDefaultController.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = ReadableStreamDefaultController.js; sourceTree = "<group>"; };
 		9908B0F01BCACF9100ED3F64 /* ReadableByteStreamController.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = ReadableByteStreamController.js; sourceTree = "<group>"; };
+		9908B0F01BCACF9100ED5672 /* ReadableStreamBYOBRequest.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = ReadableStreamBYOBRequest.js; sourceTree = "<group>"; };
 		9908B0F11BCACF9100ED0F55 /* StreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = StreamInternals.js; sourceTree = "<group>"; };
 		9908B0F11BCACF9100ED0F65 /* ReadableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = ReadableStreamInternals.js; sourceTree = "<group>"; };
 		9908B0F11BCACF9100ED0F75 /* WritableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = WritableStreamInternals.js; sourceTree = "<group>"; };
@@ -16952,6 +16958,8 @@
 				9908B0F11BCACF9100ED3F64 /* ReadableByteStreamInternals.js */,
 				41A023ED1A39DB7900F722CF /* ReadableStream.idl */,
 				9908B0EF1BCACF9100ED0F65 /* ReadableStream.js */,
+				41189EF71AD8232800B95672 /* ReadableStreamBYOBRequest.idl */,
+				9908B0F01BCACF9100ED5672 /* ReadableStreamBYOBRequest.js */,
 				41189EF71AD8232800B90A0D /* ReadableStreamDefaultController.idl */,
 				9908B0F01BCACF9100ED0F65 /* ReadableStreamDefaultController.js */,
 				419FAFAD1ABABCD5005B828B /* ReadableStreamDefaultReader.idl */,
@@ -16974,6 +16982,8 @@
 				6C4C96DB1AD4483500363F64 /* JSReadableByteStreamController.h */,
 				7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */,
 				7C4C96D91AD4483500365A50 /* JSReadableStream.h */,
+				6C4C96DA1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp */,
+				6C4C96DB1AD4483500365672 /* JSReadableStreamBYOBRequest.h */,
 				6C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultController.cpp */,
 				6C4C96DB1AD4483500365A50 /* JSReadableStreamDefaultController.h */,
 				7C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultReader.cpp */,
@@ -26862,6 +26872,7 @@
 				65DF320209D1CC60000BE325 /* JSRange.h in Headers */,
 				6C4C96DF1AD4483500363F64 /* JSReadableByteStreamController.h in Headers */,
 				7C4C96DD1AD4483500365A50 /* JSReadableStream.h in Headers */,
+				6C4C96DF1AD4483500365672 /* JSReadableStreamBYOBRequest.h in Headers */,
 				6C4C96DF1AD4483500365A50 /* JSReadableStreamDefaultController.h in Headers */,
 				7C4C96DF1AD4483500365A50 /* JSReadableStreamDefaultReader.h in Headers */,
 				4129DF861BB5B80C00322A16 /* JSReadableStreamPrivateConstructors.h in Headers */,
@@ -30688,6 +30699,7 @@
 				65DF320109D1CC60000BE325 /* JSRange.cpp in Sources */,
 				6C4C96DE1AD4483500363F64 /* JSReadableByteStreamController.cpp in Sources */,
 				7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */,
+				6C4C96DE1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp in Sources */,
 				6C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultController.cpp in Sources */,
 				7C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultReader.cpp in Sources */,
 				4129DF851BB5B80700322A16 /* JSReadableStreamPrivateConstructors.cpp in Sources */,

Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp (212655 => 212656)


--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp	2017-02-20 18:18:06 UTC (rev 212656)
@@ -107,6 +107,7 @@
     JSObject* privateReadableStreamDefaultControllerConstructor = createReadableStreamDefaultControllerPrivateConstructor(vm, *this);
 #if ENABLE(READABLE_BYTE_STREAM_API)
     JSObject* privateReadableByteStreamControllerConstructor = createReadableByteStreamControllerPrivateConstructor(vm, *this);
+    JSObject* privateReadableStreamBYOBRequestConstructor = createReadableStreamBYOBRequestPrivateConstructor(vm, *this);
 #endif
     JSObject* privateReadableStreamDefaultReaderConstructor = createReadableStreamDefaultReaderPrivateConstructor(vm, *this);
 
@@ -113,6 +114,7 @@
     ASSERT(!constructors(NoLockingNecessary).get(privateReadableStreamDefaultControllerConstructor->info()).get());
 #if ENABLE(READABLE_BYTE_STREAM_API)
     ASSERT(!constructors(NoLockingNecessary).get(privateReadableByteStreamControllerConstructor->info()).get());
+    ASSERT(!constructors(NoLockingNecessary).get(privateReadableStreamBYOBRequestConstructor->info()).get());
 #endif
     ASSERT(!constructors(NoLockingNecessary).get(privateReadableStreamDefaultReaderConstructor->info()).get());
     JSC::WriteBarrier<JSC::JSObject> temp;
@@ -121,6 +123,7 @@
         constructors(locker).add(privateReadableStreamDefaultControllerConstructor->info(), temp).iterator->value.set(vm, this, privateReadableStreamDefaultControllerConstructor);
 #if ENABLE(READABLE_BYTE_STREAM_API)
         constructors(locker).add(privateReadableByteStreamControllerConstructor->info(), temp).iterator->value.set(vm, this, privateReadableByteStreamControllerConstructor);
+        constructors(locker).add(privateReadableStreamBYOBRequestConstructor->info(), temp).iterator->value.set(vm, this, privateReadableStreamBYOBRequestConstructor);
 #endif
         constructors(locker).add(privateReadableStreamDefaultReaderConstructor->info(), temp).iterator->value.set(vm, this, privateReadableStreamDefaultReaderConstructor);
     }
@@ -148,6 +151,7 @@
         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableStreamDefaultControllerPrivateName(), privateReadableStreamDefaultControllerConstructor, DontDelete | ReadOnly),
 #if ENABLE(READABLE_BYTE_STREAM_API)
         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableByteStreamControllerPrivateName(), privateReadableByteStreamControllerConstructor, DontDelete | ReadOnly),
+        JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableStreamBYOBRequestPrivateName(), privateReadableStreamBYOBRequestConstructor, DontDelete | ReadOnly),
 #endif
         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableStreamDefaultReaderPrivateName(), privateReadableStreamDefaultReaderConstructor, DontDelete | ReadOnly),
 #endif
@@ -161,7 +165,7 @@
     ASSERT(inherits(vm, info()));
 
     addBuiltinGlobals(vm);
-    
+
     RELEASE_ASSERT(classInfo());
 }
 
@@ -171,7 +175,7 @@
     ASSERT(inherits(vm, info()));
 
     addBuiltinGlobals(vm);
-    
+
     RELEASE_ASSERT(classInfo());
 }
 
@@ -191,16 +195,16 @@
     JSDOMGlobalObject* thisObject = jsCast<JSDOMGlobalObject*>(cell);
     ASSERT_GC_OBJECT_INHERITS(thisObject, info());
     Base::visitChildren(thisObject, visitor);
-    
+
     {
         auto locker = holdLock(thisObject->m_gcLock);
-        
+
         for (auto& structure : thisObject->structures(locker).values())
             visitor.append(structure);
-        
+
         for (auto& constructor : thisObject->constructors(locker).values())
             visitor.append(constructor);
-        
+
         for (auto& deferredPromise : thisObject->deferredPromises(locker))
             deferredPromise->visitAggregate(visitor);
     }

Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp (212655 => 212656)


--- trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp	2017-02-20 18:18:06 UTC (rev 212656)
@@ -25,6 +25,7 @@
 #include "JSDOMBuiltinConstructor.h"
 #include "JSReadableByteStreamController.h"
 #include "JSReadableStream.h"
+#include "JSReadableStreamBYOBRequest.h"
 #include "JSReadableStreamDefaultController.h"
 #include "JSReadableStreamDefaultReader.h"
 #include "ReadableByteStreamInternalsBuiltins.h"
@@ -44,16 +45,6 @@
     return throwVMTypeError(&exec, scope, ASCIILiteral("ReadableStreamDefaultController constructor should not be called directly"));
 }
 
-#if ENABLE(READABLE_BYTE_STREAM_API)
-// Public JS ReadableByteStreamController constructor callback.
-EncodedJSValue JSC_HOST_CALL constructJSReadableByteStreamController(ExecState& exec)
-{
-    VM& vm = exec.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-    return throwVMTypeError(&exec, scope, ASCIILiteral("ReadableByteStreamController constructor should not be called directly"));
-}
-#endif
-
 EncodedJSValue JSC_HOST_CALL constructJSReadableStreamDefaultReader(ExecState& exec)
 {
     VM& vm = exec.vm();
@@ -70,6 +61,23 @@
     return JSValue::encode(JSC::construct(&exec, constructor, constructType, constructData, args));
 }
 
+#if ENABLE(READABLE_BYTE_STREAM_API)
+// Public JS ReadableByteStreamController and ReadableStreamBYOBRequest constructor callback.
+EncodedJSValue JSC_HOST_CALL constructJSReadableByteStreamController(ExecState& exec)
+{
+    VM& vm = exec.vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+    return throwVMTypeError(&exec, scope, ASCIILiteral("ReadableByteStreamController constructor should not be called directly"));
+}
+
+EncodedJSValue JSC_HOST_CALL constructJSReadableStreamBYOBRequest(ExecState& exec)
+{
+    VM& vm = exec.vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+    return throwVMTypeError(&exec, scope, ASCIILiteral("ReadableStreamBYOBRequest constructor should not be called directly"));
+}
+#endif
+
 // Private JS ReadableStreamDefaultReader and ReadableStreamDefaultController constructors.
 using JSBuiltinReadableStreamDefaultReaderPrivateConstructor = JSDOMBuiltinConstructor<JSReadableStreamDefaultReader>;
 using JSBuiltinReadableStreamDefaultControllerPrivateConstructor = JSDOMBuiltinConstructor<JSReadableStreamDefaultController>;
@@ -76,6 +84,7 @@
 #if ENABLE(READABLE_BYTE_STREAM_API)
 // Private JS ReadableByteStreamController constructor.
 using JSBuiltinReadableByteStreamControllerPrivateConstructor = JSDOMBuiltinConstructor<JSReadableByteStreamController>;
+using JSBuiltinReadableStreamBYOBRequestPrivateConstructor = JSDOMBuiltinConstructor<JSReadableStreamBYOBRequest>;
 #endif
 
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableStreamDefaultReaderPrivateConstructor);
@@ -82,6 +91,7 @@
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableStreamDefaultControllerPrivateConstructor);
 #if ENABLE(READABLE_BYTE_STREAM_API)
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableByteStreamControllerPrivateConstructor);
+STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableStreamBYOBRequestPrivateConstructor);
 #endif
 
 template<> const ClassInfo JSBuiltinReadableStreamDefaultReaderPrivateConstructor::s_info = { "ReadableStreamDefaultReaderPrivateConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableStreamDefaultReaderPrivateConstructor) };
@@ -88,6 +98,7 @@
 template<> const ClassInfo JSBuiltinReadableStreamDefaultControllerPrivateConstructor::s_info = { "ReadableStreamDefaultControllerPrivateConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableStreamDefaultControllerPrivateConstructor) };
 #if ENABLE(READABLE_BYTE_STREAM_API)
 template<> const ClassInfo JSBuiltinReadableByteStreamControllerPrivateConstructor::s_info = { "ReadableByteStreamControllerPrivateConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableByteStreamControllerPrivateConstructor) };
+template<> const ClassInfo JSBuiltinReadableStreamBYOBRequestPrivateConstructor::s_info = { "ReadableStreamBYOBRequestPrivateConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableStreamBYOBRequestPrivateConstructor) };
 #endif
 
 template<> FunctionExecutable* JSBuiltinReadableStreamDefaultReaderPrivateConstructor::initializeExecutable(JSC::VM& vm)
@@ -105,6 +116,11 @@
 {
     return readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeGenerator(vm);
 }
+
+template<> FunctionExecutable* JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable(JSC::VM& vm)
+{
+    return readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeGenerator(vm);
+}
 #endif
 
 JSObject* createReadableStreamDefaultReaderPrivateConstructor(VM& vm, JSDOMGlobalObject& globalObject)
@@ -122,6 +138,11 @@
 {
     return JSBuiltinReadableByteStreamControllerPrivateConstructor::create(vm, JSBuiltinReadableByteStreamControllerPrivateConstructor::createStructure(vm, globalObject, globalObject.objectPrototype()), globalObject);
 }
+
+JSObject* createReadableStreamBYOBRequestPrivateConstructor(VM& vm, JSDOMGlobalObject& globalObject)
+{
+    return JSBuiltinReadableStreamBYOBRequestPrivateConstructor::create(vm, JSBuiltinReadableStreamBYOBRequestPrivateConstructor::createStructure(vm, globalObject, globalObject.objectPrototype()), globalObject);
+}
 #endif
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.h (212655 => 212656)


--- trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.h	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.h	2017-02-20 18:18:06 UTC (rev 212656)
@@ -34,6 +34,7 @@
 
 #if ENABLE(READABLE_BYTE_STREAM_API)
 JSC::JSObject* createReadableByteStreamControllerPrivateConstructor(JSC::VM&, JSDOMGlobalObject&);
+JSC::JSObject* createReadableStreamBYOBRequestPrivateConstructor(JSC::VM&, JSDOMGlobalObject&);
 #endif
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (212655 => 212656)


--- trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h	2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h	2017-02-20 18:18:06 UTC (rev 212656)
@@ -33,8 +33,10 @@
 #define WEBCORE_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(macro)\
     macro(addTrack) \
     macro(appendFromJS) \
+    macro(associatedReadableByteStreamController) \
     macro(autoAllocateChunkSize) \
     macro(body) \
+    macro(byobRequest) \
     macro(cancel) \
     macro(cloneForJS) \
     macro(closeRequested) \
@@ -103,6 +105,7 @@
     macro(underlyingByteSource) \
     macro(underlyingSink) \
     macro(underlyingSource) \
+    macro(view) \
     macro(writing) \
     macro(Headers) \
     macro(MediaStream) \
@@ -109,6 +112,7 @@
     macro(MediaStreamTrack) \
     macro(ReadableByteStreamController) \
     macro(ReadableStream) \
+    macro(ReadableStreamBYOBRequest) \
     macro(ReadableStreamDefaultController) \
     macro(ReadableStreamDefaultReader) \
     macro(Request) \
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to