Index: third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/close.js |
diff --git a/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/close.js b/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/close.js |
index fb155237937f11031dac184055dfee1ad52d55bd..5c83a5e12839d13460241731c39e467de2a7a399 100644 |
--- a/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/close.js |
+++ b/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/close.js |
@@ -170,4 +170,47 @@ promise_test(t => { |
}); |
}, 'releaseLock() should not change the result of async close()'); |
+promise_test(() => { |
+ let resolveClose; |
+ const ws = new WritableStream({ |
+ close() { |
+ const promise = new Promise(resolve => { |
+ resolveClose = resolve; |
+ }); |
+ return promise; |
+ } |
+ }); |
+ const writer = ws.getWriter(); |
+ const closePromise = writer.close(); |
+ writer.releaseLock(); |
+ return delay(0).then(() => { |
+ resolveClose(); |
+ return closePromise.then(() => { |
+ assert_equals(ws.getWriter().desiredSize, 0, 'desiredSize should be 0'); |
+ }); |
+ }); |
+}, 'close() should set state to CLOSED even if writer has detached'); |
+ |
+promise_test(() => { |
+ let resolveClose; |
+ const ws = new WritableStream({ |
+ close() { |
+ const promise = new Promise(resolve => { |
+ resolveClose = resolve; |
+ }); |
+ return promise; |
+ } |
+ }); |
+ const writer = ws.getWriter(); |
+ writer.close(); |
+ writer.releaseLock(); |
+ return delay(0).then(() => { |
+ const abortingWriter = ws.getWriter(); |
+ const abortPromise = abortingWriter.abort(); |
+ abortingWriter.releaseLock(); |
+ resolveClose(); |
+ return abortPromise; |
+ }); |
+}, 'the promise returned by async abort during close should resolve'); |
+ |
done(); |