Skip to content

Commit c22de96

Browse files
committed
[java] Avoid throwing errors once NetworkInterceptor is closed
Fixes #11032
1 parent e1a2b53 commit c22de96

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

java/src/org/openqa/selenium/devtools/NetworkInterceptor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public NetworkInterceptor(WebDriver driver, Filter filter) {
9999
@Override
100100
public void close() {
101101
tools.getDomains().network().resetNetworkFilter();
102+
tools.getDomains().network().markNetworkInterceptorClosed();
102103
}
103104

104105
protected HttpMethod convertFromCdpHttpMethod(String method) {

java/src/org/openqa/selenium/devtools/idealized/Network.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.openqa.selenium.devtools.idealized;
1919

2020
import org.openqa.selenium.Credentials;
21+
import org.openqa.selenium.TimeoutException;
2122
import org.openqa.selenium.UsernameAndPassword;
2223
import org.openqa.selenium.WebDriverException;
2324
import org.openqa.selenium.devtools.Command;
@@ -44,6 +45,7 @@
4445
import java.util.concurrent.CompletableFuture;
4546
import java.util.concurrent.ConcurrentHashMap;
4647
import java.util.concurrent.ExecutionException;
48+
import java.util.concurrent.atomic.AtomicBoolean;
4749
import java.util.function.Predicate;
4850
import java.util.function.Supplier;
4951
import java.util.logging.Logger;
@@ -61,6 +63,8 @@ public abstract class Network<AUTHREQUIRED, REQUESTPAUSED> {
6163
private Filter filter = defaultFilter;
6264
protected final DevTools devTools;
6365

66+
private final AtomicBoolean networkInterceptorClosed = new AtomicBoolean();
67+
6468
public Network(DevTools devtools) {
6569
this.devTools = Require.nonNull("DevTools", devtools);
6670
}
@@ -132,6 +136,10 @@ public void resetNetworkFilter() {
132136
filter = defaultFilter;
133137
}
134138

139+
public void markNetworkInterceptorClosed() {
140+
networkInterceptorClosed.set(true);
141+
}
142+
135143
public void interceptTrafficWith(Filter filter) {
136144
Require.nonNull("HTTP filter", filter);
137145

@@ -172,6 +180,7 @@ public void prepareToInterceptTraffic() {
172180
devTools.addListener(
173181
requestPausedEvent(),
174182
pausedRequest -> {
183+
try {
175184
String id = getRequestId(pausedRequest);
176185
Either<HttpRequest, HttpResponse> message = createSeMessages(pausedRequest);
177186

@@ -203,7 +212,9 @@ public void prepareToInterceptTraffic() {
203212
Thread.currentThread().interrupt();
204213
throw new WebDriverException(e);
205214
} catch (ExecutionException e) {
206-
LOG.log(WARNING, e, () -> "Unable to process request");
215+
if (!networkInterceptorClosed.get()) {
216+
LOG.log(WARNING, e, () -> "Unable to process request");
217+
}
207218
return new HttpResponse();
208219
}
209220
}).execute(message.left());
@@ -214,7 +225,11 @@ public void prepareToInterceptTraffic() {
214225
}
215226

216227
devTools.send(fulfillRequest(pausedRequest, forBrowser));
217-
});
228+
} catch (TimeoutException e) {
229+
if (!networkInterceptorClosed.get()) {
230+
throw new WebDriverException(e);
231+
}
232+
}});
218233

219234
devTools.send(enableFetchForAllPatterns());
220235
}

0 commit comments

Comments
 (0)