@@ -494,7 +494,6 @@ public void detachFromWindow() {
494
494
mTrackingDelegate .removeListener (mTrackingListener );
495
495
496
496
if (mViewModel != null ) {
497
- mViewModel .getIsFullscreen ().removeObserver (mIsFullscreenObserver );
498
497
mViewModel .getIsActiveWindow ().removeObserver (mIsActiveWindowObserver );
499
498
mViewModel .getIsPopUpBlocked ().removeObserver (mIsPopUpBlockedListener );
500
499
mViewModel = null ;
@@ -520,7 +519,6 @@ public void attachToWindow(@NonNull WindowWidget aWindow) {
520
519
521
520
mBinding .setViewmodel (mViewModel );
522
521
523
- mViewModel .getIsFullscreen ().observeForever ( mIsFullscreenObserver );
524
522
mViewModel .getIsActiveWindow ().observeForever (mIsActiveWindowObserver );
525
523
mViewModel .getIsPopUpBlocked ().observeForever (mIsPopUpBlockedListener );
526
524
mBinding .navigationBarNavigation .urlBar .attachToWindow (mAttachedWindow );
@@ -566,6 +564,33 @@ public void onSessionChanged(@NonNull Session aOldSession, @NonNull Session aSes
566
564
exitFullScreenMode ();
567
565
}
568
566
567
+ @ Override
568
+ public void onFullScreen (@ NonNull WindowWidget aWindow , boolean aFullScreen ) {
569
+ if (aFullScreen ) {
570
+ enterFullScreenMode ();
571
+
572
+ if (mAttachedWindow .isResizing ()) {
573
+ exitResizeMode (ResizeAction .KEEP_SIZE );
574
+ }
575
+ AtomicBoolean autoEnter = new AtomicBoolean (false );
576
+ mAutoSelectedProjection = VideoProjectionMenuWidget .getAutomaticProjection (getSession ().getCurrentUri (), autoEnter );
577
+ if (mAutoSelectedProjection != VIDEO_PROJECTION_NONE && autoEnter .get ()) {
578
+ mViewModel .setAutoEnteredVRVideo (true );
579
+ postDelayed (() -> enterVRVideo (mAutoSelectedProjection ), 300 );
580
+ } else {
581
+ mViewModel .setAutoEnteredVRVideo (false );
582
+ if (mProjectionMenu != null ) {
583
+ mProjectionMenu .setSelectedProjection (mAutoSelectedProjection );
584
+ }
585
+ }
586
+ } else {
587
+ if (mViewModel .getIsInVRVideo ().getValue ().get ()) {
588
+ exitVRVideo ();
589
+ }
590
+ exitFullScreenMode ();
591
+ }
592
+ }
593
+
569
594
@ Override
570
595
protected void onDraw (Canvas canvas ) {
571
596
super .onDraw (canvas );
@@ -607,7 +632,7 @@ private void enterFullScreenMode() {
607
632
}
608
633
609
634
private void exitFullScreenMode () {
610
- if (mAttachedWindow == null ) {
635
+ if (mAttachedWindow == null || ! mAttachedWindow . isFullScreen () ) {
611
636
return ;
612
637
}
613
638
@@ -818,36 +843,6 @@ public void onLocationChange(@NonNull GeckoSession geckoSession, @Nullable Strin
818
843
819
844
// Content delegate
820
845
821
- private Observer <ObservableBoolean > mIsFullscreenObserver = isFullScreen -> {
822
- if (!mIsWindowAttached ) {
823
- return ;
824
- }
825
-
826
- if (isFullScreen .get ()) {
827
- enterFullScreenMode ();
828
-
829
- if (mAttachedWindow .isResizing ()) {
830
- exitResizeMode (ResizeAction .KEEP_SIZE );
831
- }
832
- AtomicBoolean autoEnter = new AtomicBoolean (false );
833
- mAutoSelectedProjection = VideoProjectionMenuWidget .getAutomaticProjection (getSession ().getCurrentUri (), autoEnter );
834
- if (mAutoSelectedProjection != VIDEO_PROJECTION_NONE && autoEnter .get ()) {
835
- mViewModel .setAutoEnteredVRVideo (true );
836
- postDelayed (() -> enterVRVideo (mAutoSelectedProjection ), 300 );
837
- } else {
838
- mViewModel .setAutoEnteredVRVideo (false );
839
- if (mProjectionMenu != null ) {
840
- mProjectionMenu .setSelectedProjection (mAutoSelectedProjection );
841
- }
842
- }
843
- } else {
844
- if (mViewModel .getIsInVRVideo ().getValue ().get ()) {
845
- exitVRVideo ();
846
- }
847
- exitFullScreenMode ();
848
- }
849
- };
850
-
851
846
private Observer <ObservableBoolean > mIsActiveWindowObserver = aIsActiveWindow -> updateTrackingProtection ();
852
847
853
848
private Observer <ObservableBoolean > mIsPopUpBlockedListener = observableBoolean -> {
0 commit comments