<!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>[214713] 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/214713">214713</a></dd>
<dt>Author</dt> <dd>ap@apple.com</dd>
<dt>Date</dt> <dd>2017-04-01 00:47:17 -0700 (Sat, 01 Apr 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rolling back http://trac.webkit.org/<a href="http://trac.webkit.org/projects/webkit/changeset/214663">r214663</a> - memory corruption

Source/WebCore:

* Modules/streams/ReadableByteStreamInternals.js:
(cloneArrayBuffer):
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
* bindings/js/StructuredClone.cpp:
(WebCore::structuredCloneArrayBuffer):
(WebCore::cloneArrayBufferImpl): Deleted.
(WebCore::cloneArrayBuffer): Deleted.
* bindings/js/StructuredClone.h:
* bindings/js/WebCoreBuiltinNames.h:
* testing/Internals.cpp:
(WebCore::markerTypeFrom):
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::isLoadingFromMemoryCache):
(WebCore::Internals::setImageFrameDecodingDuration):
(WebCore::deferredStyleRulesCountForList):
(WebCore::deferredGroupRulesCountForList):
(WebCore::deferredKeyframesRulesCountForList):
(WebCore::Internals::eventThrottlingBehaviorOverride):
(WebCore::Internals::enableMockSpeechSynthesizer):
(WebCore::Internals::rangeForDictionaryLookupAtLocation):
(WebCore::Internals::nodesFromRect):
(WebCore::Internals::layerIDForElement):
(WebCore::Internals::setElementUsesDisplayListDrawing):
(WebCore::Internals::setElementTracksDisplayListReplay):
(WebCore::Internals::styleRecalcCount):
(WebCore::Internals::compositingUpdateCount):
(WebCore::Internals::setCaptionDisplayMode):
(WebCore::Internals::endMediaSessionInterruption):
(WebCore::Internals::postRemoteControlCommand):
(WebCore::appendOffsets):
(WebCore::Internals::scrollSnapOffsets):
(WebCore::Internals::setShowAllPlugins):
(WebCore::Internals::cloneArrayBuffer): Deleted.
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* streams/readable-stream-byob-request-expected.txt:
* streams/readable-stream-byob-request.js:
(self.importScripts.test): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsstreamsreadablestreambyobrequestexpectedtxt">trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstreamsreadablestreambyobrequestjs">trunk/LayoutTests/streams/readable-stream-byob-request.js</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableByteStreamInternalsjs">trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp">trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsStructuredClonecpp">trunk/Source/WebCore/bindings/js/StructuredClone.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsStructuredCloneh">trunk/Source/WebCore/bindings/js/StructuredClone.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWebCoreBuiltinNamesh">trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsidl">trunk/Source/WebCore/testing/Internals.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/LayoutTests/ChangeLog        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -1,3 +1,11 @@
</span><ins>+2017-04-01  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        Rolling back http://trac.webkit.org/r214663 - memory corruption
+
+        * streams/readable-stream-byob-request-expected.txt:
+        * streams/readable-stream-byob-request.js:
+        (self.importScripts.test): Deleted.
+
</ins><span class="cx"> 2017-03-31  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;table&gt;: Including &lt;caption&gt;, &lt;thead&gt; or &lt;tbody&gt; causes clipping across page breaks
</span></span></pre></div>
<a id="trunkLayoutTestsstreamsreadablestreambyobrequestexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/LayoutTests/streams/readable-stream-byob-request-expected.txt        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -10,7 +10,6 @@
</span><span class="cx"> PASS Calling respond() with a bytesWritten value of 0 when stream is closed should succeed 
</span><span class="cx"> PASS Calling respond() with a bytesWritten value greater than autoAllocateChunkSize should fail 
</span><span class="cx"> PASS Calling respond() with a bytesWritten value lower than autoAllocateChunkSize should succeed 
</span><del>-PASS Test cloneArrayBuffer implementation 
</del><span class="cx"> PASS ReadableStreamBYOBRequest instances should have the correct list of properties 
</span><span class="cx"> PASS By default, byobRequest should be undefined 
</span><span class="cx"> PASS byobRequest.view length should be equal to autoAllocateChunkSize 
</span></span></pre></div>
<a id="trunkLayoutTestsstreamsreadablestreambyobrequestjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/streams/readable-stream-byob-request.js (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/streams/readable-stream-byob-request.js        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/LayoutTests/streams/readable-stream-byob-request.js        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -241,22 +241,4 @@
</span><span class="cx"> // FIXME: when ReadableStreamBYOBReader is implemented, add tests with elementSize different from 1
</span><span class="cx"> // so that more code can be covered.
</span><span class="cx"> 
</span><del>-if (!self.importScripts) {
-    // Test only if not Worker.
-    const CloneArrayBuffer = internals.cloneArrayBuffer.bind(internals);
-
-    test(function() {
-        const typedArray = new Uint8Array([3, 5, 7]);
-        const clonedBuffer = CloneArrayBuffer(typedArray.buffer, 1, 1);
-        const otherArray = new Uint8Array(clonedBuffer);
-        assert_equals(otherArray.byteLength, 1);
-        assert_equals(otherArray.byteOffset, 0);
-        assert_equals(otherArray.buffer.byteLength, 1);
-        assert_equals(otherArray[0], 5);
-        // Check that when typedArray is modified, otherArray is not modified.
-        typedArray[1] = 0;
-        assert_equals(otherArray[0], 5);
-    }, &quot;Test cloneArrayBuffer implementation&quot;);
-}
-
</del><span class="cx"> done();
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/ChangeLog        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -1,3 +1,44 @@
</span><ins>+2017-04-01  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        Rolling back http://trac.webkit.org/r214663 - memory corruption
+
+        * Modules/streams/ReadableByteStreamInternals.js:
+        (cloneArrayBuffer):
+        * bindings/js/JSDOMGlobalObject.cpp:
+        (WebCore::JSDOMGlobalObject::addBuiltinGlobals):
+        * bindings/js/StructuredClone.cpp:
+        (WebCore::structuredCloneArrayBuffer):
+        (WebCore::cloneArrayBufferImpl): Deleted.
+        (WebCore::cloneArrayBuffer): Deleted.
+        * bindings/js/StructuredClone.h:
+        * bindings/js/WebCoreBuiltinNames.h:
+        * testing/Internals.cpp:
+        (WebCore::markerTypeFrom):
+        (WebCore::Internals::resetToConsistentState):
+        (WebCore::Internals::isLoadingFromMemoryCache):
+        (WebCore::Internals::setImageFrameDecodingDuration):
+        (WebCore::deferredStyleRulesCountForList):
+        (WebCore::deferredGroupRulesCountForList):
+        (WebCore::deferredKeyframesRulesCountForList):
+        (WebCore::Internals::eventThrottlingBehaviorOverride):
+        (WebCore::Internals::enableMockSpeechSynthesizer):
+        (WebCore::Internals::rangeForDictionaryLookupAtLocation):
+        (WebCore::Internals::nodesFromRect):
+        (WebCore::Internals::layerIDForElement):
+        (WebCore::Internals::setElementUsesDisplayListDrawing):
+        (WebCore::Internals::setElementTracksDisplayListReplay):
+        (WebCore::Internals::styleRecalcCount):
+        (WebCore::Internals::compositingUpdateCount):
+        (WebCore::Internals::setCaptionDisplayMode):
+        (WebCore::Internals::endMediaSessionInterruption):
+        (WebCore::Internals::postRemoteControlCommand):
+        (WebCore::appendOffsets):
+        (WebCore::Internals::scrollSnapOffsets):
+        (WebCore::Internals::setShowAllPlugins):
+        (WebCore::Internals::cloneArrayBuffer): Deleted.
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
</ins><span class="cx"> 2017-03-31  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;table&gt;: Including &lt;caption&gt;, &lt;thead&gt; or &lt;tbody&gt; causes clipping across page breaks
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableByteStreamInternalsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/Modules/streams/ReadableByteStreamInternals.js        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -378,6 +378,17 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+function cloneArrayBuffer(srcBuffer, srcByteOffset, srcLength)
+{
+    &quot;use strict&quot;;
+
+    // FIXME: Below implementation returns the appropriate data but does not perform
+    // exactly what is described by ECMAScript CloneArrayBuffer operation. This should
+    // be fixed in a follow up patch implementing cloneArrayBuffer in JSC (similarly to
+    // structuredCloneArrayBuffer implementation).
+    return srcBuffer.slice(srcByteOffset, srcByteOffset + srcLength);
+}
+
</ins><span class="cx"> function readableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor)
</span><span class="cx"> {
</span><span class="cx">     &quot;use strict&quot;;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -142,8 +142,6 @@
</span><span class="cx">             JSFunction::create(vm, this, 2, String(), makeThisTypeErrorForBuiltins), DontDelete | ReadOnly),
</span><span class="cx">         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().makeGetterTypeErrorPrivateName(),
</span><span class="cx">             JSFunction::create(vm, this, 2, String(), makeGetterTypeErrorForBuiltins), DontDelete | ReadOnly),
</span><del>-        JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().cloneArrayBufferPrivateName(),
-            JSFunction::create(vm, this, 3, String(), cloneArrayBuffer), DontDelete | ReadOnly),
</del><span class="cx">         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().structuredCloneArrayBufferPrivateName(),
</span><span class="cx">             JSFunction::create(vm, this, 1, String(), structuredCloneArrayBuffer), DontDelete | ReadOnly),
</span><span class="cx">         JSDOMGlobalObject::GlobalPropertyInfo(clientData.builtinNames().structuredCloneArrayBufferViewPrivateName(),
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsStructuredClonecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/StructuredClone.cpp (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -35,9 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-EncodedJSValue JSC_HOST_CALL cloneArrayBufferImpl(ExecState*, bool);
-
-EncodedJSValue JSC_HOST_CALL cloneArrayBufferImpl(ExecState* state, bool isPartialClone)
</del><ins>+EncodedJSValue JSC_HOST_CALL structuredCloneArrayBuffer(ExecState* state)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(state);
</span><span class="cx">     ASSERT(state-&gt;argumentCount());
</span><span class="lines">@@ -50,25 +48,9 @@
</span><span class="cx">         throwDataCloneError(*state, scope);
</span><span class="cx">         return { };
</span><span class="cx">     }
</span><del>-    if (isPartialClone) {
-        ASSERT(state-&gt;argumentCount() == 3);
-        int srcByteOffset = static_cast&lt;int&gt;(state-&gt;uncheckedArgument(1).toNumber(state));
-        int srcLength = static_cast&lt;int&gt;(state-&gt;uncheckedArgument(2).toNumber(state));
-        buffer = buffer-&gt;slice(srcByteOffset, srcByteOffset + srcLength).get();
-    }
</del><span class="cx">     return JSValue::encode(JSArrayBuffer::create(state-&gt;vm(), state-&gt;lexicalGlobalObject()-&gt;arrayBufferStructure(ArrayBufferSharingMode::Default), ArrayBuffer::tryCreate(buffer-&gt;data(), buffer-&gt;byteLength())));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSC_HOST_CALL cloneArrayBuffer(ExecState* state)
-{
-    return cloneArrayBufferImpl(state, true);
-}
-
-EncodedJSValue JSC_HOST_CALL structuredCloneArrayBuffer(ExecState* state)
-{
-    return cloneArrayBufferImpl(state, false);
-}
-
</del><span class="cx"> EncodedJSValue JSC_HOST_CALL structuredCloneArrayBufferView(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsStructuredCloneh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/StructuredClone.h (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/StructuredClone.h        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/bindings/js/StructuredClone.h        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue JSC_HOST_CALL cloneArrayBuffer(JSC::ExecState*);
</del><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL structuredCloneArrayBuffer(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL structuredCloneArrayBufferView(JSC::ExecState*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWebCoreBuiltinNamesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx">     macro(body) \
</span><span class="cx">     macro(byobRequest) \
</span><span class="cx">     macro(cancel) \
</span><del>-    macro(cloneArrayBuffer) \
</del><span class="cx">     macro(cloneForJS) \
</span><span class="cx">     macro(closeRequested) \
</span><span class="cx">     macro(closedPromiseCapability) \
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/testing/Internals.cpp        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -351,7 +351,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     else
</span><span class="cx">         return false;
</span><del>-
</del><ins>+    
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -391,9 +391,9 @@
</span><span class="cx">     page.setPaginationLineGridEnabled(false);
</span><span class="cx"> 
</span><span class="cx">     page.setDefersLoading(false);
</span><del>-
</del><ins>+    
</ins><span class="cx">     page.mainFrame().setTextZoomFactor(1.0f);
</span><del>-
</del><ins>+    
</ins><span class="cx">     FrameView* mainFrameView = page.mainFrame().view();
</span><span class="cx">     if (mainFrameView) {
</span><span class="cx">         mainFrameView-&gt;setHeaderHeight(0);
</span><span class="lines">@@ -596,7 +596,7 @@
</span><span class="cx"> 
</span><span class="cx">     ResourceRequest request(contextDocument()-&gt;completeURL(url));
</span><span class="cx">     request.setDomainForCachePartition(contextDocument()-&gt;topOrigin().domainForCachePartition());
</span><del>-
</del><ins>+    
</ins><span class="cx">     CachedResource* resource = MemoryCache::singleton().resourceForRequest(request, contextDocument()-&gt;page()-&gt;sessionID());
</span><span class="cx">     return resource &amp;&amp; resource-&gt;status() == CachedResource::Cached;
</span><span class="cx"> }
</span><span class="lines">@@ -724,11 +724,11 @@
</span><span class="cx">     auto* cachedImage = element.cachedImage();
</span><span class="cx">     if (!cachedImage)
</span><span class="cx">         return;
</span><del>-
</del><ins>+    
</ins><span class="cx">     auto* image = cachedImage-&gt;image();
</span><span class="cx">     if (!is&lt;BitmapImage&gt;(image))
</span><span class="cx">         return;
</span><del>-
</del><ins>+    
</ins><span class="cx">     downcast&lt;BitmapImage&gt;(*image).setFrameDecodingDurationForTesting(duration);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -988,7 +988,7 @@
</span><span class="cx">                 count++;
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         StyleRuleGroup* groupRule = nullptr;
</span><span class="cx">         if (is&lt;StyleRuleMedia&gt;(rule.get()))
</span><span class="cx">             groupRule = downcast&lt;StyleRuleMedia&gt;(rule.get());
</span><span class="lines">@@ -996,11 +996,11 @@
</span><span class="cx">             groupRule = downcast&lt;StyleRuleSupports&gt;(rule.get());
</span><span class="cx">         if (!groupRule)
</span><span class="cx">             continue;
</span><del>-
</del><ins>+        
</ins><span class="cx">         auto* groupChildRules = groupRule-&gt;childRulesWithoutDeferredParsing();
</span><span class="cx">         if (!groupChildRules)
</span><span class="cx">             continue;
</span><del>-
</del><ins>+        
</ins><span class="cx">         count += deferredStyleRulesCountForList(*groupChildRules);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1023,7 +1023,7 @@
</span><span class="cx">             groupRule = downcast&lt;StyleRuleSupports&gt;(rule.get());
</span><span class="cx">         if (!groupRule)
</span><span class="cx">             continue;
</span><del>-
</del><ins>+        
</ins><span class="cx">         auto* groupChildRules = groupRule-&gt;childRulesWithoutDeferredParsing();
</span><span class="cx">         if (!groupChildRules)
</span><span class="cx">             count++;
</span><span class="lines">@@ -1048,7 +1048,7 @@
</span><span class="cx">                 count++;
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-
</del><ins>+        
</ins><span class="cx">         StyleRuleGroup* groupRule = nullptr;
</span><span class="cx">         if (is&lt;StyleRuleMedia&gt;(rule.get()))
</span><span class="cx">             groupRule = downcast&lt;StyleRuleMedia&gt;(rule.get());
</span><span class="lines">@@ -1056,14 +1056,14 @@
</span><span class="cx">             groupRule = downcast&lt;StyleRuleSupports&gt;(rule.get());
</span><span class="cx">         if (!groupRule)
</span><span class="cx">             continue;
</span><del>-
</del><ins>+        
</ins><span class="cx">         auto* groupChildRules = groupRule-&gt;childRulesWithoutDeferredParsing();
</span><span class="cx">         if (!groupChildRules)
</span><span class="cx">             continue;
</span><del>-
</del><ins>+        
</ins><span class="cx">         count += deferredKeyframesRulesCountForList(*groupChildRules);
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     return count;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1136,7 +1136,7 @@
</span><span class="cx">     auto behavior = document-&gt;page()-&gt;eventThrottlingBehaviorOverride();
</span><span class="cx">     if (!behavior)
</span><span class="cx">         return std::nullopt;
</span><del>-
</del><ins>+    
</ins><span class="cx">     switch (behavior.value()) {
</span><span class="cx">     case WebCore::EventThrottlingBehavior::Responsive:
</span><span class="cx">         return Internals::EventThrottlingBehavior::Responsive;
</span><span class="lines">@@ -1201,7 +1201,7 @@
</span><span class="cx">     SpeechSynthesis* synthesis = DOMWindowSpeechSynthesis::speechSynthesis(*document-&gt;domWindow());
</span><span class="cx">     if (!synthesis)
</span><span class="cx">         return;
</span><del>-
</del><ins>+    
</ins><span class="cx">     synthesis-&gt;setPlatformSynthesizer(std::make_unique&lt;PlatformSpeechSynthesizerMock&gt;(synthesis));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1633,7 +1633,7 @@
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><span class="cx"> 
</span><span class="cx">     document-&gt;updateLayoutIgnorePendingStylesheets();
</span><del>-
</del><ins>+    
</ins><span class="cx">     HitTestResult result = document-&gt;frame()-&gt;mainFrame().eventHandler().hitTestResultAtPoint(IntPoint(x, y));
</span><span class="cx">     NSDictionary *options = nullptr;
</span><span class="cx">     return DictionaryLookup::rangeAtHitTestResult(result, &amp;options);
</span><span class="lines">@@ -1789,7 +1789,7 @@
</span><span class="cx">     } else {
</span><span class="cx">         HitTestResult result(point, topPadding, rightPadding, bottomPadding, leftPadding);
</span><span class="cx">         renderView-&gt;hitTest(request, result);
</span><del>-
</del><ins>+        
</ins><span class="cx">         const HitTestResult::NodeSet&amp; nodeSet = result.rectBasedTestResult();
</span><span class="cx">         matches.reserveInitialCapacity(nodeSet.size());
</span><span class="cx">         for (auto&amp; node : nodeSet)
</span><span class="lines">@@ -1910,7 +1910,7 @@
</span><span class="cx"> 
</span><span class="cx">     return document-&gt;frame()-&gt;editor().selectionStartHasMarkerFor(DocumentMarker::Spelling, from, length);
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> bool Internals::hasAutocorrectedMarker(int from, int length)
</span><span class="cx"> {
</span><span class="cx">     Document* document = contextDocument();
</span><span class="lines">@@ -2163,7 +2163,7 @@
</span><span class="cx"> 
</span><span class="cx">     return count;
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> ExceptionOr&lt;bool&gt; Internals::isPageBoxVisible(int pageNumber)
</span><span class="cx"> {
</span><span class="cx">     Document* document = contextDocument();
</span><span class="lines">@@ -2216,7 +2216,7 @@
</span><span class="cx">     auto&amp; layerModelObject = downcast&lt;RenderLayerModelObject&gt;(*element.renderer());
</span><span class="cx">     if (!layerModelObject.layer()-&gt;isComposited())
</span><span class="cx">         return Exception { NOT_FOUND_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     auto* backing = layerModelObject.layer()-&gt;backing();
</span><span class="cx">     return backing-&gt;graphicsLayer()-&gt;primaryLayerID();
</span><span class="cx"> }
</span><span class="lines">@@ -2285,11 +2285,11 @@
</span><span class="cx"> 
</span><span class="cx">     if (!element.renderer()-&gt;hasLayer())
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     RenderLayer* layer = downcast&lt;RenderLayerModelObject&gt;(element.renderer())-&gt;layer();
</span><span class="cx">     if (!layer-&gt;isComposited())
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     layer-&gt;backing()-&gt;setUsesDisplayListDrawing(usesDisplayListDrawing);
</span><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="lines">@@ -2314,7 +2314,7 @@
</span><span class="cx">     RenderLayer* layer = downcast&lt;RenderLayerModelObject&gt;(element.renderer())-&gt;layer();
</span><span class="cx">     if (!layer-&gt;isComposited())
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     layer-&gt;backing()-&gt;setIsTrackingDisplayListReplay(isTrackingReplay);
</span><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="lines">@@ -2554,7 +2554,7 @@
</span><span class="cx"> 
</span><span class="cx">     document-&gt;view()-&gt;setFooterHeight(height);
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> void Internals::setTopContentInset(float contentInset)
</span><span class="cx"> {
</span><span class="cx">     Document* document = contextDocument();
</span><span class="lines">@@ -2698,7 +2698,7 @@
</span><span class="cx">     Document* document = contextDocument();
</span><span class="cx">     if (!document)
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     return document-&gt;styleRecalcCount();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2725,7 +2725,7 @@
</span><span class="cx">     Document* document = contextDocument();
</span><span class="cx">     if (!document || !document-&gt;renderView())
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     return document-&gt;renderView()-&gt;compositor().compositingUpdateCount();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3017,10 +3017,10 @@
</span><span class="cx">     Document* document = contextDocument();
</span><span class="cx">     if (!document || !document-&gt;page())
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx">     auto&amp; captionPreferences = document-&gt;page()-&gt;group().captionPreferences();
</span><del>-
</del><ins>+    
</ins><span class="cx">     if (equalLettersIgnoringASCIICase(mode, &quot;automatic&quot;))
</span><span class="cx">         captionPreferences.setCaptionDisplayMode(CaptionUserPreferences::Automatic);
</span><span class="cx">     else if (equalLettersIgnoringASCIICase(mode, &quot;forcedonly&quot;))
</span><span class="lines">@@ -3085,12 +3085,12 @@
</span><span class="cx"> 
</span><span class="cx">     return downcast&lt;RenderEmbeddedObject&gt;(*renderer).isReplacementObscured();
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> bool Internals::isPluginSnapshotted(Element&amp; element)
</span><span class="cx"> {
</span><span class="cx">     return is&lt;HTMLPlugInElement&gt;(element) &amp;&amp; downcast&lt;HTMLPlugInElement&gt;(element).displayState() &lt;= HTMLPlugInElement::DisplayingSnapshot;
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> 
</span><span class="cx"> void Internals::initializeMockMediaSource()
</span><span class="lines">@@ -3108,7 +3108,7 @@
</span><span class="cx"> {
</span><span class="cx">     return buffer.bufferedSamplesForTrackID(trackID);
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> Vector&lt;String&gt; Internals::enqueuedSamplesForTrackID(SourceBuffer&amp; buffer, const AtomicString&amp; trackID)
</span><span class="cx"> {
</span><span class="cx">     return buffer.enqueuedSamplesForTrackID(trackID);
</span><span class="lines">@@ -3148,7 +3148,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (equalLettersIgnoringASCIICase(flagsString, &quot;mayresumeplaying&quot;))
</span><span class="cx">         flags = PlatformMediaSession::MayResumePlaying;
</span><del>-
</del><ins>+    
</ins><span class="cx">     PlatformMediaSessionManager::sharedManager().endInterruption(flags);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3301,7 +3301,7 @@
</span><span class="cx">         command = PlatformMediaSession::SeekToPlaybackPositionCommand;
</span><span class="cx">     else
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-
</del><ins>+    
</ins><span class="cx">     PlatformMediaSessionManager::sharedManager().didReceiveRemoteControlCommand(command, &amp;parameter);
</span><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="lines">@@ -3572,12 +3572,12 @@
</span><span class="cx">             builder.appendLiteral(&quot;, &quot;);
</span><span class="cx">         else
</span><span class="cx">             justStarting = false;
</span><del>-
</del><ins>+        
</ins><span class="cx">         builder.append(String::number(coordinate.toUnsigned()));
</span><span class="cx">     }
</span><span class="cx">     builder.appendLiteral(&quot; }&quot;);
</span><span class="cx"> }
</span><del>-
</del><ins>+    
</ins><span class="cx"> void Internals::setPlatformMomentumScrollingPredictionEnabled(bool enabled)
</span><span class="cx"> {
</span><span class="cx">     ScrollingMomentumCalculator::setPlatformMomentumScrollingPredictionEnabled(enabled);
</span><span class="lines">@@ -3592,13 +3592,13 @@
</span><span class="cx"> 
</span><span class="cx">     RenderBox&amp; box = *element.renderBox();
</span><span class="cx">     ScrollableArea* scrollableArea;
</span><del>-
</del><ins>+    
</ins><span class="cx">     if (box.isBody()) {
</span><span class="cx">         FrameView* frameView = box.frame().mainFrame().view();
</span><span class="cx">         if (!frameView || !frameView-&gt;isScrollable())
</span><span class="cx">             return Exception { INVALID_ACCESS_ERR };
</span><span class="cx">         scrollableArea = frameView;
</span><del>-
</del><ins>+        
</ins><span class="cx">     } else {
</span><span class="cx">         if (!box.canBeScrolledAndHasScrollableArea())
</span><span class="cx">             return Exception { INVALID_ACCESS_ERR };
</span><span class="lines">@@ -3607,7 +3607,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!scrollableArea)
</span><span class="cx">         return String();
</span><del>-
</del><ins>+    
</ins><span class="cx">     StringBuilder result;
</span><span class="cx"> 
</span><span class="cx">     if (auto* offsets = scrollableArea-&gt;horizontalSnapOffsets()) {
</span><span class="lines">@@ -3696,7 +3696,7 @@
</span><span class="cx">     Document* document = contextDocument();
</span><span class="cx">     if (!document)
</span><span class="cx">         return;
</span><del>-
</del><ins>+    
</ins><span class="cx">     Page* page = document-&gt;page();
</span><span class="cx">     if (!page)
</span><span class="cx">         return;
</span><span class="lines">@@ -3729,33 +3729,7 @@
</span><span class="cx">     return returnedValue.asBoolean();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if ENABLE(READABLE_BYTE_STREAM_API)
-
-JSValue Internals::cloneArrayBuffer(JSC::ExecState&amp; state, JSValue buffer, JSValue srcByteOffset, JSValue srcLength)
-{
-    JSGlobalObject* globalObject = state.vmEntryGlobalObject();
-    JSVMClientData* clientData = static_cast&lt;JSVMClientData*&gt;(state.vm().clientData);
-    const Identifier&amp; privateName = clientData-&gt;builtinNames().cloneArrayBufferPrivateName();
-    JSValue value;
-    PropertySlot propertySlot(value, PropertySlot::InternalMethodType::Get);
-    globalObject-&gt;methodTable()-&gt;getOwnPropertySlot(globalObject, &amp;state, privateName, propertySlot);
-    value = propertySlot.getValue(&amp;state, privateName);
-    ASSERT(value.isFunction());
-
-    JSObject* function = value.getObject();
-    CallData callData;
-    CallType callType = JSC::getCallData(function, callData);
-    ASSERT(callType != JSC::CallType::None);
-    MarkedArgumentBuffer arguments;
-    arguments.append(buffer);
-    arguments.append(srcByteOffset);
-    arguments.append(srcLength);
-
-    return JSC::call(&amp;state, function, callType, callData, JSC::jsUndefined(), arguments);
-}
-
</del><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> String Internals::resourceLoadStatisticsForOrigin(const String&amp; origin)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/testing/Internals.h        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -188,14 +188,14 @@
</span><span class="cx"> 
</span><span class="cx">     void invalidateFontCache();
</span><span class="cx">     void setFontSmoothingEnabled(bool);
</span><del>-
</del><ins>+    
</ins><span class="cx">     ExceptionOr&lt;void&gt; setLowPowerModeEnabled(bool);
</span><span class="cx"> 
</span><span class="cx">     ExceptionOr&lt;void&gt; setScrollViewPosition(int x, int y);
</span><del>-
</del><ins>+    
</ins><span class="cx">     ExceptionOr&lt;Ref&lt;ClientRect&gt;&gt; layoutViewportRect();
</span><span class="cx">     ExceptionOr&lt;Ref&lt;ClientRect&gt;&gt; visualViewportRect();
</span><del>-
</del><ins>+    
</ins><span class="cx">     ExceptionOr&lt;void&gt; setViewBaseBackgroundColor(const String&amp; colorValue);
</span><span class="cx"> 
</span><span class="cx">     ExceptionOr&lt;void&gt; setPagination(const String&amp; mode, int gap, int pageLength);
</span><span class="lines">@@ -368,7 +368,7 @@
</span><span class="cx"> 
</span><span class="cx">     ExceptionOr&lt;void&gt; startTrackingLayerFlushes();
</span><span class="cx">     ExceptionOr&lt;unsigned&gt; layerFlushCount();
</span><del>-
</del><ins>+    
</ins><span class="cx">     ExceptionOr&lt;void&gt; startTrackingStyleRecalcs();
</span><span class="cx">     ExceptionOr&lt;unsigned&gt; styleRecalcCount();
</span><span class="cx">     unsigned lastStyleUpdateSize() const;
</span><span class="lines">@@ -523,13 +523,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(READABLE_STREAM_API)
</span><span class="cx">     bool isReadableStreamDisturbed(JSC::ExecState&amp;, JSC::JSValue);
</span><del>-#if ENABLE(READABLE_BYTE_STREAM_API)
-    JSC::JSValue cloneArrayBuffer(JSC::ExecState&amp;, JSC::JSValue, JSC::JSValue, JSC::JSValue);
</del><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     String composedTreeAsText(Node&amp;);
</span><del>-
</del><ins>+    
</ins><span class="cx">     bool isProcessingUserGesture();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;GCObservation&gt; observeGC(JSC::JSValue);
</span><span class="lines">@@ -538,7 +535,7 @@
</span><span class="cx">     void setUserInterfaceLayoutDirection(UserInterfaceLayoutDirection);
</span><span class="cx"> 
</span><span class="cx">     bool userPrefersReducedMotion() const;
</span><del>-
</del><ins>+    
</ins><span class="cx">     void reportBacktrace();
</span><span class="cx"> 
</span><span class="cx">     enum class BaseWritingDirection { Natural, Ltr, Rtl };
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.idl (214712 => 214713)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.idl        2017-04-01 06:30:00 UTC (rev 214712)
+++ trunk/Source/WebCore/testing/Internals.idl        2017-04-01 07:47:17 UTC (rev 214713)
</span><span class="lines">@@ -490,7 +490,6 @@
</span><span class="cx"> 
</span><span class="cx">     void setShowAllPlugins(boolean showAll);
</span><span class="cx"> 
</span><del>-    [Conditional=READABLE_STREAM_API&amp;READABLE_BYTE_STREAM_API, CallWith=ScriptState] any cloneArrayBuffer(any buffer, any srcByteOffset, any byteLength);
</del><span class="cx">     [Conditional=READABLE_STREAM_API, CallWith=ScriptState] boolean isReadableStreamDisturbed(any stream);
</span><span class="cx"> 
</span><span class="cx">     DOMString resourceLoadStatisticsForOrigin(DOMString domain);
</span></span></pre>
</div>
</div>

</body>
</html>