Diff
Modified: branches/safari-603-branch/LayoutTests/ChangeLog (210906 => 210907)
--- branches/safari-603-branch/LayoutTests/ChangeLog 2017-01-19 03:07:04 UTC (rev 210906)
+++ branches/safari-603-branch/LayoutTests/ChangeLog 2017-01-19 03:07:07 UTC (rev 210907)
@@ -1,5 +1,19 @@
2017-01-18 Matthew Hanson <matthew_han...@apple.com>
+ Merge r210862. rdar://problem/30055009
+
+ 2017-01-18 Youenn Fablet <you...@apple.com>
+
+ [Streams API] ReadableStream generic reader constructor does not need to call ReadableStream getReader
+ https://bugs.webkit.org/show_bug.cgi?id=167137
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ * streams/shadowing-getReader-expected.txt: Added.
+ * streams/shadowing-getReader.html: Added.
+
+2017-01-18 Matthew Hanson <matthew_han...@apple.com>
+
Merge r210860. rdar://problem/30080035
2017-01-18 Youenn Fablet <you...@apple.com>
Added: branches/safari-603-branch/LayoutTests/streams/shadowing-getReader-expected.txt (0 => 210907)
--- branches/safari-603-branch/LayoutTests/streams/shadowing-getReader-expected.txt (rev 0)
+++ branches/safari-603-branch/LayoutTests/streams/shadowing-getReader-expected.txt 2017-01-19 03:07:07 UTC (rev 210907)
@@ -0,0 +1,10 @@
+This test should run without throwing an exception.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS new readerConstructor(stream) instanceof readerConstructor is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: branches/safari-603-branch/LayoutTests/streams/shadowing-getReader.html (0 => 210907)
--- branches/safari-603-branch/LayoutTests/streams/shadowing-getReader.html (rev 0)
+++ branches/safari-603-branch/LayoutTests/streams/shadowing-getReader.html 2017-01-19 03:07:07 UTC (rev 210907)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script>
+description("This test should run without throwing an exception.");
+
+var readerConstructor = new ReadableStream().getReader().constructor;
+
+var stream = new ReadableStream();
+stream.getReader = "foo";
+
+shouldBeTrue("new readerConstructor(stream) instanceof readerConstructor");
+
+</script>
+<script src=""
+</body>
+</html>
Modified: branches/safari-603-branch/Source/WebCore/ChangeLog (210906 => 210907)
--- branches/safari-603-branch/Source/WebCore/ChangeLog 2017-01-19 03:07:04 UTC (rev 210906)
+++ branches/safari-603-branch/Source/WebCore/ChangeLog 2017-01-19 03:07:07 UTC (rev 210907)
@@ -1,5 +1,21 @@
2017-01-18 Matthew Hanson <matthew_han...@apple.com>
+ Merge r210862. rdar://problem/30055009
+
+ 2017-01-18 Youenn Fablet <you...@apple.com>
+
+ [Streams API] ReadableStream generic reader constructor does not need to call ReadableStream getReader
+ https://bugs.webkit.org/show_bug.cgi?id=167137
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ Test: streams/shadowing-getReader.html
+
+ * bindings/js/JSReadableStreamPrivateConstructors.cpp:
+ (WebCore::constructJSReadableStreamDefaultReader): Using private constructor instead of getReader.
+
+2017-01-18 Matthew Hanson <matthew_han...@apple.com>
+
Merge r210860. rdar://problem/30080035
2017-01-18 Youenn Fablet <you...@apple.com>
Modified: branches/safari-603-branch/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp (210906 => 210907)
--- branches/safari-603-branch/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp 2017-01-19 03:07:04 UTC (rev 210906)
+++ branches/safari-603-branch/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp 2017-01-19 03:07:07 UTC (rev 210907)
@@ -30,7 +30,7 @@
#include "JSReadableStreamDefaultReader.h"
#include "ReadableByteStreamInternalsBuiltins.h"
#include "ReadableStreamInternalsBuiltins.h"
-#include <runtime/CallData.h>
+#include "WebCoreJSClientData.h"
using namespace JSC;
@@ -56,19 +56,17 @@
EncodedJSValue JSC_HOST_CALL constructJSReadableStreamDefaultReader(ExecState& exec)
{
- VM& vm = exec.vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
+ JSVMClientData& clientData = *static_cast<JSVMClientData*>(exec.vm().clientData);
+ JSDOMGlobalObject& globalObject = *static_cast<JSDOMGlobalObject*>(exec.lexicalGlobalObject());
- JSReadableStream* stream = jsDynamicDowncast<JSReadableStream*>(exec.argument(0));
- if (!stream)
- return throwArgumentTypeError(exec, scope, 0, "stream", "ReadableStreamReader", nullptr, "ReadableStream");
+ JSC::JSObject* constructor = JSC::asObject(globalObject.get(&exec, clientData.builtinNames().ReadableStreamDefaultReaderPrivateName()));
+ ConstructData constructData;
+ ConstructType constructType = constructor->methodTable()->getConstructData(constructor, constructData);
+ ASSERT(constructType != ConstructType::None);
- JSValue jsFunction = stream->get(&exec, Identifier::fromString(&exec, "getReader"));
-
- CallData callData;
- CallType callType = getCallData(jsFunction, callData);
- MarkedArgumentBuffer noArguments;
- return JSValue::encode(call(&exec, jsFunction, callType, callData, stream, noArguments));
+ MarkedArgumentBuffer args;
+ args.append(exec.argument(0));
+ return JSValue::encode(JSC::construct(&exec, constructor, constructType, constructData, args));
}
// Private JS ReadableStreamDefaultReader and ReadableStreamDefaultController constructors.