16
16
// limitations under the License.
17
17
// </copyright>
18
18
19
- using System ;
19
+ using System . Linq ;
20
20
using System . Threading . Tasks ;
21
21
22
22
namespace OpenQA . Selenium . DevTools
@@ -29,17 +29,17 @@ public abstract class Network
29
29
/// <summary>
30
30
/// Occurs when a network request requires authorization.
31
31
/// </summary>
32
- public event EventHandler < AuthRequiredEventArgs > AuthRequired ;
32
+ public event AsyncEventHandler < AuthRequiredEventArgs > AuthRequired ;
33
33
34
34
/// <summary>
35
35
/// Occurs when a network request is intercepted.
36
36
/// </summary>
37
- public event EventHandler < RequestPausedEventArgs > RequestPaused ;
37
+ public event AsyncEventHandler < RequestPausedEventArgs > RequestPaused ;
38
38
39
39
/// <summary>
40
40
/// Occurs when a network response is received.
41
41
/// </summary>
42
- public event EventHandler < ResponsePausedEventArgs > ResponsePaused ;
42
+ public event AsyncEventHandler < ResponsePausedEventArgs > ResponsePaused ;
43
43
44
44
/// <summary>
45
45
/// Asynchronously disables network caching.
@@ -152,9 +152,14 @@ public async Task SetUserAgentOverride(string userAgent)
152
152
/// <param name="e">An <see cref="AuthRequiredEventArgs"/> that contains the event data.</param>
153
153
protected virtual void OnAuthRequired ( AuthRequiredEventArgs e )
154
154
{
155
- if ( this . AuthRequired != null )
155
+ var delegates = AuthRequired ? . GetInvocationList ( ) ;
156
+
157
+ if ( delegates != null )
156
158
{
157
- this . AuthRequired ( this , e ) ;
159
+ foreach ( var d in delegates . Cast < AsyncEventHandler < AuthRequiredEventArgs > > ( ) )
160
+ {
161
+ Task . Run ( async ( ) => await d . Invoke ( this , e ) ) . GetAwaiter ( ) . GetResult ( ) ;
162
+ }
158
163
}
159
164
}
160
165
@@ -164,9 +169,14 @@ protected virtual void OnAuthRequired(AuthRequiredEventArgs e)
164
169
/// <param name="e">An <see cref="RequestPausedEventArgs"/> that contains the event data.</param>
165
170
protected virtual void OnRequestPaused ( RequestPausedEventArgs e )
166
171
{
167
- if ( this . RequestPaused != null )
172
+ var delegates = RequestPaused ? . GetInvocationList ( ) ;
173
+
174
+ if ( delegates != null )
168
175
{
169
- this . RequestPaused ( this , e ) ;
176
+ foreach ( var d in delegates . Cast < AsyncEventHandler < RequestPausedEventArgs > > ( ) )
177
+ {
178
+ Task . Run ( async ( ) => await d . Invoke ( this , e ) ) . GetAwaiter ( ) . GetResult ( ) ;
179
+ }
170
180
}
171
181
}
172
182
@@ -176,10 +186,17 @@ protected virtual void OnRequestPaused(RequestPausedEventArgs e)
176
186
/// <param name="e">An <see cref="ResponsePausedEventArgs"/> that contains the event data.</param>
177
187
protected virtual void OnResponsePaused ( ResponsePausedEventArgs e )
178
188
{
179
- if ( this . ResponsePaused != null )
189
+ var delegates = ResponsePaused ? . GetInvocationList ( ) ;
190
+
191
+ if ( delegates != null )
180
192
{
181
- this . ResponsePaused ( this , e ) ;
193
+ foreach ( var d in delegates . Cast < AsyncEventHandler < ResponsePausedEventArgs > > ( ) )
194
+ {
195
+ Task . Run ( async ( ) => await d . Invoke ( this , e ) ) . GetAwaiter ( ) . GetResult ( ) ;
196
+ }
182
197
}
183
198
}
199
+
200
+ public delegate Task AsyncEventHandler < TEventArgs > ( object sender , TEventArgs e ) ;
184
201
}
185
202
}
0 commit comments