@@ -42,13 +42,19 @@ public class DevTools implements Closeable {
4242 private static final Logger LOG = Logger .getLogger (DevTools .class .getName ());
4343
4444 private final Domains protocol ;
45- private final Duration timeout = Duration .ofSeconds (10 );
45+ private Duration timeout = Duration .ofSeconds (10 );
4646 private final Connection connection ;
4747 private SessionID cdpSession = null ;
4848
4949 public DevTools (Function <DevTools , Domains > protocol , Connection connection ) {
50+ this (protocol , connection , Duration .ofSeconds (10 ));
51+ }
52+
53+ // overloaded constructor for setting timeout
54+ public DevTools (Function <DevTools , Domains > protocol , Connection connection , Duration timeout ) {
5055 this .connection = Require .nonNull ("WebSocket connection" , connection );
5156 this .protocol = Require .nonNull ("CDP protocol" , protocol ).apply (this );
57+ setTimeout (timeout );
5258 }
5359
5460 public Domains getDomains () {
@@ -212,4 +218,12 @@ private Throwable unwrapCause(ExecutionException e) {
212218 public SessionID getCdpSession () {
213219 return cdpSession ;
214220 }
221+
222+ public void setTimeout (Duration timeout ) {
223+ Require .nonNull ("Timeout duration" , timeout );
224+ if (timeout .isNegative () || timeout .isZero ()) {
225+ throw new IllegalArgumentException ("Timeout must be positive" );
226+ }
227+ this .timeout = timeout ;
228+ }
215229}
0 commit comments