Skip to content

Commit 18d8eeb

Browse files
committed
Merge branch 'hotfix/5.201.1'
2 parents 6d8acec + fa7740c commit 18d8eeb

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

app/version/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION=5.201.0
1+
VERSION=5.201.1

autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/engagement/EngagementPasswordAddedListener.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,15 @@ class EngagementPasswordAddedListener @Inject constructor(
3838
private val pixel: Pixel,
3939
) : PasswordStoreEventListener {
4040

41+
// keep in-memory state to avoid sending the pixel multiple times if called repeatedly in a short time
42+
private var credentialAdded = false
43+
44+
@Synchronized
4145
override fun onCredentialAdded(id: Long) {
46+
if (credentialAdded) return
47+
48+
credentialAdded = true
49+
4250
appCoroutineScope.launch(dispatchers.io()) {
4351
val daysInstalled = userBrowserProperties.daysSinceInstalled()
4452
Timber.v("onCredentialAdded. daysInstalled: $daysInstalled")

autofill/autofill-impl/src/test/java/com/duckduckgo/autofill/impl/engagement/EngagementPasswordAddedListenerTest.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class EngagementPasswordAddedListenerTest {
3131
fun whenDaysInstalledLessThan7ThenPixelSent() {
3232
whenever(userBrowserProperties.daysSinceInstalled()).thenReturn(0)
3333
testee.onCredentialAdded(0)
34-
verifyPixelSent()
34+
verifyPixelSentOnce()
3535
}
3636

3737
@Test
@@ -48,7 +48,16 @@ class EngagementPasswordAddedListenerTest {
4848
verifyPixelNotSent()
4949
}
5050

51-
private fun verifyPixelSent() {
51+
@Test
52+
fun whenCalledMultipleTimesThenOnlySendsPixelOnce() {
53+
whenever(userBrowserProperties.daysSinceInstalled()).thenReturn(0)
54+
repeat(10) {
55+
testee.onCredentialAdded(0)
56+
}
57+
verifyPixelSentOnce()
58+
}
59+
60+
private fun verifyPixelSentOnce() {
5261
verify(pixel).fire(AUTOFILL_ENGAGEMENT_ONBOARDED_USER, type = UNIQUE)
5362
}
5463

0 commit comments

Comments
 (0)