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