From 15c60a568d98778e43053af4acada1a43576b0a4 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Tue, 20 Jul 2021 13:41:20 +0200 Subject: [PATCH] fix(websockets): filter for text and binary frames --- .../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 4fee7ea4f..e27aa87d8 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 @@ public String text() { 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 f3875f250..f22995c2f 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 @@ void shouldEmitFrameEvents() { " 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);