<!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>[212656] 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/212656">212656</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2017-02-20 10:18:06 -0800 (Mon, 20 Feb 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Readable Streams API] Add ReadableByteStreamController byobRequest attribute
https://bugs.webkit.org/show_bug.cgi?id=168319

Patch by Romain Bellessort &lt;romain.bellessort@crf.canon.fr&gt; 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.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstreamsreadablebytestreamcontrollerjs">trunk/LayoutTests/streams/readable-byte-stream-controller.js</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcescpp">trunk/Source/WebCore/DerivedSources.cpp</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableByteStreamControlleridl">trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableByteStreamControllerjs">trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableByteStreamInternalsjs">trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp">trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorscpp">trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorsh">trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWebCoreBuiltinNamesh">trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsstreamsreadablestreambyobrequestexpectedtxt">trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstreamsreadablestreambyobrequesthtml">trunk/LayoutTests/streams/readable-stream-byob-request.html</a></li>
<li><a href="#trunkLayoutTestsstreamsreadablestreambyobrequestjs">trunk/LayoutTests/streams/readable-stream-byob-request.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamBYOBRequestidl">trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamBYOBRequestjs">trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-02-20 18:16:46 UTC (rev 212655)
+++ trunk/LayoutTests/ChangeLog        2017-02-20 18:18:06 UTC (rev 212656)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2017-02-20  Romain Bellessort  &lt;romain.bellessort@crf.canon.fr&gt;
+
+        [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.
+
</ins><span class="cx"> 2017-02-20  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Rebaseline fast/canvas/webgl/context-creation-attributes.html after r212650.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2017-02-20  Romain Bellessort  &lt;romain.bellessort@crf.canon.fr&gt;
+
+        [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.
+
</ins><span class="cx"> 2017-02-19  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         onbeforeunload event return value coercion is not per-spec
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -14,7 +14,7 @@
</span><span class="cx"> PASS ReadableStream with byte source: Automatic pull() after start() 
</span><span class="cx"> PASS ReadableStream with byte source: Automatic pull() after start() and read() 
</span><span class="cx"> FAIL ReadableStream with byte source: autoAllocateChunkSize assert_equals: pull() must have been invoked once expected 1 but got 0
</span><del>-FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object &quot;TypeError: undefined is not an object (evaluating 'byobRequest.view')&quot;
</del><ins>+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object &quot;TypeError: ReadableByteStreamController view is not implemented&quot;
</ins><span class="cx"> PASS ReadableStream with byte source: Automatic pull() after start() and read(view) 
</span><span class="cx"> PASS ReadableStream with byte source: enqueue(), getReader(), then read() 
</span><span class="cx"> PASS ReadableStream with byte source: Push source that doesn't understand pull signal 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -14,7 +14,7 @@
</span><span class="cx"> PASS ReadableStream with byte source: Automatic pull() after start() 
</span><span class="cx"> PASS ReadableStream with byte source: Automatic pull() after start() and read() 
</span><span class="cx"> FAIL ReadableStream with byte source: autoAllocateChunkSize assert_equals: pull() must have been invoked once expected 1 but got 0
</span><del>-FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object &quot;TypeError: undefined is not an object (evaluating 'byobRequest.view')&quot;
</del><ins>+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object &quot;TypeError: ReadableByteStreamController view is not implemented&quot;
</ins><span class="cx"> PASS ReadableStream with byte source: Automatic pull() after start() and read(view) 
</span><span class="cx"> PASS ReadableStream with byte source: enqueue(), getReader(), then read() 
</span><span class="cx"> PASS ReadableStream with byte source: Push source that doesn't understand pull signal 
</span></span></pre></div>
<a id="trunkLayoutTestsstreamsreadablebytestreamcontrollerjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/streams/readable-byte-stream-controller.js (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -12,8 +12,7 @@
</span><span class="cx"> 
</span><span class="cx"> test(() =&gt; {
</span><span class="cx">     const methods = ['close', 'constructor', 'enqueue', 'error'];
</span><del>-    // FIXME: Add byobRequest when implemented.
-    const properties = methods.concat(['desiredSize']).sort();
</del><ins>+    const properties = methods.concat(['byobRequest', 'desiredSize']).sort();
</ins><span class="cx"> 
</span><span class="cx">     let controller;
</span><span class="cx"> 
</span><span class="lines">@@ -36,6 +35,12 @@
</span><span class="cx">         assert_equals(typeof controller[m], 'function', 'should have be a method');
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    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');
+
</ins><span class="cx">     const desiredSizePropDesc = Object.getOwnPropertyDescriptor(proto, 'desiredSize');
</span><span class="cx">     assert_equals(desiredSizePropDesc.enumerable, false, 'desiredSize should be non-enumerable');
</span><span class="cx">     assert_equals(desiredSizePropDesc.configurable, true, 'desiredSize should be configurable');
</span></span></pre></div>
<a id="trunkLayoutTestsstreamsreadablestreambyobrequestexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt (0 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+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 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstreamsreadablestreambyobrequesthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/streams/readable-stream-byob-request.html (0 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+&lt;!DOCTYPE html&gt;
+&lt;script src='../resources/testharness.js'&gt;&lt;/script&gt;
+&lt;script src='../resources/testharnessreport.js'&gt;&lt;/script&gt;
+&lt;script src='readable-stream-byob-request.js'&gt;&lt;/script&gt;
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('readable-stream-byob-request.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstreamsreadablestreambyobrequestjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/streams/readable-stream-byob-request.js (0 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+    self.importScripts('../resources/testharness.js');
+}
+
+test(() =&gt; {
+    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: &quot;bytes&quot;
+    });
+
+    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: &quot;bytes&quot;
+    });
+
+    assert_equals(controller.byobRequest, undefined, &quot;by default byobRequest should be undefined&quot;);
+}, &quot;By default, byobRequest should be undefined&quot;);
+
+done();
</ins></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -260,6 +260,7 @@
</span><span class="cx">     Modules/streams/CountQueuingStrategy.idl
</span><span class="cx">     Modules/streams/ReadableByteStreamController.idl
</span><span class="cx">     Modules/streams/ReadableStream.idl
</span><ins>+    Modules/streams/ReadableStreamBYOBRequest.idl
</ins><span class="cx">     Modules/streams/ReadableStreamDefaultController.idl
</span><span class="cx">     Modules/streams/ReadableStreamDefaultReader.idl
</span><span class="cx">     Modules/streams/ReadableStreamSource.idl
</span><span class="lines">@@ -3675,6 +3676,7 @@
</span><span class="cx">     ${WEBCORE_DIR}/Modules/streams/ReadableByteStreamController.js
</span><span class="cx">     ${WEBCORE_DIR}/Modules/streams/ReadableByteStreamInternals.js
</span><span class="cx">     ${WEBCORE_DIR}/Modules/streams/ReadableStream.js
</span><ins>+    ${WEBCORE_DIR}/Modules/streams/ReadableStreamBYOBRequest.js
</ins><span class="cx">     ${WEBCORE_DIR}/Modules/streams/ReadableStreamDefaultController.js
</span><span class="cx">     ${WEBCORE_DIR}/Modules/streams/ReadableStreamInternals.js
</span><span class="cx">     ${WEBCORE_DIR}/Modules/streams/ReadableStreamDefaultReader.js
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,40 @@
</span><ins>+2017-02-20  Romain Bellessort  &lt;romain.bellessort@crf.canon.fr&gt;
+
+        [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.
+
</ins><span class="cx"> 2017-02-20  Per Arne Vollan  &lt;pvollan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Custom scale factor is not applied in all cases.
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.cpp (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -386,6 +386,7 @@
</span><span class="cx"> #include &quot;JSRange.cpp&quot;
</span><span class="cx"> #include &quot;JSReadableByteStreamController.cpp&quot;
</span><span class="cx"> #include &quot;JSReadableStream.cpp&quot;
</span><ins>+#include &quot;JSReadableStreamBYOBRequest.cpp&quot;
</ins><span class="cx"> #include &quot;JSReadableStreamDefaultController.cpp&quot;
</span><span class="cx"> #include &quot;JSReadableStreamDefaultReader.cpp&quot;
</span><span class="cx"> #include &quot;JSRequestAnimationFrameCallback.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -203,6 +203,7 @@
</span><span class="cx">     $(WebCore)/Modules/streams/CountQueuingStrategy.idl \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableByteStreamController.idl \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableStream.idl \
</span><ins>+    $(WebCore)/Modules/streams/ReadableStreamBYOBRequest.idl \
</ins><span class="cx">     $(WebCore)/Modules/streams/ReadableStreamDefaultController.idl \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableStreamDefaultReader.idl \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableStreamSource.idl \
</span><span class="lines">@@ -1349,6 +1350,7 @@
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableByteStreamController.js \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableByteStreamInternals.js \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableStream.js \
</span><ins>+    $(WebCore)/Modules/streams/ReadableStreamBYOBRequest.js \
</ins><span class="cx">     $(WebCore)/Modules/streams/ReadableStreamDefaultController.js \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableStreamInternals.js \
</span><span class="cx">     $(WebCore)/Modules/streams/ReadableStreamDefaultReader.js \
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableByteStreamControlleridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -38,6 +38,6 @@
</span><span class="cx">     [NotEnumerable] void close();
</span><span class="cx">     [NotEnumerable] void error(optional any error);
</span><span class="cx"> 
</span><del>-    //FIXME: Add byobRequest when implemented.
</del><ins>+    [NotEnumerable] readonly attribute ReadableStreamBYOBRequest byobRequest;
</ins><span class="cx">     [NotEnumerable] readonly attribute double desiredSize;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableByteStreamControllerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.js (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -80,8 +80,18 @@
</span><span class="cx"> {
</span><span class="cx">     &quot;use strict&quot;;
</span><span class="cx"> 
</span><del>-    //FIXME: Implement appropriate behavior.
-    @throwTypeError(&quot;ReadableByteStreamController byobRequest is not implemented&quot;);
</del><ins>+    if (!@isReadableByteStreamController(this))
+        throw @makeGetterTypeError(&quot;ReadableByteStreamController&quot;, &quot;byobRequest&quot;);
+
+    if (this.@byobRequest === @undefined &amp;&amp; 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;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function desiredSize()
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableByteStreamInternalsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -78,6 +78,14 @@
</span><span class="cx">     return this;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+function privateInitializeReadableStreamBYOBRequest(controller, view)
+{
+    &quot;use strict&quot;;
+
+    this.@associatedReadableByteStreamController = controller;
+    this.@view = view;
+}
+
</ins><span class="cx"> function isReadableByteStreamController(controller)
</span><span class="cx"> {
</span><span class="cx">     &quot;use strict&quot;;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamBYOBRequestidlfromrev212655trunkSourceWebCoreModulesstreamsReadableByteStreamControlleridl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.idl (from rev 212655, trunk/Source/WebCore/Modules/streams/ReadableByteStreamController.idl) (0 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+/*
+ * 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 &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 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&amp;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;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamBYOBRequestjs"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/streams/ReadableStreamBYOBRequest.js (0 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * 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) &amp;&amp; ENABLE(READABLE_BYTE_STREAM_API)
+
+function respond(bytesWritten)
+{
+    &quot;use strict&quot;;
+
+    // FIXME: Implement appropriate behavior.
+    @throwTypeError(&quot;ReadableStreamBYOBRequest respond() is not implemented&quot;);
+}
+
+function respondWithNewView(view)
+{
+    &quot;use strict&quot;;
+
+    // FIXME: Implement appropriate behavior.
+    @throwTypeError(&quot;ReadableStreamBYOBRequest respondWithNewView() is not implemented&quot;);
+}
+
+function view()
+{
+    &quot;use strict&quot;;
+
+    // FIXME: Implement appropriate behavior.
+    @throwTypeError(&quot;ReadableByteStreamController view is not implemented&quot;);
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -2612,8 +2612,10 @@
</span><span class="cx">                 6B693A2E1C51A82E00B03BEF /* ResourceLoadObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 6B693A341C51A95D00B03BEF /* ResourceLoadObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B693A331C51A95D00B03BEF /* ResourceLoadObserver.cpp */; };
</span><span class="cx">                 6C4C96DE1AD4483500363F64 /* JSReadableByteStreamController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C4C96DA1AD4483500363F64 /* JSReadableByteStreamController.cpp */; };
</span><ins>+                6C4C96DE1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C4C96DA1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp */; };
</ins><span class="cx">                 6C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultController.cpp */; };
</span><span class="cx">                 6C4C96DF1AD4483500363F64 /* JSReadableByteStreamController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4C96DB1AD4483500363F64 /* JSReadableByteStreamController.h */; };
</span><ins>+                6C4C96DF1AD4483500365672 /* JSReadableStreamBYOBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4C96DB1AD4483500365672 /* JSReadableStreamBYOBRequest.h */; };
</ins><span class="cx">                 6C4C96DF1AD4483500365A50 /* JSReadableStreamDefaultController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4C96DB1AD4483500365A50 /* JSReadableStreamDefaultController.h */; };
</span><span class="cx">                 6C638895A96CCEE50C8C946C /* CachedResourceRequestInitiators.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 6C638896A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */; };
</span><span class="lines">@@ -8770,6 +8772,7 @@
</span><span class="cx">                 41103AAA1E39790A00769F03 /* RealtimeIncomingAudioSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RealtimeIncomingAudioSource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 41189EF71AD8232800B90A0D /* ReadableStreamDefaultController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableStreamDefaultController.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 41189EF71AD8232800B93F64 /* ReadableByteStreamController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableByteStreamController.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                41189EF71AD8232800B95672 /* ReadableStreamBYOBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableStreamBYOBRequest.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4129DF831BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamPrivateConstructors.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4129DF841BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamPrivateConstructors.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -10018,8 +10021,10 @@
</span><span class="cx">                 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadObserver.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6B693A331C51A95D00B03BEF /* ResourceLoadObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadObserver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6C4C96DA1AD4483500363F64 /* JSReadableByteStreamController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableByteStreamController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                6C4C96DA1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamBYOBRequest.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 6C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamDefaultController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6C4C96DB1AD4483500363F64 /* JSReadableByteStreamController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableByteStreamController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                6C4C96DB1AD4483500365672 /* JSReadableStreamBYOBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamBYOBRequest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 6C4C96DB1AD4483500365A50 /* JSReadableStreamDefaultController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamDefaultController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceRequestInitiators.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceRequestInitiators.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -11609,6 +11614,7 @@
</span><span class="cx">                 9908B0EF1BCACF9100ED0F75 /* WritableStream.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WritableStream.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9908B0F01BCACF9100ED0F65 /* ReadableStreamDefaultController.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamDefaultController.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9908B0F01BCACF9100ED3F64 /* ReadableByteStreamController.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableByteStreamController.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                9908B0F01BCACF9100ED5672 /* ReadableStreamBYOBRequest.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamBYOBRequest.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 9908B0F11BCACF9100ED0F55 /* StreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = StreamInternals.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9908B0F11BCACF9100ED0F65 /* ReadableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ReadableStreamInternals.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9908B0F11BCACF9100ED0F75 /* WritableStreamInternals.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WritableStreamInternals.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -16952,6 +16958,8 @@
</span><span class="cx">                                 9908B0F11BCACF9100ED3F64 /* ReadableByteStreamInternals.js */,
</span><span class="cx">                                 41A023ED1A39DB7900F722CF /* ReadableStream.idl */,
</span><span class="cx">                                 9908B0EF1BCACF9100ED0F65 /* ReadableStream.js */,
</span><ins>+                                41189EF71AD8232800B95672 /* ReadableStreamBYOBRequest.idl */,
+                                9908B0F01BCACF9100ED5672 /* ReadableStreamBYOBRequest.js */,
</ins><span class="cx">                                 41189EF71AD8232800B90A0D /* ReadableStreamDefaultController.idl */,
</span><span class="cx">                                 9908B0F01BCACF9100ED0F65 /* ReadableStreamDefaultController.js */,
</span><span class="cx">                                 419FAFAD1ABABCD5005B828B /* ReadableStreamDefaultReader.idl */,
</span><span class="lines">@@ -16974,6 +16982,8 @@
</span><span class="cx">                                 6C4C96DB1AD4483500363F64 /* JSReadableByteStreamController.h */,
</span><span class="cx">                                 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */,
</span><span class="cx">                                 7C4C96D91AD4483500365A50 /* JSReadableStream.h */,
</span><ins>+                                6C4C96DA1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp */,
+                                6C4C96DB1AD4483500365672 /* JSReadableStreamBYOBRequest.h */,
</ins><span class="cx">                                 6C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultController.cpp */,
</span><span class="cx">                                 6C4C96DB1AD4483500365A50 /* JSReadableStreamDefaultController.h */,
</span><span class="cx">                                 7C4C96DA1AD4483500365A50 /* JSReadableStreamDefaultReader.cpp */,
</span><span class="lines">@@ -26862,6 +26872,7 @@
</span><span class="cx">                                 65DF320209D1CC60000BE325 /* JSRange.h in Headers */,
</span><span class="cx">                                 6C4C96DF1AD4483500363F64 /* JSReadableByteStreamController.h in Headers */,
</span><span class="cx">                                 7C4C96DD1AD4483500365A50 /* JSReadableStream.h in Headers */,
</span><ins>+                                6C4C96DF1AD4483500365672 /* JSReadableStreamBYOBRequest.h in Headers */,
</ins><span class="cx">                                 6C4C96DF1AD4483500365A50 /* JSReadableStreamDefaultController.h in Headers */,
</span><span class="cx">                                 7C4C96DF1AD4483500365A50 /* JSReadableStreamDefaultReader.h in Headers */,
</span><span class="cx">                                 4129DF861BB5B80C00322A16 /* JSReadableStreamPrivateConstructors.h in Headers */,
</span><span class="lines">@@ -30688,6 +30699,7 @@
</span><span class="cx">                                 65DF320109D1CC60000BE325 /* JSRange.cpp in Sources */,
</span><span class="cx">                                 6C4C96DE1AD4483500363F64 /* JSReadableByteStreamController.cpp in Sources */,
</span><span class="cx">                                 7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */,
</span><ins>+                                6C4C96DE1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp in Sources */,
</ins><span class="cx">                                 6C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultController.cpp in Sources */,
</span><span class="cx">                                 7C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultReader.cpp in Sources */,
</span><span class="cx">                                 4129DF851BB5B80700322A16 /* JSReadableStreamPrivateConstructors.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -107,6 +107,7 @@
</span><span class="cx">     JSObject* privateReadableStreamDefaultControllerConstructor = createReadableStreamDefaultControllerPrivateConstructor(vm, *this);
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx">     JSObject* privateReadableByteStreamControllerConstructor = createReadableByteStreamControllerPrivateConstructor(vm, *this);
</span><ins>+    JSObject* privateReadableStreamBYOBRequestConstructor = createReadableStreamBYOBRequestPrivateConstructor(vm, *this);
</ins><span class="cx"> #endif
</span><span class="cx">     JSObject* privateReadableStreamDefaultReaderConstructor = createReadableStreamDefaultReaderPrivateConstructor(vm, *this);
</span><span class="cx"> 
</span><span class="lines">@@ -113,6 +114,7 @@
</span><span class="cx">     ASSERT(!constructors(NoLockingNecessary).get(privateReadableStreamDefaultControllerConstructor-&gt;info()).get());
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx">     ASSERT(!constructors(NoLockingNecessary).get(privateReadableByteStreamControllerConstructor-&gt;info()).get());
</span><ins>+    ASSERT(!constructors(NoLockingNecessary).get(privateReadableStreamBYOBRequestConstructor-&gt;info()).get());
</ins><span class="cx"> #endif
</span><span class="cx">     ASSERT(!constructors(NoLockingNecessary).get(privateReadableStreamDefaultReaderConstructor-&gt;info()).get());
</span><span class="cx">     JSC::WriteBarrier&lt;JSC::JSObject&gt; temp;
</span><span class="lines">@@ -121,6 +123,7 @@
</span><span class="cx">         constructors(locker).add(privateReadableStreamDefaultControllerConstructor-&gt;info(), temp).iterator-&gt;value.set(vm, this, privateReadableStreamDefaultControllerConstructor);
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx">         constructors(locker).add(privateReadableByteStreamControllerConstructor-&gt;info(), temp).iterator-&gt;value.set(vm, this, privateReadableByteStreamControllerConstructor);
</span><ins>+        constructors(locker).add(privateReadableStreamBYOBRequestConstructor-&gt;info(), temp).iterator-&gt;value.set(vm, this, privateReadableStreamBYOBRequestConstructor);
</ins><span class="cx"> #endif
</span><span class="cx">         constructors(locker).add(privateReadableStreamDefaultReaderConstructor-&gt;info(), temp).iterator-&gt;value.set(vm, this, privateReadableStreamDefaultReaderConstructor);
</span><span class="cx">     }
</span><span class="lines">@@ -148,6 +151,7 @@
</span><span class="cx">         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableStreamDefaultControllerPrivateName(), privateReadableStreamDefaultControllerConstructor, DontDelete | ReadOnly),
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx">         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableByteStreamControllerPrivateName(), privateReadableByteStreamControllerConstructor, DontDelete | ReadOnly),
</span><ins>+        JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableStreamBYOBRequestPrivateName(), privateReadableStreamBYOBRequestConstructor, DontDelete | ReadOnly),
</ins><span class="cx"> #endif
</span><span class="cx">         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().ReadableStreamDefaultReaderPrivateName(), privateReadableStreamDefaultReaderConstructor, DontDelete | ReadOnly),
</span><span class="cx"> #endif
</span><span class="lines">@@ -161,7 +165,7 @@
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><span class="cx"> 
</span><span class="cx">     addBuiltinGlobals(vm);
</span><del>-    
</del><ins>+
</ins><span class="cx">     RELEASE_ASSERT(classInfo());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -171,7 +175,7 @@
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><span class="cx"> 
</span><span class="cx">     addBuiltinGlobals(vm);
</span><del>-    
</del><ins>+
</ins><span class="cx">     RELEASE_ASSERT(classInfo());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -191,16 +195,16 @@
</span><span class="cx">     JSDOMGlobalObject* thisObject = jsCast&lt;JSDOMGlobalObject*&gt;(cell);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObject, info());
</span><span class="cx">     Base::visitChildren(thisObject, visitor);
</span><del>-    
</del><ins>+
</ins><span class="cx">     {
</span><span class="cx">         auto locker = holdLock(thisObject-&gt;m_gcLock);
</span><del>-        
</del><ins>+
</ins><span class="cx">         for (auto&amp; structure : thisObject-&gt;structures(locker).values())
</span><span class="cx">             visitor.append(structure);
</span><del>-        
</del><ins>+
</ins><span class="cx">         for (auto&amp; constructor : thisObject-&gt;constructors(locker).values())
</span><span class="cx">             visitor.append(constructor);
</span><del>-        
</del><ins>+
</ins><span class="cx">         for (auto&amp; deferredPromise : thisObject-&gt;deferredPromises(locker))
</span><span class="cx">             deferredPromise-&gt;visitAggregate(visitor);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> #include &quot;JSDOMBuiltinConstructor.h&quot;
</span><span class="cx"> #include &quot;JSReadableByteStreamController.h&quot;
</span><span class="cx"> #include &quot;JSReadableStream.h&quot;
</span><ins>+#include &quot;JSReadableStreamBYOBRequest.h&quot;
</ins><span class="cx"> #include &quot;JSReadableStreamDefaultController.h&quot;
</span><span class="cx"> #include &quot;JSReadableStreamDefaultReader.h&quot;
</span><span class="cx"> #include &quot;ReadableByteStreamInternalsBuiltins.h&quot;
</span><span class="lines">@@ -44,16 +45,6 @@
</span><span class="cx">     return throwVMTypeError(&amp;exec, scope, ASCIILiteral(&quot;ReadableStreamDefaultController constructor should not be called directly&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if ENABLE(READABLE_BYTE_STREAM_API)
-// Public JS ReadableByteStreamController constructor callback.
-EncodedJSValue JSC_HOST_CALL constructJSReadableByteStreamController(ExecState&amp; exec)
-{
-    VM&amp; vm = exec.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-    return throwVMTypeError(&amp;exec, scope, ASCIILiteral(&quot;ReadableByteStreamController constructor should not be called directly&quot;));
-}
-#endif
-
</del><span class="cx"> EncodedJSValue JSC_HOST_CALL constructJSReadableStreamDefaultReader(ExecState&amp; exec)
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec.vm();
</span><span class="lines">@@ -70,6 +61,23 @@
</span><span class="cx">     return JSValue::encode(JSC::construct(&amp;exec, constructor, constructType, constructData, args));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(READABLE_BYTE_STREAM_API)
+// Public JS ReadableByteStreamController and ReadableStreamBYOBRequest constructor callback.
+EncodedJSValue JSC_HOST_CALL constructJSReadableByteStreamController(ExecState&amp; exec)
+{
+    VM&amp; vm = exec.vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+    return throwVMTypeError(&amp;exec, scope, ASCIILiteral(&quot;ReadableByteStreamController constructor should not be called directly&quot;));
+}
+
+EncodedJSValue JSC_HOST_CALL constructJSReadableStreamBYOBRequest(ExecState&amp; exec)
+{
+    VM&amp; vm = exec.vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+    return throwVMTypeError(&amp;exec, scope, ASCIILiteral(&quot;ReadableStreamBYOBRequest constructor should not be called directly&quot;));
+}
+#endif
+
</ins><span class="cx"> // Private JS ReadableStreamDefaultReader and ReadableStreamDefaultController constructors.
</span><span class="cx"> using JSBuiltinReadableStreamDefaultReaderPrivateConstructor = JSDOMBuiltinConstructor&lt;JSReadableStreamDefaultReader&gt;;
</span><span class="cx"> using JSBuiltinReadableStreamDefaultControllerPrivateConstructor = JSDOMBuiltinConstructor&lt;JSReadableStreamDefaultController&gt;;
</span><span class="lines">@@ -76,6 +84,7 @@
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx"> // Private JS ReadableByteStreamController constructor.
</span><span class="cx"> using JSBuiltinReadableByteStreamControllerPrivateConstructor = JSDOMBuiltinConstructor&lt;JSReadableByteStreamController&gt;;
</span><ins>+using JSBuiltinReadableStreamBYOBRequestPrivateConstructor = JSDOMBuiltinConstructor&lt;JSReadableStreamBYOBRequest&gt;;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableStreamDefaultReaderPrivateConstructor);
</span><span class="lines">@@ -82,6 +91,7 @@
</span><span class="cx"> STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableStreamDefaultControllerPrivateConstructor);
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx"> STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableByteStreamControllerPrivateConstructor);
</span><ins>+STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSBuiltinReadableStreamBYOBRequestPrivateConstructor);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; const ClassInfo JSBuiltinReadableStreamDefaultReaderPrivateConstructor::s_info = { &quot;ReadableStreamDefaultReaderPrivateConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableStreamDefaultReaderPrivateConstructor) };
</span><span class="lines">@@ -88,6 +98,7 @@
</span><span class="cx"> template&lt;&gt; const ClassInfo JSBuiltinReadableStreamDefaultControllerPrivateConstructor::s_info = { &quot;ReadableStreamDefaultControllerPrivateConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableStreamDefaultControllerPrivateConstructor) };
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx"> template&lt;&gt; const ClassInfo JSBuiltinReadableByteStreamControllerPrivateConstructor::s_info = { &quot;ReadableByteStreamControllerPrivateConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableByteStreamControllerPrivateConstructor) };
</span><ins>+template&lt;&gt; const ClassInfo JSBuiltinReadableStreamBYOBRequestPrivateConstructor::s_info = { &quot;ReadableStreamBYOBRequestPrivateConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSBuiltinReadableStreamBYOBRequestPrivateConstructor) };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; FunctionExecutable* JSBuiltinReadableStreamDefaultReaderPrivateConstructor::initializeExecutable(JSC::VM&amp; vm)
</span><span class="lines">@@ -105,6 +116,11 @@
</span><span class="cx"> {
</span><span class="cx">     return readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeGenerator(vm);
</span><span class="cx"> }
</span><ins>+
+template&lt;&gt; FunctionExecutable* JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable(JSC::VM&amp; vm)
+{
+    return readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeGenerator(vm);
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> JSObject* createReadableStreamDefaultReaderPrivateConstructor(VM&amp; vm, JSDOMGlobalObject&amp; globalObject)
</span><span class="lines">@@ -122,6 +138,11 @@
</span><span class="cx"> {
</span><span class="cx">     return JSBuiltinReadableByteStreamControllerPrivateConstructor::create(vm, JSBuiltinReadableByteStreamControllerPrivateConstructor::createStructure(vm, globalObject, globalObject.objectPrototype()), globalObject);
</span><span class="cx"> }
</span><ins>+
+JSObject* createReadableStreamBYOBRequestPrivateConstructor(VM&amp; vm, JSDOMGlobalObject&amp; globalObject)
+{
+    return JSBuiltinReadableStreamBYOBRequestPrivateConstructor::create(vm, JSBuiltinReadableStreamBYOBRequestPrivateConstructor::createStructure(vm, globalObject, globalObject.objectPrototype()), globalObject);
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.h (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(READABLE_BYTE_STREAM_API)
</span><span class="cx"> JSC::JSObject* createReadableByteStreamControllerPrivateConstructor(JSC::VM&amp;, JSDOMGlobalObject&amp;);
</span><ins>+JSC::JSObject* createReadableStreamBYOBRequestPrivateConstructor(JSC::VM&amp;, JSDOMGlobalObject&amp;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWebCoreBuiltinNamesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (212655 => 212656)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -33,8 +33,10 @@
</span><span class="cx"> #define WEBCORE_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(macro)\
</span><span class="cx">     macro(addTrack) \
</span><span class="cx">     macro(appendFromJS) \
</span><ins>+    macro(associatedReadableByteStreamController) \
</ins><span class="cx">     macro(autoAllocateChunkSize) \
</span><span class="cx">     macro(body) \
</span><ins>+    macro(byobRequest) \
</ins><span class="cx">     macro(cancel) \
</span><span class="cx">     macro(cloneForJS) \
</span><span class="cx">     macro(closeRequested) \
</span><span class="lines">@@ -103,6 +105,7 @@
</span><span class="cx">     macro(underlyingByteSource) \
</span><span class="cx">     macro(underlyingSink) \
</span><span class="cx">     macro(underlyingSource) \
</span><ins>+    macro(view) \
</ins><span class="cx">     macro(writing) \
</span><span class="cx">     macro(Headers) \
</span><span class="cx">     macro(MediaStream) \
</span><span class="lines">@@ -109,6 +112,7 @@
</span><span class="cx">     macro(MediaStreamTrack) \
</span><span class="cx">     macro(ReadableByteStreamController) \
</span><span class="cx">     macro(ReadableStream) \
</span><ins>+    macro(ReadableStreamBYOBRequest) \
</ins><span class="cx">     macro(ReadableStreamDefaultController) \
</span><span class="cx">     macro(ReadableStreamDefaultReader) \
</span><span class="cx">     macro(Request) \
</span></span></pre>
</div>
</div>

</body>
</html>