Skip to content

Commit

Permalink
[java] Avoid throwing errors once NetworkInterceptor is closed
Browse files Browse the repository at this point in the history
Fixes #11032
  • Loading branch information
pujagani committed Oct 3, 2022
1 parent e1a2b53 commit c22de96
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
Expand Up @@ -99,6 +99,7 @@ public NetworkInterceptor(WebDriver driver, Filter filter) {
@Override
public void close() {
tools.getDomains().network().resetNetworkFilter();
tools.getDomains().network().markNetworkInterceptorClosed();
}

protected HttpMethod convertFromCdpHttpMethod(String method) {
Expand Down
19 changes: 17 additions & 2 deletions java/src/org/openqa/selenium/devtools/idealized/Network.java
Expand Up @@ -18,6 +18,7 @@
package org.openqa.selenium.devtools.idealized;

import org.openqa.selenium.Credentials;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.UsernameAndPassword;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.devtools.Command;
Expand All @@ -44,6 +45,7 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.logging.Logger;
Expand All @@ -61,6 +63,8 @@ public abstract class Network<AUTHREQUIRED, REQUESTPAUSED> {
private Filter filter = defaultFilter;
protected final DevTools devTools;

private final AtomicBoolean networkInterceptorClosed = new AtomicBoolean();

public Network(DevTools devtools) {
this.devTools = Require.nonNull("DevTools", devtools);
}
Expand Down Expand Up @@ -132,6 +136,10 @@ public void resetNetworkFilter() {
filter = defaultFilter;
}

public void markNetworkInterceptorClosed() {
networkInterceptorClosed.set(true);
}

public void interceptTrafficWith(Filter filter) {
Require.nonNull("HTTP filter", filter);

Expand Down Expand Up @@ -172,6 +180,7 @@ public void prepareToInterceptTraffic() {
devTools.addListener(
requestPausedEvent(),
pausedRequest -> {
try {
String id = getRequestId(pausedRequest);
Either<HttpRequest, HttpResponse> message = createSeMessages(pausedRequest);

Expand Down Expand Up @@ -203,7 +212,9 @@ public void prepareToInterceptTraffic() {
Thread.currentThread().interrupt();
throw new WebDriverException(e);
} catch (ExecutionException e) {
LOG.log(WARNING, e, () -> "Unable to process request");
if (!networkInterceptorClosed.get()) {
LOG.log(WARNING, e, () -> "Unable to process request");
}
return new HttpResponse();
}
}).execute(message.left());
Expand All @@ -214,7 +225,11 @@ public void prepareToInterceptTraffic() {
}

devTools.send(fulfillRequest(pausedRequest, forBrowser));
});
} catch (TimeoutException e) {
if (!networkInterceptorClosed.get()) {
throw new WebDriverException(e);
}
}});

devTools.send(enableFetchForAllPatterns());
}
Expand Down

0 comments on commit c22de96

Please sign in to comment.