Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit f2713d8

Browse files
Clear projection menu selection if there isn't one selected (#2500)
* Clear projection menu selection if there isn't one selected * Unset video projection when exiting immersive Video mode Co-authored-by: Manuel Martin <[email protected]>
1 parent e6f4dda commit f2713d8

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import java.util.concurrent.Executor;
5555
import java.util.concurrent.atomic.AtomicBoolean;
5656

57+
import static org.mozilla.vrbrowser.ui.widgets.menus.VideoProjectionMenuWidget.VIDEO_PROJECTION_NONE;
58+
5759
public class NavigationBarWidget extends UIWidget implements GeckoSession.NavigationDelegate,
5860
GeckoSession.ProgressDelegate, GeckoSession.ContentDelegate, WidgetManagerDelegate.WorldClickListener,
5961
WidgetManagerDelegate.UpdateListener, SessionChangeListener,
@@ -102,7 +104,7 @@ public class NavigationBarWidget extends UIWidget implements GeckoSession.Naviga
102104
private BrightnessMenuWidget mBrightnessWidget;
103105
private MediaControlsWidget mMediaControlsWidget;
104106
private Media mFullScreenMedia;
105-
private @VideoProjectionMenuWidget.VideoProjectionFlags Integer mAutoSelectedProjection;
107+
private @VideoProjectionMenuWidget.VideoProjectionFlags int mAutoSelectedProjection = VIDEO_PROJECTION_NONE;
106108
private HamburgerMenuWidget mHamburgerMenu;
107109
private SendTabDialogWidget mSendTabDialog;
108110
private TooltipWidget mPopUpNotification;
@@ -252,7 +254,7 @@ private void initialize(@NonNull Context aContext) {
252254
mAudio.playSound(AudioEngine.Sound.CLICK);
253255
}
254256

255-
if (mAutoSelectedProjection != null) {
257+
if (mAutoSelectedProjection != VIDEO_PROJECTION_NONE) {
256258
enterVRVideo(mAutoSelectedProjection);
257259
return;
258260
}
@@ -698,6 +700,7 @@ private void exitVRVideo() {
698700
boolean composited = mProjectionMenu.getPlacement().composited;
699701
mProjectionMenu.getPlacement().copyFrom(mProjectionMenuPlacement);
700702
mProjectionMenu.getPlacement().composited = composited;
703+
mProjectionMenu.setSelectedProjection(VIDEO_PROJECTION_NONE);
701704
mWidgetManager.updateWidget(mProjectionMenu);
702705
closeFloatingMenus();
703706
mWidgetManager.setControllersVisible(true);
@@ -870,11 +873,14 @@ public void onFullScreen(GeckoSession session, boolean aFullScreen) {
870873
}
871874
AtomicBoolean autoEnter = new AtomicBoolean(false);
872875
mAutoSelectedProjection = VideoProjectionMenuWidget.getAutomaticProjection(getSession().getCurrentUri(), autoEnter);
873-
if (mAutoSelectedProjection != null && autoEnter.get()) {
876+
if (mAutoSelectedProjection != VIDEO_PROJECTION_NONE && autoEnter.get()) {
874877
mAutoEnteredVRVideo = true;
875878
postDelayed(() -> enterVRVideo(mAutoSelectedProjection), 300);
876879
} else {
877880
mAutoEnteredVRVideo = false;
881+
if (mProjectionMenu != null) {
882+
mProjectionMenu.setSelectedProjection(mAutoSelectedProjection);
883+
}
878884
}
879885
} else {
880886
if (mIsInVRVideo) {

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/menus/VideoProjectionMenuWidget.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919

2020
public class VideoProjectionMenuWidget extends MenuWidget implements WidgetManagerDelegate.FocusChangeListener {
2121

22-
@IntDef(value = { VIDEO_PROJECTION_UNSUPPORTED, VIDEO_PROJECTION_3D_SIDE_BY_SIDE, VIDEO_PROJECTION_360,
22+
@IntDef(value = { VIDEO_PROJECTION_NONE, VIDEO_PROJECTION_3D_SIDE_BY_SIDE, VIDEO_PROJECTION_360,
2323
VIDEO_PROJECTION_360_STEREO, VIDEO_PROJECTION_180,
2424
VIDEO_PROJECTION_180_STEREO_LEFT_RIGHT, VIDEO_PROJECTION_180_STEREO_TOP_BOTTOM })
2525
public @interface VideoProjectionFlags {}
2626

27-
public static final int VIDEO_PROJECTION_UNSUPPORTED = -1;
27+
public static final int VIDEO_PROJECTION_NONE = -1;
2828
public static final int VIDEO_PROJECTION_3D_SIDE_BY_SIDE = 0;
2929
public static final int VIDEO_PROJECTION_360 = 1;
3030
public static final int VIDEO_PROJECTION_360_STEREO = 2;
@@ -128,27 +128,28 @@ private void handleClick(@VideoProjectionFlags int aVideoProjection) {
128128

129129
public void setSelectedProjection(@VideoProjectionFlags int aProjection) {
130130
mSelectedProjection = aProjection;
131-
IntStream.range(0, mItems.size())
131+
int index = IntStream.range(0, mItems.size())
132132
.filter(i -> ((ProjectionMenuItem)mItems.get(i)).projection == aProjection)
133133
.findFirst()
134-
.ifPresent(this::setSelectedItem);
134+
.orElse(-1);
135+
setSelectedItem(index);
135136
}
136137

137-
public static @VideoProjectionFlags Integer getAutomaticProjection(String aURL, AtomicBoolean autoEnter) {
138+
public static @VideoProjectionFlags int getAutomaticProjection(String aURL, AtomicBoolean autoEnter) {
138139
if (aURL == null) {
139-
return null;
140+
return VIDEO_PROJECTION_NONE;
140141
}
141142

142143
Uri uri = Uri.parse(aURL);
143144
if (uri == null) {
144-
return null;
145+
return VIDEO_PROJECTION_NONE;
145146
}
146147

147148
String projection = uri.getQueryParameter("mozVideoProjection");
148149
if (projection == null) {
149150
projection = uri.getQueryParameter("mozvideoprojection");
150151
if (projection == null) {
151-
return null;
152+
return VIDEO_PROJECTION_NONE;
152153
}
153154
}
154155
projection = projection.toLowerCase();
@@ -169,7 +170,7 @@ public void setSelectedProjection(@VideoProjectionFlags int aProjection) {
169170
return VIDEO_PROJECTION_3D_SIDE_BY_SIDE;
170171
}
171172

172-
return VIDEO_PROJECTION_UNSUPPORTED;
173+
return VIDEO_PROJECTION_NONE;
173174
}
174175

175176
@Override

0 commit comments

Comments
 (0)