13
13
import org .mozilla .vrbrowser .AppExecutors ;
14
14
import org .mozilla .vrbrowser .R ;
15
15
import org .mozilla .vrbrowser .VRBrowserApplication ;
16
+ import org .mozilla .vrbrowser .browser .engine .Session ;
16
17
import org .mozilla .vrbrowser .db .PopUpSite ;
17
18
import org .mozilla .vrbrowser .ui .viewmodel .PopUpsViewModel ;
18
19
import org .mozilla .vrbrowser .ui .widgets .UIWidget ;
33
34
import java .util .NoSuchElementException ;
34
35
import java .util .Optional ;
35
36
36
- public class PromptDelegate implements GeckoSession .PromptDelegate {
37
+ public class PromptDelegate implements GeckoSession .PromptDelegate , WindowWidget . WindowListener {
37
38
38
39
private PromptWidget mPrompt ;
39
40
private PopUpBlockDialogWidget mPopUpPrompt ;
@@ -57,12 +58,16 @@ public void attachToWindow(@NonNull WindowWidget window) {
57
58
detachFromWindow ();
58
59
59
60
mAttachedWindow = window ;
61
+ mAttachedWindow .addWindowListener (this );
60
62
mAttachedWindow .getSession ().setPromptDelegate (this );
61
63
mViewModel .getAll ().observeForever (mObserver );
62
64
}
63
65
64
66
public void detachFromWindow () {
65
- mAttachedWindow = null ;
67
+ if (mAttachedWindow != null ) {
68
+ mAttachedWindow .removeWindowListener (this );
69
+ mAttachedWindow = null ;
70
+ }
66
71
mViewModel .getAll ().removeObserver (mObserver );
67
72
}
68
73
@@ -307,4 +312,11 @@ public void onDismiss() {
307
312
}
308
313
}
309
314
315
+ // WindowWidget.WindowListener
316
+
317
+ @ Override
318
+ public void onSessionChanged (@ NonNull Session aOldSession , @ NonNull Session aSession ) {
319
+ aOldSession .setPromptDelegate (null );
320
+ aSession .setPromptDelegate (this );
321
+ }
310
322
}
0 commit comments