commit 16d56a67ab077be92ac64cc8acad05856327994f
parent 5536a33905a95b7c5df65608341a925f9145b6ad
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date: Fri, 10 Oct 2025 12:18:05 +0000
Bug 1993564 - Remove MainCoroutineRule from GeckoEngineSessionTest. r=android-reviewers,anpopa
Differential Revision: https://phabricator.services.mozilla.com/D268256
Diffstat:
1 file changed, 31 insertions(+), 21 deletions(-)
diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt b/mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt
@@ -11,6 +11,7 @@ import android.os.Looper.getMainLooper
import android.os.Message
import android.view.WindowManager
import androidx.test.ext.junit.runners.AndroidJUnit4
+import kotlinx.coroutines.test.runTest
import mozilla.components.browser.engine.gecko.ext.geckoTrackingProtectionPermission
import mozilla.components.browser.engine.gecko.ext.isExcludedForTrackingProtection
import mozilla.components.browser.engine.gecko.permission.geckoContentPermission
@@ -48,8 +49,6 @@ import mozilla.components.support.test.argumentCaptor
import mozilla.components.support.test.eq
import mozilla.components.support.test.expectException
import mozilla.components.support.test.mock
-import mozilla.components.support.test.rule.MainCoroutineRule
-import mozilla.components.support.test.rule.runTestOnMain
import mozilla.components.support.test.whenever
import mozilla.components.support.utils.DownloadUtils.RESPONSE_CODE_SUCCESS
import mozilla.components.support.utils.ThreadUtils
@@ -62,7 +61,6 @@ import org.junit.Assert.assertNull
import org.junit.Assert.assertSame
import org.junit.Assert.assertTrue
import org.junit.Before
-import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
@@ -114,9 +112,6 @@ typealias GeckoCookieBehavior = ContentBlocking.CookieBehavior
@RunWith(AndroidJUnit4::class)
class GeckoEngineSessionTest {
- @get:Rule
- val coroutinesTestRule = MainCoroutineRule()
-
private lateinit var runtime: GeckoRuntime
private lateinit var geckoSession: GeckoSession
private lateinit var geckoSessionProvider: () -> GeckoSession
@@ -1024,7 +1019,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `notifies configured history delegate of title changes`() = runTestOnMain {
+ fun `notifies configured history delegate of title changes`() = runTest {
val engineSession = GeckoEngineSession(
runtime,
geckoSessionProvider = geckoSessionProvider,
@@ -1036,23 +1031,28 @@ class GeckoEngineSessionTest {
// Nothing breaks if history delegate isn't configured.
contentDelegate.value.onTitleChange(geckoSession, "Hello World!")
+ testScheduler.advanceUntilIdle()
engineSession.settings.historyTrackingDelegate = historyTrackingDelegate
whenever(historyTrackingDelegate.shouldStoreUri(eq("https://www.mozilla.com"))).thenReturn(true)
contentDelegate.value.onTitleChange(geckoSession, "Hello World!")
+ testScheduler.advanceUntilIdle()
+
verify(historyTrackingDelegate, never()).onTitleChanged(anyString(), anyString())
// This sets the currentUrl.
navigationDelegate.value.onLocationChange(geckoSession, "https://www.mozilla.com", emptyList(), false)
contentDelegate.value.onTitleChange(geckoSession, "Hello World!")
+ testScheduler.advanceUntilIdle()
+
verify(historyTrackingDelegate).onTitleChanged(eq("https://www.mozilla.com"), eq("Hello World!"))
verify(historyTrackingDelegate).shouldStoreUri(eq("https://www.mozilla.com"))
}
@Test
- fun `does not notify configured history delegate of title changes for private sessions`() = runTestOnMain {
+ fun `does not notify configured history delegate of title changes for private sessions`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1084,7 +1084,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `GIVEN an app initiated request WHEN the user swipe back or launches the browser THEN the tab should display the correct page`() = runTestOnMain {
+ fun `GIVEN an app initiated request WHEN the user swipe back or launches the browser THEN the tab should display the correct page`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1152,7 +1152,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `GIVEN an app initiated request AND initial load WHEN user swipe back THEN the tab should display the loaded page`() = runTestOnMain {
+ fun `GIVEN an app initiated request AND initial load WHEN user swipe back THEN the tab should display the loaded page`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1179,7 +1179,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `notifies configured history delegate of preview image URL changes`() = runTestOnMain {
+ fun `notifies configured history delegate of preview image URL changes`() = runTest {
val engineSession = GeckoEngineSession(
runtime,
geckoSessionProvider = geckoSessionProvider,
@@ -1195,23 +1195,28 @@ class GeckoEngineSessionTest {
// Nothing breaks if history delegate isn't configured.
contentDelegate.value.onPreviewImage(geckoSession, previewImageUrl)
+ testScheduler.advanceUntilIdle()
engineSession.settings.historyTrackingDelegate = historyTrackingDelegate
whenever(historyTrackingDelegate.shouldStoreUri(eq("https://www.mozilla.com"))).thenReturn(true)
contentDelegate.value.onPreviewImage(geckoSession, previewImageUrl)
+ testScheduler.advanceUntilIdle()
+
verify(historyTrackingDelegate, never()).onPreviewImageChange(anyString(), anyString())
// This sets the currentUrl.
navigationDelegate.value.onLocationChange(geckoSession, "https://www.mozilla.com", emptyList(), false)
contentDelegate.value.onPreviewImage(geckoSession, previewImageUrl)
+ testScheduler.advanceUntilIdle()
+
verify(historyTrackingDelegate).onPreviewImageChange(eq("https://www.mozilla.com"), eq(previewImageUrl))
verify(historyTrackingDelegate).shouldStoreUri(eq("https://www.mozilla.com"))
}
@Test
- fun `does not notify configured history delegate of preview image URL changes for private sessions`() = runTestOnMain {
+ fun `does not notify configured history delegate of preview image URL changes for private sessions`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1224,6 +1229,7 @@ class GeckoEngineSessionTest {
// Nothing breaks if history delegate isn't configured.
contentDelegate.value.onPreviewImage(geckoSession, "https://test.com/og-image-url")
+ testScheduler.advanceUntilIdle()
engineSession.settings.historyTrackingDelegate = historyTrackingDelegate
@@ -1231,6 +1237,8 @@ class GeckoEngineSessionTest {
engineSession.register(observer)
contentDelegate.value.onPreviewImage(geckoSession, "https://test.com/og-image-url")
+ testScheduler.advanceUntilIdle()
+
verify(historyTrackingDelegate, never()).onPreviewImageChange(anyString(), anyString())
verify(observer).onPreviewImageChange("https://test.com/og-image-url")
@@ -1238,12 +1246,14 @@ class GeckoEngineSessionTest {
progressDelegate.value.onPageStart(geckoSession, "https://www.mozilla.com")
contentDelegate.value.onPreviewImage(geckoSession, "https://test.com/og-image.jpg")
+ testScheduler.advanceUntilIdle()
+
verify(historyTrackingDelegate, never()).onPreviewImageChange(anyString(), anyString())
verify(observer).onPreviewImageChange("https://test.com/og-image.jpg")
}
@Test
- fun `does not notify configured history delegate for top-level visits to error pages`() = runTestOnMain {
+ fun `does not notify configured history delegate for top-level visits to error pages`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1268,7 +1278,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `notifies configured history delegate of visits`() = runTestOnMain {
+ fun `notifies configured history delegate of visits`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1287,7 +1297,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `notifies configured history delegate of reloads`() = runTestOnMain {
+ fun `notifies configured history delegate of reloads`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1306,7 +1316,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `checks with the delegate before trying to record a visit`() = runTestOnMain {
+ fun `checks with the delegate before trying to record a visit`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1334,7 +1344,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `correctly processes redirect visit flags`() = runTestOnMain {
+ fun `correctly processes redirect visit flags`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1396,7 +1406,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `does not notify configured history delegate of visits for private sessions`() = runTestOnMain {
+ fun `does not notify configured history delegate of visits for private sessions`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1415,7 +1425,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `requests visited URLs from configured history delegate`() = runTestOnMain {
+ fun `requests visited URLs from configured history delegate`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1437,7 +1447,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `does not request visited URLs from configured history delegate in private sessions`() = runTestOnMain {
+ fun `does not request visited URLs from configured history delegate in private sessions`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,
@@ -1456,7 +1466,7 @@ class GeckoEngineSessionTest {
}
@Test
- fun `notifies configured history delegate of state changes`() = runTestOnMain {
+ fun `notifies configured history delegate of state changes`() = runTest {
val engineSession = GeckoEngineSession(
mock(),
geckoSessionProvider = geckoSessionProvider,