From e6e28981909f220ff0b98a13c692c0203eaf6035 Mon Sep 17 00:00:00 2001 From: Marcos Casagrande Date: Fri, 14 Oct 2022 11:51:39 +0200 Subject: [PATCH] fix(ext/web/streams): enqueue to second branch before closing (#16269) Co-authored-by: Luca Casonato --- ext/web/06_streams.js | 9 ++++++++- tools/wpt/expectation.json | 8 ++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index 361e5e05564799..c783b95183b654 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -2616,6 +2616,7 @@ assert(typeof cloneForBranch2 === "boolean"); const reader = acquireReadableStreamDefaultReader(stream); let reading = false; + let readAgain = false; let canceled1 = false; let canceled2 = false; /** @type {any} */ @@ -2634,6 +2635,7 @@ function pullAlgorithm() { if (reading === true) { + readAgain = true; return resolvePromiseWith(undefined); } reading = true; @@ -2641,7 +2643,7 @@ const readRequest = { chunkSteps(value) { queueMicrotask(() => { - reading = false; + readAgain = false; const value1 = value; const value2 = value; @@ -2663,6 +2665,11 @@ value2, ); } + + reading = false; + if (readAgain === true) { + pullAlgorithm(); + } }); }, closeSteps() { diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json index 558ada79aade5c..ed43da7e5081dc 100644 --- a/tools/wpt/expectation.json +++ b/tools/wpt/expectation.json @@ -1336,12 +1336,8 @@ "patched-global.any.worker.html": true, "reentrant-strategies.any.html": true, "reentrant-strategies.any.worker.html": true, - "tee.any.html": [ - "ReadableStream teeing: enqueue() and close() while both branches are pulling" - ], - "tee.any.worker.html": [ - "ReadableStream teeing: enqueue() and close() while both branches are pulling" - ], + "tee.any.html": true, + "tee.any.worker.html": true, "templated.any.html": true, "templated.any.worker.html": true },