From 7c8f2166d7dc71743016d1abd1be9160c7f2c499 Mon Sep 17 00:00:00 2001 From: "Randall E. Barker" Date: Thu, 27 Feb 2020 11:37:41 -0800 Subject: [PATCH] Fix user agent override This patch enables e10s which fixes a bug in setting the user agent in GV. Additionally, it remove the option for making the desktop user agent the default. The user must use the desktop switch in the hamburger menu now. Fixes #2885 --- .../org/mozilla/vrbrowser/browser/SettingsStore.java | 9 +++++++-- .../org/mozilla/vrbrowser/browser/engine/Session.java | 3 ++- .../vrbrowser/browser/engine/SessionSettings.java | 4 ++-- .../vrbrowser/ui/widgets/NavigationBarWidget.java | 5 +++-- .../ui/widgets/settings/DisplayOptionsView.java | 2 +- app/src/main/res/layout/options_display.xml | 2 +- app/src/main/res/values/non_L10n.xml | 4 ++-- app/src/main/res/values/options_values.xml | 8 ++++++-- 8 files changed, 24 insertions(+), 13 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java b/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java index 6bb75a338..9a0b62600 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java @@ -49,7 +49,7 @@ SettingsStore getInstance(final @NonNull Context aContext) { public final static boolean REMOTE_DEBUGGING_DEFAULT = false; public final static boolean CONSOLE_LOGS_DEFAULT = false; public final static boolean ENV_OVERRIDE_DEFAULT = false; - public final static boolean MULTIPROCESS_DEFAULT = false; + public final static boolean MULTIPROCESS_DEFAULT = true; public final static boolean UI_HARDWARE_ACCELERATION_DEFAULT = true; public final static boolean PERFORMANCE_MONITOR_DEFAULT = true; public final static boolean DRM_PLAYBACK_DEFAULT = false; @@ -277,8 +277,13 @@ public int getUaMode() { } public void setUaMode(int mode) { + int checkedMode = mode; + if ((mode != GeckoSessionSettings.USER_AGENT_MODE_VR) && (mode != GeckoSessionSettings.USER_AGENT_MODE_MOBILE)) { + Log.e(LOGTAG, "User agent mode: " + mode + " is not supported."); + checkedMode = UA_MODE_DEFAULT; + } SharedPreferences.Editor editor = mPrefs.edit(); - editor.putInt(mContext.getString(R.string.settings_key_user_agent_version), mode); + editor.putInt(mContext.getString(R.string.settings_key_user_agent_version), checkedMode); editor.commit(); } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/Session.java b/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/Session.java index 59b6acc1e..d7a71c331 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/Session.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/Session.java @@ -817,7 +817,8 @@ public void setUaMode(int mode) { mState.mSettings.setViewportMode(GeckoSessionSettings.VIEWPORT_MODE_MOBILE); } mState.mSession.getSettings().setViewportMode(mState.mSettings.getViewportMode()); - mState.mSession.loadUri(overrideUri != null ? overrideUri : mState.mUri, GeckoSession.LOAD_FLAGS_BYPASS_CACHE | GeckoSession.LOAD_FLAGS_REPLACE_HISTORY); + // FIXME The GeckoSession.LOAD_FLAGS_REPLACE_HISTORY flag fails due to https://bugzilla.mozilla.org/show_bug.cgi?id=1618664 + mState.mSession.loadUri(overrideUri != null ? overrideUri : mState.mUri, GeckoSession.LOAD_FLAGS_BYPASS_CACHE); // | GeckoSession.LOAD_FLAGS_REPLACE_HISTORY); } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/SessionSettings.java b/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/SessionSettings.java index 7aae77b9b..2100edf5e 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/SessionSettings.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/browser/engine/SessionSettings.java @@ -90,7 +90,7 @@ public Builder withPrivateBrowsing(boolean enabled) { return this; } - public Builder withTrackingProteccion(boolean isTrackingProtectionEnabled){ + public Builder withTrackingProtection(boolean isTrackingProtectionEnabled){ this.isTrackingProtectionEnabled = isTrackingProtectionEnabled; return this; } @@ -127,7 +127,7 @@ public Builder withDefaultSettings(Context context) { return new SessionSettings.Builder() .withPrivateBrowsing(false) - .withTrackingProteccion(SettingsStore.getInstance(context).isTrackingProtectionEnabled()) + .withTrackingProtection(SettingsStore.getInstance(context).isTrackingProtectionEnabled()) .withSuspendMediaWhenInactive(true) .withUserAgent(ua) .withViewport(viewport) 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 7881d2e66..922fa85e9 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 @@ -1005,8 +1005,9 @@ public void onResize() { public void onSwitchMode() { int uaMode = mAttachedWindow.getSession().getUaMode(); if (uaMode == GeckoSessionSettings.USER_AGENT_MODE_DESKTOP) { - mHamburgerMenu.setUAMode(GeckoSessionSettings.USER_AGENT_MODE_MOBILE); - mAttachedWindow.getSession().setUaMode(GeckoSessionSettings.USER_AGENT_MODE_MOBILE); + final int defaultUaMode = SettingsStore.getInstance(mAppContext).getUaMode(); + mHamburgerMenu.setUAMode(defaultUaMode); + mAttachedWindow.getSession().setUaMode(defaultUaMode); } else { mHamburgerMenu.setUAMode(GeckoSessionSettings.USER_AGENT_MODE_DESKTOP); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java index 82b88ba47..1610571dd 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java @@ -254,7 +254,7 @@ private void setUaMode(int checkId, boolean doApply) { mBinding.uaRadio.setChecked(checkId, doApply); mBinding.uaRadio.setOnCheckedChangeListener(mUaModeListener); - SettingsStore.getInstance(getContext()).setUaMode(checkId); + SettingsStore.getInstance(getContext()).setUaMode((Integer)mBinding.uaRadio.getValueForId(checkId)); } private void setMSAAMode(int checkedId, boolean doApply) { diff --git a/app/src/main/res/layout/options_display.xml b/app/src/main/res/layout/options_display.xml index 10b19991b..6e22d4be6 100644 --- a/app/src/main/res/layout/options_display.xml +++ b/app/src/main/res/layout/options_display.xml @@ -58,7 +58,7 @@ android:layout_height="wrap_content" app:description="@string/developer_options_msaa" app:options="@array/developer_options_msaa" - app:values="@array/developer_options_ua_mode_values" /> + app:values="@array/developer_options_msaa_mode_values" /> settings_remote_debugging settings_console_logs settings_environment_override - settings_environment_multiprocess_e10s_v2 + settings_environment_multiprocess_e10s_v3 settings_performance_monitor settings_environment_servo settings_key_drm_playback settings_tracking_protection settings_key_speech_data_collection settings_key_speech_data_collection_accept - settings_user_agent_version + settings_user_agent_version_v2 settings_touch_mode settings_display_density settings_display_dpi> diff --git a/app/src/main/res/values/options_values.xml b/app/src/main/res/values/options_values.xml index 0ab3c7aff..e4a2f5978 100644 --- a/app/src/main/res/values/options_values.xml +++ b/app/src/main/res/values/options_values.xml @@ -52,13 +52,11 @@ @string/developer_options_ua_mobile - @string/developer_options_ua_desktop @string/developer_options_ua_vr 0 - 1 2 @@ -69,6 +67,12 @@ @string/developer_options_msaa_4 + + 0 + 1 + 2 + + @string/developer_options_foveated_disabled