@@ -432,13 +432,13 @@ class FrameSession {
432432 eventsHelper . addEventListener ( this . _client , 'Runtime.executionContextCreated' , event => this . _onExecutionContextCreated ( event . context ) ) ,
433433 eventsHelper . addEventListener ( this . _client , 'Runtime.executionContextDestroyed' , event => this . _onExecutionContextDestroyed ( event . executionContextId ) ) ,
434434 eventsHelper . addEventListener ( this . _client , 'Runtime.executionContextsCleared' , event => this . _onExecutionContextsCleared ( ) ) ,
435- eventsHelper . addEventListener ( this . _client , 'Target.attachedToTarget' , event => this . _onAttachedToTarget ( event ) ) ,
436- eventsHelper . addEventListener ( this . _client , 'Target.detachedFromTarget' , event => this . _onDetachedFromTarget ( event ) ) ,
437435 ] ) ;
438436 }
439437
440438 private _addBrowserListeners ( ) {
441439 this . _eventListeners . push ( ...[
440+ eventsHelper . addEventListener ( this . _client , 'Target.attachedToTarget' , event => this . _onAttachedToTarget ( event ) ) ,
441+ eventsHelper . addEventListener ( this . _client , 'Target.detachedFromTarget' , event => this . _onDetachedFromTarget ( event ) ) ,
442442 eventsHelper . addEventListener ( this . _client , 'Inspector.targetCrashed' , event => this . _onTargetCrashed ( ) ) ,
443443 eventsHelper . addEventListener ( this . _client , 'Page.screencastFrame' , event => this . _onScreencastFrame ( event ) ) ,
444444 eventsHelper . addEventListener ( this . _client , 'Page.windowOpen' , event => this . _onWindowOpen ( event ) ) ,
@@ -713,7 +713,12 @@ class FrameSession {
713713 if ( event . targetInfo . type === 'iframe' ) {
714714 // Frame id equals target id.
715715 const targetId = event . targetInfo . targetId ;
716- const frame = this . _page . frameManager . frame ( targetId ) ;
716+ let frame = this . _page . frameManager . frame ( targetId ) ;
717+ if ( ! frame && event . targetInfo . parentFrameId ) {
718+ // When connecting to an existing page with an iframe, there is an "iframe" target,
719+ // but no local frame is reported in getFrameTree. We can create a remote frame here.
720+ frame = this . _page . frameManager . frameAttached ( targetId , event . targetInfo . parentFrameId ) ;
721+ }
717722 if ( ! frame )
718723 return ; // Subtree may be already gone due to renderer/browser race.
719724 this . _page . frameManager . removeChildFramesRecursively ( frame ) ;
0 commit comments