18
18
package org .openqa .selenium .devtools .idealized ;
19
19
20
20
import org .openqa .selenium .Credentials ;
21
+ import org .openqa .selenium .TimeoutException ;
21
22
import org .openqa .selenium .UsernameAndPassword ;
22
23
import org .openqa .selenium .WebDriverException ;
23
24
import org .openqa .selenium .devtools .Command ;
44
45
import java .util .concurrent .CompletableFuture ;
45
46
import java .util .concurrent .ConcurrentHashMap ;
46
47
import java .util .concurrent .ExecutionException ;
48
+ import java .util .concurrent .atomic .AtomicBoolean ;
47
49
import java .util .function .Predicate ;
48
50
import java .util .function .Supplier ;
49
51
import java .util .logging .Logger ;
@@ -61,6 +63,8 @@ public abstract class Network<AUTHREQUIRED, REQUESTPAUSED> {
61
63
private Filter filter = defaultFilter ;
62
64
protected final DevTools devTools ;
63
65
66
+ private final AtomicBoolean networkInterceptorClosed = new AtomicBoolean ();
67
+
64
68
public Network (DevTools devtools ) {
65
69
this .devTools = Require .nonNull ("DevTools" , devtools );
66
70
}
@@ -132,6 +136,10 @@ public void resetNetworkFilter() {
132
136
filter = defaultFilter ;
133
137
}
134
138
139
+ public void markNetworkInterceptorClosed () {
140
+ networkInterceptorClosed .set (true );
141
+ }
142
+
135
143
public void interceptTrafficWith (Filter filter ) {
136
144
Require .nonNull ("HTTP filter" , filter );
137
145
@@ -172,6 +180,7 @@ public void prepareToInterceptTraffic() {
172
180
devTools .addListener (
173
181
requestPausedEvent (),
174
182
pausedRequest -> {
183
+ try {
175
184
String id = getRequestId (pausedRequest );
176
185
Either <HttpRequest , HttpResponse > message = createSeMessages (pausedRequest );
177
186
@@ -203,7 +212,9 @@ public void prepareToInterceptTraffic() {
203
212
Thread .currentThread ().interrupt ();
204
213
throw new WebDriverException (e );
205
214
} 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
+ }
207
218
return new HttpResponse ();
208
219
}
209
220
}).execute (message .left ());
@@ -214,7 +225,11 @@ public void prepareToInterceptTraffic() {
214
225
}
215
226
216
227
devTools .send (fulfillRequest (pausedRequest , forBrowser ));
217
- });
228
+ } catch (TimeoutException e ) {
229
+ if (!networkInterceptorClosed .get ()) {
230
+ throw new WebDriverException (e );
231
+ }
232
+ }});
218
233
219
234
devTools .send (enableFetchForAllPatterns ());
220
235
}
0 commit comments