From 476e222c93433c387092b6aecef8a9a4c7d06ff0 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 6 Aug 2021 12:35:20 -0700 Subject: [PATCH] fix: support 0 size read from stream (#539) --- .../java/com/microsoft/playwright/impl/Stream.java | 3 +++ .../java/com/microsoft/playwright/TestDownload.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/Stream.java b/playwright/src/main/java/com/microsoft/playwright/impl/Stream.java index eac797c2..8ee469dd 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/Stream.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/Stream.java @@ -45,6 +45,9 @@ public class Stream extends ChannelOwner { @Override public int read(byte[] b, int off, int len) { + if (len == 0) { + return 0; + } JsonObject params = new JsonObject(); params.addProperty("size", len); JsonObject json = sendMessage("read", params).getAsJsonObject(); diff --git a/playwright/src/test/java/com/microsoft/playwright/TestDownload.java b/playwright/src/test/java/com/microsoft/playwright/TestDownload.java index bb0e123c..6588c291 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestDownload.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestDownload.java @@ -367,6 +367,19 @@ public class TestDownload extends TestBase { page.close(); } + @Test + void streamShouldSupportZeroSizeRead() throws IOException { + Page page = browser.newPage(new Browser.NewPageOptions().setAcceptDownloads(true)); + page.setContent("download"); + Download download = page.waitForDownload(() -> page.click("a")); + + InputStream stream = download.createReadStream(); + byte[] b = new byte[1]; + int read = stream.read(b, 0, 0); + assertEquals(0, read); + page.close(); + } + @Test void shouldDeleteDownloadsOnContextDestruction() { Page page = browser.newPage(new Browser.NewPageOptions().setAcceptDownloads(true));