@@ -27,7 +27,7 @@ namespace OpenQA.Selenium.BiDi;
2727public class BiDi : IAsyncDisposable
2828{
2929 private readonly ITransport _transport ;
30- private readonly Broker _broker ;
30+ protected Broker Broker { get ; }
3131
3232 private readonly Lazy < Modules . Session . SessionModule > _sessionModule ;
3333 private readonly Lazy < Modules . BrowsingContext . BrowsingContextModule > _browsingContextModule ;
@@ -38,21 +38,21 @@ public class BiDi : IAsyncDisposable
3838 private readonly Lazy < Modules . Log . LogModule > _logModule ;
3939 private readonly Lazy < Modules . Storage . StorageModule > _storageModule ;
4040
41- internal BiDi ( string url )
41+ protected internal BiDi ( string url )
4242 {
4343 var uri = new Uri ( url ) ;
4444
4545 _transport = new WebSocketTransport ( new Uri ( url ) ) ;
46- _broker = new Broker ( this , _transport ) ;
46+ Broker = new Broker ( this , _transport ) ;
4747
48- _sessionModule = new Lazy < Modules . Session . SessionModule > ( ( ) => new Modules . Session . SessionModule ( _broker ) ) ;
49- _browsingContextModule = new Lazy < Modules . BrowsingContext . BrowsingContextModule > ( ( ) => new Modules . BrowsingContext . BrowsingContextModule ( _broker ) ) ;
50- _browserModule = new Lazy < Modules . Browser . BrowserModule > ( ( ) => new Modules . Browser . BrowserModule ( _broker ) ) ;
51- _networkModule = new Lazy < Modules . Network . NetworkModule > ( ( ) => new Modules . Network . NetworkModule ( _broker ) ) ;
52- _inputModule = new Lazy < Modules . Input . InputModule > ( ( ) => new Modules . Input . InputModule ( _broker ) ) ;
53- _scriptModule = new Lazy < Modules . Script . ScriptModule > ( ( ) => new Modules . Script . ScriptModule ( _broker ) ) ;
54- _logModule = new Lazy < Modules . Log . LogModule > ( ( ) => new Modules . Log . LogModule ( _broker ) ) ;
55- _storageModule = new Lazy < Modules . Storage . StorageModule > ( ( ) => new Modules . Storage . StorageModule ( _broker ) ) ;
48+ _sessionModule = new Lazy < Modules . Session . SessionModule > ( ( ) => new Modules . Session . SessionModule ( Broker ) ) ;
49+ _browsingContextModule = new Lazy < Modules . BrowsingContext . BrowsingContextModule > ( ( ) => new Modules . BrowsingContext . BrowsingContextModule ( Broker ) ) ;
50+ _browserModule = new Lazy < Modules . Browser . BrowserModule > ( ( ) => new Modules . Browser . BrowserModule ( Broker ) ) ;
51+ _networkModule = new Lazy < Modules . Network . NetworkModule > ( ( ) => new Modules . Network . NetworkModule ( Broker ) ) ;
52+ _inputModule = new Lazy < Modules . Input . InputModule > ( ( ) => new Modules . Input . InputModule ( Broker ) ) ;
53+ _scriptModule = new Lazy < Modules . Script . ScriptModule > ( ( ) => new Modules . Script . ScriptModule ( Broker ) ) ;
54+ _logModule = new Lazy < Modules . Log . LogModule > ( ( ) => new Modules . Log . LogModule ( Broker ) ) ;
55+ _storageModule = new Lazy < Modules . Storage . StorageModule > ( ( ) => new Modules . Storage . StorageModule ( Broker ) ) ;
5656 }
5757
5858 internal Modules . Session . SessionModule SessionModule => _sessionModule . Value ;
@@ -73,7 +73,7 @@ public static async Task<BiDi> ConnectAsync(string url)
7373 {
7474 var bidi = new BiDi ( url ) ;
7575
76- await bidi . _broker . ConnectAsync ( default ) . ConfigureAwait ( false ) ;
76+ await bidi . Broker . ConnectAsync ( ) . ConfigureAwait ( false ) ;
7777
7878 return bidi ;
7979 }
@@ -83,10 +83,15 @@ public Task EndAsync(Modules.Session.EndOptions? options = null)
8383 return SessionModule . EndAsync ( options ) ;
8484 }
8585
86- public async ValueTask DisposeAsync ( )
86+ protected virtual async ValueTask DisposeAsyncCore ( )
8787 {
88- await _broker . DisposeAsync ( ) . ConfigureAwait ( false ) ;
89-
88+ await Broker . DisposeAsync ( ) . ConfigureAwait ( false ) ;
9089 _transport ? . Dispose ( ) ;
9190 }
91+
92+ public async ValueTask DisposeAsync ( )
93+ {
94+ await DisposeAsyncCore ( ) ;
95+ GC . SuppressFinalize ( this ) ;
96+ }
9297}
0 commit comments