For #17724: Wait for tab to be fully created before showing ETP Onboarding if ETP is active

upstream-sync
hwinnemo 3 years ago committed by ekager
parent f4a7b4c066
commit c488bb0e11

@ -62,9 +62,9 @@ class TrackingProtectionOverlay(
}.ifChanged { tab ->
tab.content.loading
}
.collect { tab ->
onLoadingStateChanged(tab)
}
.collect { tab ->
onLoadingStateChanged(tab)
}
}
}
@ -77,7 +77,10 @@ class TrackingProtectionOverlay(
@VisibleForTesting
internal fun onLoadingStateChanged(tab: SessionState) {
if (!tab.content.loading && shouldShowTrackingProtectionOnboarding(tab)) {
if (shouldShowTrackingProtectionOnboarding(tab) &&
tab.content.progress == FULL_PROGRESS &&
settings.shouldUseTrackingProtection
) {
showTrackingProtectionOnboarding()
}
}
@ -85,7 +88,7 @@ class TrackingProtectionOverlay(
private fun shouldShowTrackingProtectionOnboarding(tab: SessionState) =
tab.trackingProtection.enabled &&
tab.trackingProtection.blockedTrackers.isNotEmpty() &&
settings.shouldShowTrackingProtectionCfr
settings.shouldShowTrackingProtectionCfr
@Suppress("MagicNumber", "InflateParams")
private fun showTrackingProtectionOnboarding() {
@ -184,6 +187,7 @@ class TrackingProtectionOverlay(
}
private companion object {
private const val FULL_PROGRESS = 100
private const val BUTTON_INCREASE_DPS = 12
}
}

@ -156,7 +156,9 @@ class TrackingProtectionOverlayTest {
fun `show onboarding when trackers are blocked`() {
every { toolbar.hasWindowFocus() } returns true
every { settings.shouldShowTrackingProtectionCfr } returns true
every { session.content.progress } returns 100
every { session.content.loading } returns false
every { settings.shouldUseTrackingProtection } returns true
every { session.trackingProtection } returns TrackingProtectionState(
enabled = true,
blockedTrackers = listOf(mockk())
@ -165,6 +167,20 @@ class TrackingProtectionOverlayTest {
verify { settings.incrementTrackingProtectionOnboardingCount() }
}
@Test
fun `no-op when trackers are blocked but not finished loading`() {
every { toolbar.hasWindowFocus() } returns true
every { settings.shouldShowTrackingProtectionCfr } returns true
every { session.content.progress } returns 50
every { session.content.loading } returns false
every { session.trackingProtection } returns TrackingProtectionState(
enabled = true,
blockedTrackers = listOf(mockk())
)
overlay.onLoadingStateChanged(session)
verify(exactly = 0) { settings.incrementTrackingProtectionOnboardingCount() }
}
@Test
fun `no-op when toolbar doesn't have focus`() {
every { toolbar.hasWindowFocus() } returns false

Loading…
Cancel
Save