@@ -27,7 +27,7 @@ namespace OpenQA.Selenium.BiDi;
27
27
public class BiDi : IAsyncDisposable
28
28
{
29
29
private readonly ITransport _transport ;
30
- private readonly Broker _broker ;
30
+ protected Broker Broker { get ; }
31
31
32
32
private readonly Lazy < Modules . Session . SessionModule > _sessionModule ;
33
33
private readonly Lazy < Modules . BrowsingContext . BrowsingContextModule > _browsingContextModule ;
@@ -38,21 +38,21 @@ public class BiDi : IAsyncDisposable
38
38
private readonly Lazy < Modules . Log . LogModule > _logModule ;
39
39
private readonly Lazy < Modules . Storage . StorageModule > _storageModule ;
40
40
41
- internal BiDi ( string url )
41
+ protected internal BiDi ( string url )
42
42
{
43
43
var uri = new Uri ( url ) ;
44
44
45
45
_transport = new WebSocketTransport ( new Uri ( url ) ) ;
46
- _broker = new Broker ( this , _transport ) ;
46
+ Broker = new Broker ( this , _transport ) ;
47
47
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 ) ) ;
56
56
}
57
57
58
58
internal Modules . Session . SessionModule SessionModule => _sessionModule . Value ;
@@ -73,7 +73,7 @@ public static async Task<BiDi> ConnectAsync(string url)
73
73
{
74
74
var bidi = new BiDi ( url ) ;
75
75
76
- await bidi . _broker . ConnectAsync ( default ) . ConfigureAwait ( false ) ;
76
+ await bidi . Broker . ConnectAsync ( ) . ConfigureAwait ( false ) ;
77
77
78
78
return bidi ;
79
79
}
@@ -83,10 +83,15 @@ public Task EndAsync(Modules.Session.EndOptions? options = null)
83
83
return SessionModule . EndAsync ( options ) ;
84
84
}
85
85
86
- public async ValueTask DisposeAsync ( )
86
+ protected virtual async ValueTask DisposeAsyncCore ( )
87
87
{
88
- await _broker . DisposeAsync ( ) . ConfigureAwait ( false ) ;
89
-
88
+ await Broker . DisposeAsync ( ) . ConfigureAwait ( false ) ;
90
89
_transport ? . Dispose ( ) ;
91
90
}
91
+
92
+ public async ValueTask DisposeAsync ( )
93
+ {
94
+ await DisposeAsyncCore ( ) ;
95
+ GC . SuppressFinalize ( this ) ;
96
+ }
92
97
}
0 commit comments