Skip to content

Commit fba2cda

Browse files
authored
Add New Address Bar Option cancelled pixel (#6831)
Task/Issue URL: https://app.asana.com/1/137249556945/project/488551667048375/task/1211427333122830?focus=true ### Description - Adds a pixel if the New Address Bar Option dialog is cancelled (i.e. by swiping or hardware back) ### Steps to test this PR - [x] Fresh install the app - [x] Complete onboarding (Use "I’ve been here before", **not** “Skip Onboarding”) and kill the app - [x] When the New Address Bar Option Dialog shows, swipe back - [x] Verify pixel sent: `m_aichat_new_address_bar_picker_cancelled`
1 parent 8a26253 commit fba2cda

File tree

5 files changed

+39
-0
lines changed

5 files changed

+39
-0
lines changed

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/RealDuckChat.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBa
4141
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarSelection
4242
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarSelection.SEARCH_AND_AI
4343
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName
44+
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED
4445
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED
4546
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED
4647
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW
@@ -557,6 +558,10 @@ class RealDuckChat @Inject constructor(
557558
override fun onNotNow() {
558559
pixel.fire(DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW)
559560
}
561+
562+
override fun onCancelled() {
563+
pixel.fire(DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED)
564+
}
560565
},
561566
).show()
562567
}

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/feature/DuckChatFeature.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.duckduckgo.anvil.annotations.ContributesRemoteFeature
2020
import com.duckduckgo.di.scopes.AppScope
2121
import com.duckduckgo.feature.toggles.api.Toggle
2222
import com.duckduckgo.feature.toggles.api.Toggle.DefaultFeatureValue
23+
import com.duckduckgo.feature.toggles.api.Toggle.InternalAlwaysEnabled
2324

2425
@ContributesRemoteFeature(
2526
scope = AppScope::class,
@@ -72,6 +73,7 @@ interface DuckChatFeature {
7273
* If the remote feature is not present defaults to `internal`
7374
*/
7475
@Toggle.DefaultValue(DefaultFeatureValue.INTERNAL)
76+
@InternalAlwaysEnabled
7577
fun showAIChatAddressBarChoiceScreen(): Toggle
7678

7779
/**

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/inputscreen/newaddressbaroption/NewAddressBarOptionBottomSheetDialog.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ interface NewAddressBarCallback {
4646
fun onDisplayed()
4747
fun onConfirmed(selection: NewAddressBarSelection)
4848
fun onNotNow()
49+
fun onCancelled()
4950
}
5051

5152
@SuppressLint("NoBottomSheetDialog")
@@ -75,6 +76,7 @@ class NewAddressBarOptionBottomSheetDialog(
7576
}
7677

7778
setOnCancelListener {
79+
newAddressBarCallback?.onCancelled()
7880
restoreOrientation()
7981
dismiss()
8082
}

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/pixel/DuckChatPixels.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_IS_ENABLED
6868
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_KEYBOARD_RETURN_PRESSED
6969
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_MENU_SETTING_OFF
7070
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_MENU_SETTING_ON
71+
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED
7172
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED
7273
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED
7374
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW
@@ -195,6 +196,7 @@ enum class DuckChatPixelName(override val pixelName: String) : Pixel.PixelName {
195196
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED("m_aichat_new_address_bar_picker_displayed"),
196197
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED("m_aichat_new_address_bar_picker_confirmed"),
197198
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW("m_aichat_new_address_bar_picker_not_now"),
199+
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED("m_aichat_new_address_bar_picker_cancelled"),
198200
}
199201

200202
object DuckChatPixelParameters {
@@ -269,6 +271,7 @@ class DuckChatParamRemovalPlugin @Inject constructor() : PixelParamRemovalPlugin
269271
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED.pixelName to PixelParameter.removeAtb(),
270272
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED.pixelName to PixelParameter.removeAtb(),
271273
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW.pixelName to PixelParameter.removeAtb(),
274+
DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED.pixelName to PixelParameter.removeAtb(),
272275
)
273276
}
274277
}

duckchat/duckchat-impl/src/test/kotlin/com/duckduckgo/duckchat/impl/RealDuckChatTest.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBa
3535
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarOptionBottomSheetDialogFactory
3636
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarSelection.SEARCH_AND_AI
3737
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarSelection.SEARCH_ONLY
38+
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED
3839
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED
3940
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED
4041
import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW
@@ -969,6 +970,32 @@ class RealDuckChatTest {
969970
verify(mockPixel).fire(DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW)
970971
}
971972

973+
@Test
974+
fun `when onCancelled called then DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED pixel is fired`() = runTest {
975+
var capturedCallback: NewAddressBarCallback? = null
976+
whenever(mockNewAddressBarOptionBottomSheetDialogFactory.create(any(), any(), any())).thenAnswer { invocation ->
977+
capturedCallback = invocation.getArgument<NewAddressBarCallback?>(2)
978+
mockNewAddressBarOptionBottomSheetDialog
979+
}
980+
981+
val mockContext = mock<Context>()
982+
testee.showNewAddressBarOptionChoiceScreen(mockContext, true)
983+
984+
verify(mockNewAddressBarOptionBottomSheetDialogFactory).create(
985+
any(),
986+
any(),
987+
any(),
988+
)
989+
990+
verify(mockNewAddressBarOptionBottomSheetDialog).show()
991+
992+
assertNotNull(capturedCallback)
993+
capturedCallback!!.onCancelled()
994+
995+
verify(mockDuckChatFeatureRepository, times(0)).setInputScreenUserSetting(any())
996+
verify(mockPixel).fire(DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CANCELLED)
997+
}
998+
972999
companion object {
9731000
val SETTINGS_JSON = """
9741001
{

0 commit comments

Comments
 (0)