File tree 4 files changed +40
-14
lines changed
4 files changed +40
-14
lines changed Original file line number Diff line number Diff line change @@ -85,6 +85,10 @@ export default class CordovaPopupWindow {
85
85
this . _reject ( new Error ( message ) ) ;
86
86
}
87
87
88
+ close ( ) {
89
+ this . _cleanup ( ) ;
90
+ }
91
+
88
92
_cleanup ( ) {
89
93
Log . debug ( "CordovaPopupWindow._cleanup" ) ;
90
94
Original file line number Diff line number Diff line change @@ -56,16 +56,22 @@ export default class IFrameWindow {
56
56
this . _reject ( new Error ( message ) ) ;
57
57
}
58
58
59
+ close ( ) {
60
+ this . _cleanup ( ) ;
61
+ }
62
+
59
63
_cleanup ( ) {
60
- Log . debug ( "IFrameWindow._cleanup" ) ;
64
+ if ( this . _frame ) {
65
+ Log . debug ( "IFrameWindow._cleanup" ) ;
61
66
62
- window . removeEventListener ( "message" , this . _boundMessageEvent , false ) ;
63
- window . clearTimeout ( this . _timer ) ;
64
- window . document . body . removeChild ( this . _frame ) ;
67
+ window . removeEventListener ( "message" , this . _boundMessageEvent , false ) ;
68
+ window . clearTimeout ( this . _timer ) ;
69
+ window . document . body . removeChild ( this . _frame ) ;
65
70
66
- this . _timer = null ;
67
- this . _frame = null ;
68
- this . _boundMessageEvent = null ;
71
+ this . _timer = null ;
72
+ this . _frame = null ;
73
+ this . _boundMessageEvent = null ;
74
+ }
69
75
}
70
76
71
77
_timeout ( ) {
Original file line number Diff line number Diff line change @@ -71,6 +71,10 @@ export default class PopupWindow {
71
71
this . _reject ( new Error ( message ) ) ;
72
72
}
73
73
74
+ close ( ) {
75
+ this . _cleanup ( false ) ;
76
+ }
77
+
74
78
_cleanup ( keepOpen ) {
75
79
Log . debug ( "PopupWindow._cleanup" ) ;
76
80
Original file line number Diff line number Diff line change @@ -318,20 +318,26 @@ export default class UserManager extends OidcClient {
318
318
_signinStart ( args , navigator , navigatorParams = { } ) {
319
319
Log . debug ( "_signinStart" ) ;
320
320
321
+ return navigator . prepare ( navigatorParams ) . then ( handle => {
322
+ Log . debug ( "got navigator window handle" ) ;
321
323
322
- return this . createSigninRequest ( args ) . then ( signinRequest => {
323
- Log . debug ( "got signin request" ) ;
324
-
325
- navigatorParams . url = signinRequest . url ;
326
- navigatorParams . id = signinRequest . state . id ;
324
+ return this . createSigninRequest ( args ) . then ( signinRequest => {
325
+ Log . debug ( "got signin request" ) ;
327
326
328
- return navigator . prepare ( navigatorParams ) . then ( handle => {
329
- Log . debug ( "got navigator window handle" ) ;
327
+ navigatorParams . url = signinRequest . url ;
328
+ navigatorParams . id = signinRequest . state . id ;
330
329
331
330
return handle . navigate ( navigatorParams ) ;
331
+ } ) . catch ( err => {
332
+ if ( handle . close ) {
333
+ Log . debug ( "Error after preparing navigator, closing navigator window" ) ;
334
+ handle . close ( ) ;
335
+ }
336
+ throw err ;
332
337
} ) ;
333
338
} ) ;
334
339
}
340
+
335
341
_signinEnd ( url ) {
336
342
Log . debug ( "_signinEnd" ) ;
337
343
@@ -382,6 +388,12 @@ export default class UserManager extends OidcClient {
382
388
} ) ;
383
389
} ) ;
384
390
} ) ;
391
+ } ) . catch ( err => {
392
+ if ( handle . close ) {
393
+ Log . debug ( "Error after preparing navigator, closing navigator window" ) ;
394
+ handle . close ( ) ;
395
+ }
396
+ throw err ;
385
397
} ) ;
386
398
} ) ;
387
399
}
You can’t perform that action at this time.
0 commit comments