From 5eecbb5252a9ef85e59b154c71ce45aea07e5da1 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Tue, 20 Jul 2021 14:07:31 +0200 Subject: [PATCH] fix(websockets): filter for text and binary frames (#522) --- .../com/microsoft/playwright/impl/WebSocketImpl.java | 12 ++++++++++-- .../java/com/microsoft/playwright/TestWebSocket.java | 4 ---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/WebSocketImpl.java b/playwright/src/main/java/com/microsoft/playwright/impl/WebSocketImpl.java index 4fee7ea4..e27aa87d 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/WebSocketImpl.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/WebSocketImpl.java @@ -178,14 +178,22 @@ class WebSocketImpl extends ChannelOwner implements WebSocket { void handleEvent(String event, JsonObject parameters) { switch (event) { case "frameSent": { + int opCode = parameters.get("opcode").getAsInt(); + if (opCode != 1 && opCode != 2) { + break; + } WebSocketFrameImpl WebSocketFrame = new WebSocketFrameImpl( - parameters.get("data").getAsString(), parameters.get("opcode").getAsInt() == 2); + parameters.get("data").getAsString(), opCode == 2); listeners.notify(EventType.FRAMESENT, WebSocketFrame); break; } case "frameReceived": { + int opCode = parameters.get("opcode").getAsInt(); + if (opCode != 1 && opCode != 2) { + break; + } WebSocketFrameImpl WebSocketFrame = new WebSocketFrameImpl( - parameters.get("data").getAsString(), parameters.get("opcode").getAsInt() == 2); + parameters.get("data").getAsString(), opCode == 2); listeners.notify(EventType.FRAMERECEIVED, WebSocketFrame); break; } diff --git a/playwright/src/test/java/com/microsoft/playwright/TestWebSocket.java b/playwright/src/test/java/com/microsoft/playwright/TestWebSocket.java index f3875f25..f22995c2 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestWebSocket.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestWebSocket.java @@ -102,10 +102,6 @@ public class TestWebSocket extends TestBase { " ws.addEventListener('message', () => { ws.close(); });\n" + " }", webSocketServer.getPort()); waitForCondition(socketClosed); - if (isWebKit()) { - // TODO: there is intermittent message in WebKit. - log.remove("received"); - } assertEquals("open", log.get(0), "Events: " + log); assertEquals("close", log.get(3), "Events: " + log); log.sort(String::compareTo);