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

Commit 4f9f8cf

Browse files
agibluemarvin
authored andcommitted
Restore userAgentOverride when restoring state (#1125) (#1913)
When restoring state using session.restoreState, `onLoadRequest` is not called which causes FxR's UA override logic to not run. To fix this, we remember the UA override string and restore it.
1 parent 1e408bf commit 4f9f8cf

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

app/src/common/shared/org/mozilla/vrbrowser/browser/engine/SessionSettings.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class SessionSettings {
1414
private int userAgentMode;
1515
private int viewportMode;
1616
private boolean isServoEnabled;
17+
private String userAgentOverride;
1718

1819
private SessionSettings(@NotNull Builder builder) {
1920
this.isMultiprocessEnabled = builder.isMultiprocessEnabled;
@@ -22,6 +23,7 @@ private SessionSettings(@NotNull Builder builder) {
2223
this.userAgentMode = builder.userAgentMode;
2324
this.viewportMode = builder.viewportMode;
2425
this.isServoEnabled = builder.isServoEnabled;
26+
this.userAgentOverride = builder.userAgentOverride;
2527
}
2628

2729
public boolean isMultiprocessEnabled() {
@@ -52,6 +54,14 @@ public void setUserAgentMode(int mode) {
5254
userAgentMode = mode;
5355
}
5456

57+
public void setUserAgentOverride(String userAgentOverride) {
58+
this.userAgentOverride = userAgentOverride;
59+
}
60+
61+
public String getUserAgentOverride() {
62+
return userAgentOverride;
63+
}
64+
5565
public int getViewportMode() { return viewportMode; }
5666

5767
public void setViewportMode(final int mode) { viewportMode = mode; }
@@ -72,6 +82,7 @@ public static class Builder {
7282
private int userAgentMode;
7383
private int viewportMode;
7484
private boolean isServoEnabled;
85+
private String userAgentOverride;
7586

7687
public Builder() {
7788
}
@@ -106,6 +117,11 @@ public Builder withServo(boolean isServoEnabled){
106117
return this;
107118
}
108119

120+
public Builder withUserAgentOverride(String userAgentOverride) {
121+
this.userAgentOverride = userAgentOverride;
122+
return this;
123+
}
124+
109125
public Builder withDefaultSettings(Context context) {
110126
return new SessionSettings.Builder()
111127
.withMultiprocess(SettingsStore.getInstance(context).isMultiprocessEnabled())

app/src/common/shared/org/mozilla/vrbrowser/browser/engine/SessionStack.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ public void restore(SessionStack store, int currentSessionId) {
280280
.useMultiprocess(state.mSettings.isMultiprocessEnabled())
281281
.usePrivateMode(mUsePrivateMode)
282282
.userAgentMode(state.mSettings.getUserAgentMode())
283+
.userAgentOverride(state.mSettings.getUserAgentOverride())
283284
.suspendMediaWhenInactive(state.mSettings.isSuspendMediaWhenInactiveEnabled())
284285
.useTrackingProtection(state.mSettings.isTrackingProtectionEnabled())
285286
.build();
@@ -366,6 +367,7 @@ private int createSession(@NonNull SessionSettings aSettings) {
366367

367368
state.mSession.getSettings().setSuspendMediaWhenInactive(aSettings.isSuspendMediaWhenInactiveEnabled());
368369
state.mSession.getSettings().setUserAgentMode(aSettings.getUserAgentMode());
370+
state.mSession.getSettings().setUserAgentOverride(aSettings.getUserAgentOverride());
369371
state.mSession.setNavigationDelegate(this);
370372
state.mSession.setProgressDelegate(this);
371373
state.mSession.setContentDelegate(this);
@@ -954,8 +956,12 @@ public void onCanGoForward(@NonNull GeckoSession aSession, boolean aCanGoForward
954956
}
955957

956958
if (aSession == mCurrentSession) {
959+
SessionState state = mSessions.get(getCurrentSessionId());
957960
Log.d(LOGTAG, "Testing for UA override");
958-
aSession.getSettings().setUserAgentOverride(mUserAgentOverride.lookupOverride(uri));
961+
962+
final String userAgentOverride = mUserAgentOverride.lookupOverride(uri);
963+
aSession.getSettings().setUserAgentOverride(userAgentOverride);
964+
state.mSettings.setUserAgentOverride(userAgentOverride);
959965
}
960966

961967
if (mContext.getString(R.string.about_private_browsing).equalsIgnoreCase(uri)) {

0 commit comments

Comments
 (0)