From ceed9e08c37b30e7cd753c6fc63e740f1ee715a4 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Fri, 23 Nov 2018 10:00:13 -0800 Subject: [PATCH 1/3] Fixes Bookmark resizing issue --- .../mozilla/vrbrowser/VRBrowserActivity.java | 18 +++++----- .../vrbrowser/ui/widgets/BookmarksWidget.java | 34 ++++++------------- .../vrbrowser/ui/widgets/BrowserWidget.java | 23 +------------ .../ui/widgets/NavigationBarWidget.java | 8 ++--- .../ui/widgets/WidgetManagerDelegate.java | 2 +- .../widgets/options/DisplayOptionsWidget.java | 2 +- 6 files changed, 25 insertions(+), 62 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java index 98012fc1c..1f9d8522c 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java @@ -62,9 +62,11 @@ import java.io.IOException; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; +import java.util.function.Consumer; import androidx.annotation.Keep; import androidx.annotation.NonNull; @@ -130,6 +132,7 @@ public void run() { private LinkedList> mBrightnessQueue; private Pair mCurrentBrightness; private SearchEngineWrapper mSearchEngineWrapper; + private ArrayList mResizableWidgets; @Override protected void onCreate(Bundle savedInstanceState) { @@ -161,6 +164,8 @@ protected void onCreate(Bundle savedInstanceState) { mBrightnessQueue = new LinkedList<>(); mCurrentBrightness = Pair.create(null, 1.0f); + mResizableWidgets = new ArrayList<>(); + mWidgets = new HashMap<>(); mWidgetContainer = new FrameLayout(this); mWidgetContainer.getViewTreeObserver().addOnGlobalFocusChangeListener((oldFocus, newFocus) -> { @@ -236,6 +241,8 @@ protected void initializeWorld() { mTray.addListeners(new TrayListener[]{mBookmarksWidget, mNavigationBar}); mBookmarksWidget.addListeners(new BookmarkListener[]{mBrowserWidget, mNavigationBar, mTray}); + mResizableWidgets.addAll(Arrays.asList(mBrowserWidget, mBookmarksWidget)); + addWidgets(Arrays.asList(mRootWidget, mBrowserWidget, mNavigationBar, mKeyboard, mTray, mBookmarksWidget)); } @@ -562,12 +569,7 @@ void handleAudioPose(float qx, float qy, float qz, float qw, float px, float py, @SuppressWarnings("unused") void handleResize(final int aHandle, final float aWorldWidth, final float aWorldHeight) { runOnUiThread(() -> { - Widget widget = mWidgets.get(aHandle); - if (widget != null) { - widget.handleResizeEvent(aWorldWidth, aWorldHeight); - } else { - Log.e(LOGTAG, "Failed to find widget for resize: " + aHandle); - } + mResizableWidgets.forEach(widget -> widget.handleResizeEvent(aWorldWidth, aWorldHeight)); }); } @@ -912,8 +914,8 @@ public void setControllersVisible(final boolean aVisible) { } @Override - public void setBrowserSize(float targetWidth, float targetHeight) { - mBrowserWidget.resizeByMultiplier(targetWidth / targetHeight, 1.0f); + public void setWindowSize(float targetWidth, float targetHeight) { + mBrowserWidget.resizeByMultiplier(targetWidth / targetHeight, 1.0f); } @Override diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java index a1d89929e..3e3c8d8cc 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java @@ -41,7 +41,7 @@ public class BookmarksWidget extends UIWidget implements Application.ActivityLifecycleCallbacks, - WidgetManagerDelegate.UpdateListener, TrayListener, GeckoSession.NavigationDelegate { + TrayListener, GeckoSession.NavigationDelegate { private static final String ABOUT_BLANK = "about:blank"; @@ -75,7 +75,6 @@ private void initialize(Context aContext) { mAudio = AudioEngine.fromContext(aContext); ((Application)getApplicationContext()).registerActivityLifecycleCallbacks(this); - mWidgetManager.addUpdateListener(this); SessionStore.get().addNavigationListener(this); LayoutInflater inflater = LayoutInflater.from(aContext); @@ -88,6 +87,9 @@ private void initialize(Context aContext) { mBookmarkListModel = new BookmarkListViewModel(((Application)getApplicationContext())); subscribeUi(mBookmarkListModel.getBookmarks()); + + handleResizeEvent(SettingsStore.getInstance(getContext()).getBrowserWorldWidth(), + SettingsStore.getInstance(getContext()).getBrowserWorldHeight()); } @Override @@ -102,13 +104,6 @@ public void resizeByMultiplier(float aspect, float multiplier) { handleResizeEvent(targetWidth, targetHeight); } - @Override - public void handleResizeEvent(float aWorldWidth, float aWorldHeight) { - super.handleResizeEvent(aWorldWidth, aWorldHeight); - - mBrowserWidget.handleResizeEvent(aWorldWidth, aWorldHeight); - } - public void addListeners(BookmarkListener... listeners) { mBookmarkListeners.addAll(Arrays.asList(listeners)); } @@ -128,9 +123,10 @@ private void notifyBookmarksHidden() { @Override public void releaseWidget() { ((Application)getApplicationContext()).unregisterActivityLifecycleCallbacks(this); - mWidgetManager.removeUpdateListener(this); SessionStore.get().removeNavigationListener(this); + unstackSession(); + super.releaseWidget(); } @@ -241,6 +237,10 @@ public void hide(@HideFlags int aHideFlags) { protected void onDismiss() { super.onDismiss(); + unstackSession(); + } + + private void unstackSession() { if (SessionStore.get().getCurrentSessionId() == mSessionId) { if (SessionStore.get().canGoBack()) { SessionStore.get().goBack(); @@ -288,20 +288,6 @@ public void onActivityDestroyed(Activity activity) { } - // UpdateListener - - @Override - public void onWidgetUpdate(Widget aWidget) { - if (aWidget != mBrowserWidget || !mBrowserWidget.isVisible()) { - return; - } - - mWidgetPlacement.worldWidth = aWidget.getPlacement().worldWidth; - mWidgetPlacement.width = aWidget.getPlacement().width; - mWidgetPlacement.height = aWidget.getPlacement().height; - mWidgetManager.updateWidget(this); - } - // TrayListener @Override diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java index 7f54da121..b4cb57fd4 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java @@ -29,8 +29,7 @@ public class BrowserWidget extends UIWidget implements SessionStore.SessionChangeListener, - GeckoSession.ContentDelegate, GeckoSession.PromptDelegate, WidgetManagerDelegate.UpdateListener, - BookmarkListener { + GeckoSession.ContentDelegate, GeckoSession.PromptDelegate, BookmarkListener { private static final String LOGTAG = "VRB"; @@ -47,7 +46,6 @@ public class BrowserWidget extends UIWidget implements SessionStore.SessionChang private int mHeightBackup; private int mBorderWidth; private BookmarksWidget mBookmarksWidget; - private float mMultiplier; Runnable mFirstDrawCallback; private boolean mIsInVRVideoMode; @@ -59,7 +57,6 @@ public BrowserWidget(Context aContext, int aSessionId) { SessionStore.get().addSessionChangeListener(this); SessionStore.get().addPromptListener(this); SessionStore.get().addContentListener(this); - mWidgetManager.addUpdateListener(this); setFocusable(true); GeckoSession session = SessionStore.get().getSession(mSessionId); if (session != null) { @@ -69,8 +66,6 @@ public BrowserWidget(Context aContext, int aSessionId) { mWidgetPlacement = new WidgetPlacement(aContext); initializeWidgetPlacement(mWidgetPlacement); - mMultiplier = 1.0f; - handleResizeEvent(SettingsStore.getInstance(getContext()).getBrowserWorldWidth(), SettingsStore.getInstance(getContext()).getBrowserWorldHeight()); } @@ -173,7 +168,6 @@ public void disableVRVideoMode() { @Override public void resizeByMultiplier(float aspect, float multiplier) { mMultiplier = multiplier; - float worldWidth = WidgetPlacement.floatDimension(getContext(), R.dimen.window_world_width); float worldHeight = worldWidth / aspect; float area = worldWidth * worldHeight * multiplier; @@ -309,7 +303,6 @@ public void releaseWidget() { SessionStore.get().removeSessionChangeListener(this); SessionStore.get().removePromptListener(this); SessionStore.get().removeContentListener(this); - mWidgetManager.removeUpdateListener(this); GeckoSession session = SessionStore.get().getSession(mSessionId); if (session == null) { return; @@ -553,20 +546,6 @@ public void onBookmarksHidden() { show(); } - // UpdateListener - - @Override - public void onWidgetUpdate(Widget aWidget) { - if (aWidget != mBookmarksWidget || !mBookmarksWidget.isVisible()) { - return; - } - - mWidgetPlacement.worldWidth = aWidget.getPlacement().worldWidth; - mWidgetPlacement.width = aWidget.getPlacement().width; - mWidgetPlacement.height = aWidget.getPlacement().height; - mWidgetManager.updateWidget(this); - } - // GeckoSession.ContentDelegate @Override public void onTitleChange(GeckoSession session, String title) { diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java index fdfdf081f..d503392e7 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java @@ -524,12 +524,8 @@ private void exitVRVideo() { private void setResizePreset(float aMultiplier) { final float aspect = SettingsStore.getInstance(getContext()).getWindowAspect(); - if (mBrowserWidget.isVisible()) { - mBrowserWidget.resizeByMultiplier(aspect, aMultiplier); - - } else if (mBookmarksWidget.isVisible()) { - mBookmarksWidget.resizeByMultiplier(aspect, aMultiplier); - } + mBrowserWidget.resizeByMultiplier(aspect, aMultiplier); + mBookmarksWidget.resizeByMultiplier(aspect, aMultiplier); } public void showVoiceSearch() { diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WidgetManagerDelegate.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WidgetManagerDelegate.java index 26665a498..5bd38c8cd 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WidgetManagerDelegate.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WidgetManagerDelegate.java @@ -37,7 +37,7 @@ interface WorldClickListener { void popWorldBrightness(Object aKey); void setTrayVisible(boolean visible); void setControllersVisible(boolean visible); - void setBrowserSize(float targetWidth, float targetHeight); + void setWindowSize(float targetWidth, float targetHeight); void keyboardDismissed(); void updateEnvironment(); void updatePointerColor(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/options/DisplayOptionsWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/options/DisplayOptionsWidget.java index 33e8a4cc5..0766cafec 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/options/DisplayOptionsWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/options/DisplayOptionsWidget.java @@ -298,7 +298,7 @@ private void setWindowSize(int newWindowWidth, int newWindowHeight, boolean doAp SettingsStore.getInstance(getContext()).setWindowHeight(newWindowHeight); if (doApply) { - mWidgetManager.setBrowserSize(newWindowWidth, newWindowHeight); + mWidgetManager.setWindowSize(newWindowWidth, newWindowHeight); } } From b85cf56476134ee9389b8e34d188de750d85aeb1 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Fri, 23 Nov 2018 15:53:48 -0800 Subject: [PATCH 2/3] Rebase fixes --- .../shared/org/mozilla/vrbrowser/VRBrowserActivity.java | 5 +---- .../org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java | 5 ----- .../org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java | 6 ------ 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java index 1f9d8522c..fa87ae2ac 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java @@ -47,7 +47,6 @@ import org.mozilla.vrbrowser.ui.widgets.BookmarkListener; import org.mozilla.vrbrowser.ui.widgets.BookmarksWidget; import org.mozilla.vrbrowser.ui.widgets.BrowserWidget; -import org.mozilla.vrbrowser.ui.widgets.dialogs.CrashDialogWidget; import org.mozilla.vrbrowser.ui.widgets.KeyboardWidget; import org.mozilla.vrbrowser.ui.widgets.NavigationBarWidget; import org.mozilla.vrbrowser.ui.widgets.RootWidget; @@ -59,6 +58,7 @@ import org.mozilla.vrbrowser.ui.widgets.Widget; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement; +import org.mozilla.vrbrowser.ui.widgets.dialogs.CrashDialogWidget; import java.io.IOException; import java.net.URISyntaxException; @@ -66,7 +66,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; -import java.util.function.Consumer; import androidx.annotation.Keep; import androidx.annotation.NonNull; @@ -210,8 +209,6 @@ protected void initializeWorld() { // Bookmarks panel mBookmarksWidget = new BookmarksWidget(this); - mBookmarksWidget.setBrowserWidget(mBrowserWidget); - mBrowserWidget.setBookmarksWidget(mBookmarksWidget); // Create Browser navigation widget mNavigationBar = new NavigationBarWidget(this); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java index 3e3c8d8cc..016a953c3 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BookmarksWidget.java @@ -48,7 +48,6 @@ public class BookmarksWidget extends UIWidget implements Application.ActivityLif private BookmarksBinding mBinding; private BookmarkAdapter mBookmarkAdapter; private BookmarkListViewModel mBookmarkListModel; - private Widget mBrowserWidget; private List mBookmarkListeners; private AudioEngine mAudio; private int mSessionId; @@ -196,10 +195,6 @@ public void onChanged(List bookmarkEntities) { } }; - public void setBrowserWidget(Widget widget) { - mBrowserWidget = widget; - } - @Override public void show() { super.show(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java index b4cb57fd4..7b3db25bf 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/BrowserWidget.java @@ -45,7 +45,6 @@ public class BrowserWidget extends UIWidget implements SessionStore.SessionChang private int mWidthBackup; private int mHeightBackup; private int mBorderWidth; - private BookmarksWidget mBookmarksWidget; Runnable mFirstDrawCallback; private boolean mIsInVRVideoMode; @@ -109,10 +108,6 @@ public void hide(@HideFlags int aHideFlag) { clearFocus(); } - public void setBookmarksWidget(BookmarksWidget aWidget) { - mBookmarksWidget = aWidget; - } - public void pauseCompositor() { if (mDisplay == null) { return; @@ -167,7 +162,6 @@ public void disableVRVideoMode() { @Override public void resizeByMultiplier(float aspect, float multiplier) { - mMultiplier = multiplier; float worldWidth = WidgetPlacement.floatDimension(getContext(), R.dimen.window_world_width); float worldHeight = worldWidth / aspect; float area = worldWidth * worldHeight * multiplier; From c49db69ce3f30c858ec74feb6b5cba3c1cf20b13 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Mon, 26 Nov 2018 08:24:09 -0800 Subject: [PATCH 3/3] Fixes not exiting resize mode when bookmarks is are shown. --- .../common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java index fa87ae2ac..83d3a5e3b 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java @@ -235,7 +235,7 @@ protected void initializeWorld() { mTray = new TrayWidget(this); // Add widget listeners - mTray.addListeners(new TrayListener[]{mBookmarksWidget, mNavigationBar}); + mTray.addListeners(new TrayListener[]{mNavigationBar, mBookmarksWidget}); mBookmarksWidget.addListeners(new BookmarkListener[]{mBrowserWidget, mNavigationBar, mTray}); mResizableWidgets.addAll(Arrays.asList(mBrowserWidget, mBookmarksWidget));