Skip to content

Commit

Permalink
Avoid exiting fullscreen if not in it. (#3224)
Browse files Browse the repository at this point in the history
  • Loading branch information
keianhzo committed Apr 23, 2020
1 parent 91b6b77 commit 5ea74c8
Showing 1 changed file with 28 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,6 @@ public void detachFromWindow() {
mTrackingDelegate.removeListener(mTrackingListener);

if (mViewModel != null) {
mViewModel.getIsFullscreen().removeObserver(mIsFullscreenObserver);
mViewModel.getIsActiveWindow().removeObserver(mIsActiveWindowObserver);
mViewModel.getIsPopUpBlocked().removeObserver(mIsPopUpBlockedListener);
mViewModel = null;
Expand All @@ -520,7 +519,6 @@ public void attachToWindow(@NonNull WindowWidget aWindow) {

mBinding.setViewmodel(mViewModel);

mViewModel.getIsFullscreen().observeForever( mIsFullscreenObserver);
mViewModel.getIsActiveWindow().observeForever(mIsActiveWindowObserver);
mViewModel.getIsPopUpBlocked().observeForever(mIsPopUpBlockedListener);
mBinding.navigationBarNavigation.urlBar.attachToWindow(mAttachedWindow);
Expand Down Expand Up @@ -566,6 +564,33 @@ public void onSessionChanged(@NonNull Session aOldSession, @NonNull Session aSes
exitFullScreenMode();
}

@Override
public void onFullScreen(@NonNull WindowWidget aWindow, boolean aFullScreen) {
if (aFullScreen) {
enterFullScreenMode();

if (mAttachedWindow.isResizing()) {
exitResizeMode(ResizeAction.KEEP_SIZE);
}
AtomicBoolean autoEnter = new AtomicBoolean(false);
mAutoSelectedProjection = VideoProjectionMenuWidget.getAutomaticProjection(getSession().getCurrentUri(), autoEnter);
if (mAutoSelectedProjection != VIDEO_PROJECTION_NONE && autoEnter.get()) {
mViewModel.setAutoEnteredVRVideo(true);
postDelayed(() -> enterVRVideo(mAutoSelectedProjection), 300);
} else {
mViewModel.setAutoEnteredVRVideo(false);
if (mProjectionMenu != null) {
mProjectionMenu.setSelectedProjection(mAutoSelectedProjection);
}
}
} else {
if (mViewModel.getIsInVRVideo().getValue().get()) {
exitVRVideo();
}
exitFullScreenMode();
}
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Expand Down Expand Up @@ -607,7 +632,7 @@ private void enterFullScreenMode() {
}

private void exitFullScreenMode() {
if (mAttachedWindow == null) {
if (mAttachedWindow == null || !mAttachedWindow.isFullScreen()) {
return;
}

Expand Down Expand Up @@ -818,36 +843,6 @@ public void onLocationChange(@NonNull GeckoSession geckoSession, @Nullable Strin

// Content delegate

private Observer<ObservableBoolean> mIsFullscreenObserver = isFullScreen -> {
if (!mIsWindowAttached) {
return;
}

if (isFullScreen.get()) {
enterFullScreenMode();

if (mAttachedWindow.isResizing()) {
exitResizeMode(ResizeAction.KEEP_SIZE);
}
AtomicBoolean autoEnter = new AtomicBoolean(false);
mAutoSelectedProjection = VideoProjectionMenuWidget.getAutomaticProjection(getSession().getCurrentUri(), autoEnter);
if (mAutoSelectedProjection != VIDEO_PROJECTION_NONE && autoEnter.get()) {
mViewModel.setAutoEnteredVRVideo(true);
postDelayed(() -> enterVRVideo(mAutoSelectedProjection), 300);
} else {
mViewModel.setAutoEnteredVRVideo(false);
if (mProjectionMenu != null) {
mProjectionMenu.setSelectedProjection(mAutoSelectedProjection);
}
}
} else {
if (mViewModel.getIsInVRVideo().getValue().get()) {
exitVRVideo();
}
exitFullScreenMode();
}
};

private Observer<ObservableBoolean> mIsActiveWindowObserver = aIsActiveWindow -> updateTrackingProtection();

private Observer<ObservableBoolean> mIsPopUpBlockedListener = observableBoolean -> {
Expand Down

0 comments on commit 5ea74c8

Please sign in to comment.