tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mmobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt | 52+++++++++++++++++++++++++++++++---------------------
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,