Skip to content

Commit bbe2ac5

Browse files
committed
[java] handle events only once
1 parent edb4c75 commit bbe2ac5

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ public NetworkInterceptor(WebDriver driver, Filter filter) {
100100
@Override
101101
public void close() {
102102
tools.getDomains().network().resetNetworkFilter();
103-
tools.getDomains().network().markNetworkInterceptorClosed();
104103
}
105104

106105
protected HttpMethod convertFromCdpHttpMethod(String method) {

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,14 @@ public abstract class Network<AUTHREQUIRED, REQUESTPAUSED> {
6262
private volatile Filter filter = defaultFilter;
6363
protected final DevTools devTools;
6464

65-
private final AtomicBoolean networkInterceptorClosed = new AtomicBoolean();
65+
private final AtomicBoolean fetchEnabled = new AtomicBoolean();
6666

6767
public Network(DevTools devtools) {
6868
this.devTools = Require.nonNull("DevTools", devtools);
6969
}
7070

7171
public void disable() {
72+
fetchEnabled.set(false);
7273
devTools.send(disableFetch());
7374
devTools.send(enableNetworkCaching());
7475

@@ -141,10 +142,6 @@ public void resetNetworkFilter() {
141142
filter = defaultFilter;
142143
}
143144

144-
public void markNetworkInterceptorClosed() {
145-
networkInterceptorClosed.set(true);
146-
}
147-
148145
public void interceptTrafficWith(Filter filter) {
149146
Require.nonNull("HTTP filter", filter);
150147

@@ -153,6 +150,11 @@ public void interceptTrafficWith(Filter filter) {
153150
}
154151

155152
public void prepareToInterceptTraffic() {
153+
if (fetchEnabled.getAndSet(true)) {
154+
// ensure we do not register the listeners multiple times, otherwise the events are handled
155+
// multiple times
156+
return;
157+
}
156158
devTools.send(disableNetworkCaching());
157159

158160
devTools.addListener(
@@ -221,7 +223,7 @@ public void prepareToInterceptTraffic() {
221223
Thread.currentThread().interrupt();
222224
throw new WebDriverException(e);
223225
} catch (ExecutionException e) {
224-
if (!networkInterceptorClosed.get()) {
226+
if (fetchEnabled.get()) {
225227
LOG.log(WARNING, e, () -> "Unable to process request");
226228
}
227229
return new HttpResponse();
@@ -236,8 +238,8 @@ public void prepareToInterceptTraffic() {
236238

237239
devTools.send(fulfillRequest(pausedRequest, forBrowser));
238240
} catch (TimeoutException e) {
239-
if (!networkInterceptorClosed.get()) {
240-
throw new WebDriverException(e);
241+
if (fetchEnabled.get()) {
242+
throw e;
241243
}
242244
}
243245
});

0 commit comments

Comments
 (0)