Skip to content

Commit 7c4b465

Browse files
gabrielluongpchevrel@mozilla.com
authored andcommitted
Bug 1973324 - Part 1: Persists private mode when the user is still in private mode and has private tabs opened on warm start r=android-reviewers,Roger a=pascalc
Differential Revision: https://phabricator.services.mozilla.com/D255452
1 parent 2bdfb7c commit 7c4b465

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,6 +1114,13 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
11141114
return BrowsingMode.fromBoolean(isPrivate = startPrivateMode)
11151115
}
11161116
}
1117+
1118+
if (settings().lastKnownMode.isPrivate &&
1119+
components.core.store.state.getNormalOrPrivateTabs(private = true).isNotEmpty()
1120+
) {
1121+
return BrowsingMode.Private
1122+
}
1123+
11171124
return BrowsingMode.Normal
11181125
}
11191126

mobile/android/fenix/app/src/test/java/org/mozilla/fenix/HomeActivityTest.kt

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,41 @@ class HomeActivityTest {
8686
}
8787

8888
@Test
89-
fun `GIVEN browsing mode is not set by intent WHEN getModeFromIntentOrLastKnown is called THEN returns normal browsing mode`() {
89+
fun `GIVEN browsing mode is not set by intent and private mode with a tab persisted WHEN getModeFromIntentOrLastKnown is called THEN returns normal browsing mode`() {
90+
val browserStore = BrowserStore(
91+
BrowserState(
92+
tabs = listOf(
93+
createTab(url = "https://mozilla.org", private = true),
94+
),
95+
),
96+
)
97+
9098
every { testContext.settings() } returns Settings(testContext)
9199
every { activity.applicationContext } returns testContext
100+
every { testContext.components.core.store } returns browserStore
101+
92102
testContext.settings().lastKnownMode = BrowsingMode.Private
93103

94-
assertEquals(BrowsingMode.Normal, activity.getModeFromIntentOrLastKnown(null))
104+
assertEquals(BrowsingMode.Private, activity.getModeFromIntentOrLastKnown(null))
95105

96106
testContext.settings().lastKnownMode = BrowsingMode.Normal
97107

98108
assertEquals(BrowsingMode.Normal, activity.getModeFromIntentOrLastKnown(null))
99109
}
100110

111+
@Test
112+
fun `GIVEN last known mode is private mode and no tabs persisted WHEN getModeFromIntentOrLastKnown is called THEN returns normal browsing mode`() {
113+
val browserStore = BrowserStore()
114+
115+
every { testContext.settings() } returns Settings(testContext)
116+
every { activity.applicationContext } returns testContext
117+
every { testContext.components.core.store } returns browserStore
118+
119+
testContext.settings().lastKnownMode = BrowsingMode.Private
120+
121+
assertEquals(BrowsingMode.Normal, activity.getModeFromIntentOrLastKnown(null))
122+
}
123+
101124
@Test
102125
fun `getModeFromIntentOrLastKnown returns mode from intent when set`() {
103126
every { testContext.settings() } returns Settings(testContext)

0 commit comments

Comments
 (0)