Skip to content

Commit 7387843

Browse files
committed
fix: handle null close code and reason in WebSocketRoute
When a WebSocket connection closes due to page navigation, the driver may send close events without code, reason, or wasClean fields. This caused a NullPointerException when accessing these fields directly. Fixes #1882
1 parent 63bb008 commit 7387843

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

playwright/src/main/java/com/microsoft/playwright/impl/WebSocketRouteImpl.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,22 +160,22 @@ protected void handleEvent(String event, JsonObject params) {
160160
sendMessageAsync("sendToPage", messageParams);
161161
}
162162
} else if ("closePage".equals(event)) {
163-
int code = params.get("code").getAsInt();
164-
String reason = params.get("reason").getAsString();
165-
boolean wasClean = params.get("wasClean").getAsBoolean();
163+
Integer code = params.has("code") ? params.get("code").getAsInt() : null;
164+
String reason = params.has("reason") ? params.get("reason").getAsString() : null;
165+
boolean wasClean = params.has("wasClean") && params.get("wasClean").getAsBoolean();
166166
if (onPageClose != null) {
167167
onPageClose.accept(code, reason);
168-
} else {
168+
} else if (connected) {
169169
JsonObject closeParams = new JsonObject();
170170
closeParams.addProperty("code", code);
171171
closeParams.addProperty("reason", reason);
172172
closeParams.addProperty("wasClean", wasClean);
173173
sendMessageAsync("closeServer", closeParams);
174174
}
175175
} else if ("closeServer".equals(event)) {
176-
int code = params.get("code").getAsInt();
177-
String reason = params.get("reason").getAsString();
178-
boolean wasClean = params.get("wasClean").getAsBoolean();
176+
Integer code = params.has("code") ? params.get("code").getAsInt() : null;
177+
String reason = params.has("reason") ? params.get("reason").getAsString() : null;
178+
boolean wasClean = params.has("wasClean") && params.get("wasClean").getAsBoolean();
179179
if (onServerClose != null) {
180180
onServerClose.accept(code, reason);
181181
} else {

0 commit comments

Comments
 (0)