Issue #1442 - Part 15 - Setting the correct global when ReadableStream.getReader() is called. https://bugzilla.mozilla.org/show_bug.cgi?id=1128959

This commit is contained in:
Brian Smith 2023-09-28 19:51:09 -05:00 • committed by roytam1
commit b124e54fc7
2 changed files with 10 additions and 10 deletions

View file

@ -1139,6 +1139,10 @@ FetchBody<Derived>::LockStream(JSContext* aCx,
JS::HandleObject aStream, JS::HandleObject aStream,
ErrorResult& aRv) ErrorResult& aRv)
{ {
MOZ_ASSERT(JS::ReadableStreamGetMode(aStream) ==
JS::ReadableStreamMode::ExternalSource);
// This is native stream, creating a reader will not execute any JS code.
JS::Rooted<JSObject*> reader(aCx, JS::Rooted<JSObject*> reader(aCx,
JS::ReadableStreamGetReader(aCx, aStream, JS::ReadableStreamGetReader(aCx, aStream,
JS::ReadableStreamReaderMode::Default)); JS::ReadableStreamReaderMode::Default));

View file

@ -169,17 +169,13 @@ FetchStreamReader::OnOutputStreamReady(nsIAsyncOutputStream* aStream)
return WriteBuffer(); return WriteBuffer();
} }
AutoJSAPI jsapi; // TODO: We need to verify this is the correct global per the spec.
if (NS_WARN_IF(!jsapi.Init(mGlobal))) { // See bug 1385890.
CloseAndRelease(NS_ERROR_DOM_INVALID_STATE_ERR); AutoEntryScript aes(mGlobal, "ReadableStreamReader.read", !mWorkerHolder);
return NS_ERROR_FAILURE;
}
JSContext* cx = jsapi.cx(); JS::Rooted<JSObject*> reader(aes.cx(), mReader);
JS::Rooted<JSObject*> promise(aes.cx(),
JS::Rooted<JSObject*> reader(cx, mReader); JS::ReadableStreamDefaultReaderRead(aes.cx(),
JS::Rooted<JSObject*> promise(cx,
JS::ReadableStreamDefaultReaderRead(cx,
reader)); reader));
if (NS_WARN_IF(!promise)) { if (NS_WARN_IF(!promise)) {
// Let's close the stream. // Let's close the stream.