Bug 1971665 - Avoid mocking lambda functions in mockk tests. r=android-reviewers,jonalmeida a=dmeehan
Differential Revision: https://phabricator.services.mozilla.com/D253578
This commit is contained in:
committed by
dmeehan@mozilla.com
parent
cea6d2c3b0
commit
fe50381f10
@@ -5,6 +5,7 @@
|
|||||||
package org.mozilla.fenix.trackingprotection
|
package org.mozilla.fenix.trackingprotection
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.annotation.VisibleForTesting
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -50,37 +51,57 @@ class TrackingProtectionPanelInteractor(
|
|||||||
override fun selectTrackingProtectionSettings() {
|
override fun selectTrackingProtectionSettings() {
|
||||||
openTrackingProtectionSettings.invoke()
|
openTrackingProtectionSettings.invoke()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the navigation after checking for exceptions in tracking protection.
|
||||||
|
* This function is responsible for navigating to the QuickSettingsSheetDialogFragment
|
||||||
|
* after determining the state of tracking protection and cookie banners for the given tab.
|
||||||
|
*
|
||||||
|
* It first retrieves the cookie banner UI mode for the current tab.
|
||||||
|
* Then, on the main thread, it pops the back stack and navigates to the
|
||||||
|
* QuickSettingsSheetDialogFragment, passing along various details about the tab,
|
||||||
|
* site permissions, and tracking protection status.
|
||||||
|
*
|
||||||
|
* @param tab The current [SessionState] representing the active tab.
|
||||||
|
* @param containsException A boolean indicating whether the current site has an exception
|
||||||
|
* for tracking protection.
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
internal fun handleNavigationAfterCheck(tab: SessionState, containsException: Boolean) {
|
||||||
|
ioScope.launch {
|
||||||
|
val cookieBannerUIMode = cookieBannersStorage.getCookieBannerUIMode(
|
||||||
|
context,
|
||||||
|
tab,
|
||||||
|
)
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
fragment.runIfFragmentIsAttached {
|
||||||
|
navController().popBackStack()
|
||||||
|
val isTrackingProtectionEnabled =
|
||||||
|
tab.trackingProtection.enabled && !containsException
|
||||||
|
val directions =
|
||||||
|
BrowserFragmentDirections.actionGlobalQuickSettingsSheetDialogFragment(
|
||||||
|
sessionId = tab.id,
|
||||||
|
url = tab.content.url,
|
||||||
|
title = tab.content.title,
|
||||||
|
isLocalPdf = tab.content.url.isContentUrl(),
|
||||||
|
isSecured = tab.content.securityInfo.secure,
|
||||||
|
sitePermissions = sitePermissions,
|
||||||
|
gravity = gravity,
|
||||||
|
certificateName = tab.content.securityInfo.issuer,
|
||||||
|
permissionHighlights = tab.content.permissionHighlights,
|
||||||
|
isTrackingProtectionEnabled = isTrackingProtectionEnabled,
|
||||||
|
cookieBannerUIMode = cookieBannerUIMode,
|
||||||
|
)
|
||||||
|
navController().navigate(directions)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
getCurrentTab()?.let { tab ->
|
getCurrentTab()?.let { tab ->
|
||||||
context.components.useCases.trackingProtectionUseCases.containsException(tab.id) { contains ->
|
context.components.useCases.trackingProtectionUseCases.containsException(tab.id) { contains ->
|
||||||
ioScope.launch {
|
handleNavigationAfterCheck(tab, contains)
|
||||||
val cookieBannerUIMode = cookieBannersStorage.getCookieBannerUIMode(
|
|
||||||
context,
|
|
||||||
tab,
|
|
||||||
)
|
|
||||||
withContext(Dispatchers.Main) {
|
|
||||||
fragment.runIfFragmentIsAttached {
|
|
||||||
navController().popBackStack()
|
|
||||||
val isTrackingProtectionEnabled =
|
|
||||||
tab.trackingProtection.enabled && !contains
|
|
||||||
val directions =
|
|
||||||
BrowserFragmentDirections.actionGlobalQuickSettingsSheetDialogFragment(
|
|
||||||
sessionId = tab.id,
|
|
||||||
url = tab.content.url,
|
|
||||||
title = tab.content.title,
|
|
||||||
isLocalPdf = tab.content.url.isContentUrl(),
|
|
||||||
isSecured = tab.content.securityInfo.secure,
|
|
||||||
sitePermissions = sitePermissions,
|
|
||||||
gravity = gravity,
|
|
||||||
certificateName = tab.content.securityInfo.issuer,
|
|
||||||
permissionHighlights = tab.content.permissionHighlights,
|
|
||||||
isTrackingProtectionEnabled = isTrackingProtectionEnabled,
|
|
||||||
cookieBannerUIMode = cookieBannerUIMode,
|
|
||||||
)
|
|
||||||
navController().navigate(directions)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,14 +87,6 @@ class TrackingProtectionPanelInteractorTest {
|
|||||||
every { fragment.context } returns context
|
every { fragment.context } returns context
|
||||||
every { context.components.useCases.trackingProtectionUseCases } returns trackingProtectionUseCases
|
every { context.components.useCases.trackingProtectionUseCases } returns trackingProtectionUseCases
|
||||||
every { context.components.appStore.state.isPrivateScreenLocked } returns true
|
every { context.components.appStore.state.isPrivateScreenLocked } returns true
|
||||||
|
|
||||||
val onComplete = slot<(Boolean) -> Unit>()
|
|
||||||
every {
|
|
||||||
trackingProtectionUseCases.containsException.invoke(
|
|
||||||
"testID",
|
|
||||||
capture(onComplete),
|
|
||||||
)
|
|
||||||
}.answers { onComplete.captured.invoke(true) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -141,7 +133,7 @@ class TrackingProtectionPanelInteractorTest {
|
|||||||
every { context.settings().shouldUseCookieBannerPrivateMode } returns false
|
every { context.settings().shouldUseCookieBannerPrivateMode } returns false
|
||||||
val directionsSlot = slot<NavDirections>()
|
val directionsSlot = slot<NavDirections>()
|
||||||
|
|
||||||
interactor.onBackPressed()
|
interactor.handleNavigationAfterCheck(tab, true)
|
||||||
|
|
||||||
coVerify {
|
coVerify {
|
||||||
navController.popBackStack()
|
navController.popBackStack()
|
||||||
|
|||||||
Reference in New Issue
Block a user