File tree Expand file tree Collapse file tree 2 files changed +40
-12
lines changed 
java/src/org/openqa/selenium Expand file tree Collapse file tree 2 files changed +40
-12
lines changed Original file line number Diff line number Diff line change @@ -44,15 +44,29 @@ public Class<HasBiDi> getDescribedInterface() {
4444
4545  @ Override 
4646  public  HasBiDi  getImplementation (Capabilities  caps , ExecuteMethod  executeMethod ) {
47+     return  new  HasBiDi () {
48+       private  volatile  Optional <BiDi > biDi ;
4749
48-     URI  wsUri  = getBiDiUrl (caps ).orElseThrow (() -> new  BiDiException ("BiDi not supported" ));
50+       @ Override 
51+       public  Optional <BiDi > maybeGetBiDi () {
52+         if  (biDi  == null ) {
53+           synchronized  (this ) {
54+             if  (biDi  == null ) {
55+               URI  wsUri  =
56+                   getBiDiUrl (caps ).orElseThrow (() -> new  BiDiException ("BiDi not supported" ));
4957
50-     HttpClient .Factory  clientFactory  = HttpClient .Factory .createDefault ();
51-     ClientConfig  wsConfig  = ClientConfig .defaultConfig ().baseUri (wsUri );
52-     HttpClient  wsClient  = clientFactory .createClient (wsConfig );
53-     Connection  connection  = new  Connection (wsClient , wsUri .toString ());
58+                HttpClient .Factory  clientFactory  = HttpClient .Factory .createDefault ();
59+                ClientConfig  wsConfig  = ClientConfig .defaultConfig ().baseUri (wsUri );
60+                HttpClient  wsClient  = clientFactory .createClient (wsConfig );
61+                Connection  connection  = new  Connection (wsClient , wsUri .toString ());
5462
55-     return  () -> Optional .of (new  BiDi (connection ));
63+               biDi  = Optional .of (new  BiDi (connection ));
64+             }
65+           }
66+         }
67+         return  biDi ;
68+       }
69+     };
5670  }
5771
5872  private  Optional <URI > getBiDiUrl (Capabilities  caps ) {
Original file line number Diff line number Diff line change @@ -42,14 +42,28 @@ public Class<HasDevTools> getDescribedInterface() {
4242
4343  @ Override 
4444  public  HasDevTools  getImplementation (Capabilities  caps , ExecuteMethod  executeMethod ) {
45-     Object   cdpVersion  =  caps . getCapability ( "se:cdpVersion" ); 
46-     String   version  =  cdpVersion   instanceof   String  ? ( String )  cdpVersion  :  caps . getBrowserVersion () ;
45+     return   new   HasDevTools () { 
46+        private   volatile   Optional < DevTools >  devTools ;
4747
48-     CdpInfo  info  = new  CdpVersionFinder ().match (version ).orElseGet (NoOpCdpInfo ::new );
49-     Optional <DevTools > devTools  =
50-         SeleniumCdpConnection .create (caps ).map (conn  -> new  DevTools (info ::getDomains , conn ));
48+       @ Override 
49+       public  Optional <DevTools > maybeGetDevTools () {
50+         if  (devTools  == null ) {
51+           synchronized  (this ) {
52+             if  (devTools  == null ) {
53+               Object  cdpVersion  = caps .getCapability ("se:cdpVersion" );
54+               String  version  =
55+                   cdpVersion  instanceof  String  ? (String ) cdpVersion  : caps .getBrowserVersion ();
5156
52-     return  () -> devTools ;
57+               CdpInfo  info  = new  CdpVersionFinder ().match (version ).orElseGet (NoOpCdpInfo ::new );
58+               this .devTools  =
59+                   SeleniumCdpConnection .create (caps )
60+                       .map (conn  -> new  DevTools (info ::getDomains , conn ));
61+             }
62+           }
63+         }
64+         return  devTools ;
65+       }
66+     };
5367  }
5468
5569  private  String  getCdpUrl (Capabilities  caps ) {
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments