@@ -136,9 +136,10 @@ public Browser(Connection connection, IBrowserOptions options, Process process,
136136 /// <returns>Task which resolves to a new <see cref="Page"/> object</returns>
137137 public async Task < Page > NewPageAsync ( )
138138 {
139- string targetId = ( await Connection . SendAsync ( "Target.createTarget" , new Dictionary < string , object > ( ) {
139+ string targetId = ( await Connection . SendAsync ( "Target.createTarget" , new Dictionary < string , object >
140+ {
140141 { "url" , "about:blank" }
141- } ) ) . targetId . ToString ( ) ;
142+ } ) ) . targetId . ToString ( ) ;
142143
143144 var target = _targets [ targetId ] ;
144145 await target . InitializedTask ;
@@ -231,11 +232,11 @@ private async void Connect_MessageReceived(object sender, MessageEventArgs e)
231232 switch ( e . MessageID )
232233 {
233234 case "Target.targetCreated" :
234- await CreateTarget ( e . MessageData . ToObject < TargetCreatedResponse > ( ) ) ;
235+ await CreateTargetAsync ( e . MessageData . ToObject < TargetCreatedResponse > ( ) ) ;
235236 return ;
236237
237238 case "Target.targetDestroyed" :
238- DestroyTarget ( e . MessageData . ToObject < TargetDestroyedResponse > ( ) ) ;
239+ await DestroyTargetAsync ( e . MessageData . ToObject < TargetDestroyedResponse > ( ) ) ;
239240 return ;
240241
241242 case "Target.targetInfoChanged" :
@@ -250,32 +251,35 @@ private void ChangeTargetInfo(TargetCreatedResponse e)
250251 {
251252 throw new InvalidTargetException ( "Target should exists before ChangeTargetInfo" ) ;
252253 }
253-
254+
254255 var target = _targets [ e . TargetInfo . TargetId ] ;
255256 target . TargetInfoChanged ( e . TargetInfo ) ;
256257 }
257258
258- private void DestroyTarget ( TargetDestroyedResponse e )
259+ private async Task DestroyTargetAsync ( TargetDestroyedResponse e )
259260 {
260261 if ( ! _targets . ContainsKey ( e . TargetId ) )
261262 {
262263 throw new InvalidTargetException ( "Target should exists before DestroyTarget" ) ;
263264 }
264265
265266 var target = _targets [ e . TargetId ] ;
266- if ( ! target . InitilizedTaskWrapper . Task . IsCompleted )
267- {
268- target . InitilizedTaskWrapper . SetResult ( false ) ;
269- }
270267 _targets . Remove ( e . TargetId ) ;
271268
272- TargetDestroyed ? . Invoke ( this , new TargetChangedArgs ( )
269+ if ( ! target . CloseTaskWrapper . Task . IsCompleted )
273270 {
274- Target = target
275- } ) ;
271+ target . CloseTaskWrapper . SetResult ( true ) ;
272+ }
273+ if ( await target . InitializedTask )
274+ {
275+ TargetDestroyed ? . Invoke ( this , new TargetChangedArgs ( )
276+ {
277+ Target = target
278+ } ) ;
279+ }
276280 }
277281
278- private async Task CreateTarget ( TargetCreatedResponse e )
282+ private async Task CreateTargetAsync ( TargetCreatedResponse e )
279283 {
280284 var target = new Target ( this , e . TargetInfo ) ;
281285 _targets [ e . TargetInfo . TargetId ] = target ;
@@ -290,7 +294,10 @@ private async Task CreateTarget(TargetCreatedResponse e)
290294 }
291295
292296 internal static async Task < Browser > CreateAsync (
293- Connection connection , IBrowserOptions options , Process process , Func < Task > closeCallBack )
297+ Connection connection ,
298+ IBrowserOptions options ,
299+ Process process ,
300+ Func < Task > closeCallBack )
294301 {
295302 var browser = new Browser ( connection , options , process , closeCallBack ) ;
296303 await connection . SendAsync ( "Target.setDiscoverTargets" , new
@@ -311,4 +318,4 @@ public void Dispose()
311318 }
312319 #endregion
313320 }
314- }
321+ }
0 commit comments