[fenix] For https://github.com/mozilla-mobile/fenix/issues/24210: Remove wrapper from "browser menu item tapped" event.

pull/600/head
mcarare 3 years ago committed by mergify[bot]
parent d5016f5e9b
commit 692f15b64c

@ -145,6 +145,7 @@ events:
reader_mode_off, reader_mode_on, reload, remove_from_top_sites, reader_mode_off, reader_mode_on, reload, remove_from_top_sites,
save_to_collection, set_default_browser, settings, share, stop, save_to_collection, set_default_browser, settings, share, stop,
sync_account, and sync_tabs. sync_account, and sync_tabs.
type: string
bugs: bugs:
- https://github.com/mozilla-mobile/fenix/issues/1024 - https://github.com/mozilla-mobile/fenix/issues/1024
- https://github.com/mozilla-mobile/fenix/issues/19923 - https://github.com/mozilla-mobile/fenix/issues/19923

@ -393,19 +393,6 @@ sealed class Event {
data class AddonInstalled(val addonId: String) : Event() data class AddonInstalled(val addonId: String) : Event()
data class BrowserMenuItemTapped(val item: Item) : Event() {
enum class Item {
SETTINGS, HELP, DESKTOP_VIEW_ON, DESKTOP_VIEW_OFF, FIND_IN_PAGE, NEW_TAB,
NEW_PRIVATE_TAB, SHARE, BACK, FORWARD, RELOAD, STOP, OPEN_IN_FENIX,
SAVE_TO_COLLECTION, ADD_TO_TOP_SITES, REMOVE_FROM_TOP_SITES, ADD_TO_HOMESCREEN, QUIT, READER_MODE_ON,
READER_MODE_OFF, OPEN_IN_APP, BOOKMARK, READER_MODE_APPEARANCE, ADDONS_MANAGER,
BOOKMARKS, HISTORY, SYNC_TABS, DOWNLOADS, SET_DEFAULT_BROWSER, SYNC_ACCOUNT
}
override val extras: Map<Events.browserMenuActionKeys, String>?
get() = mapOf(Events.browserMenuActionKeys.item to item.toString().lowercase(Locale.ROOT))
}
object AutoPlaySettingVisited : Event() object AutoPlaySettingVisited : Event()
data class AutoPlaySettingChanged(val setting: AutoplaySetting) : Event() { data class AutoPlaySettingChanged(val setting: AutoplaySetting) : Event() {

@ -115,10 +115,7 @@ private val Event.wrapper: EventWrapper<*>?
{ ContextMenu.itemTapped.record(it) }, { ContextMenu.itemTapped.record(it) },
{ ContextMenu.itemTappedKeys.valueOf(it) } { ContextMenu.itemTappedKeys.valueOf(it) }
) )
is Event.BrowserMenuItemTapped -> EventWrapper(
{ Events.browserMenuAction.record(it) },
{ Events.browserMenuActionKeys.valueOf(it) }
)
is Event.SetDefaultBrowserToolbarMenuClicked -> EventWrapper<NoExtraKeys>( is Event.SetDefaultBrowserToolbarMenuClicked -> EventWrapper<NoExtraKeys>(
{ ExperimentsDefaultBrowser.toolbarMenuClicked.record(it) } { ExperimentsDefaultBrowser.toolbarMenuClicked.record(it) }
) )

@ -28,6 +28,7 @@ import mozilla.components.feature.top.sites.PinnedSiteStorage
import mozilla.components.feature.top.sites.TopSite import mozilla.components.feature.top.sites.TopSite
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import org.mozilla.fenix.GleanMetrics.Collections import org.mozilla.fenix.GleanMetrics.Collections
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R import org.mozilla.fenix.R
@ -404,41 +405,62 @@ class DefaultBrowserToolbarMenuController(
@Suppress("ComplexMethod") @Suppress("ComplexMethod")
private fun trackToolbarItemInteraction(item: ToolbarMenu.Item) { private fun trackToolbarItemInteraction(item: ToolbarMenu.Item) {
val eventItem = when (item) { when (item) {
is ToolbarMenu.Item.OpenInFenix -> Event.BrowserMenuItemTapped.Item.OPEN_IN_FENIX is ToolbarMenu.Item.OpenInFenix ->
is ToolbarMenu.Item.InstallPwaToHomeScreen -> Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN Events.browserMenuAction.record(Events.BrowserMenuActionExtra("open_in_fenix"))
is ToolbarMenu.Item.Quit -> Event.BrowserMenuItemTapped.Item.QUIT is ToolbarMenu.Item.InstallPwaToHomeScreen ->
is ToolbarMenu.Item.OpenInApp -> Event.BrowserMenuItemTapped.Item.OPEN_IN_APP Events.browserMenuAction.record(Events.BrowserMenuActionExtra("add_to_homescreen"))
is ToolbarMenu.Item.Quit ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("quit"))
is ToolbarMenu.Item.OpenInApp ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("open_in_app"))
is ToolbarMenu.Item.CustomizeReaderView -> is ToolbarMenu.Item.CustomizeReaderView ->
Event.BrowserMenuItemTapped.Item.READER_MODE_APPEARANCE Events.browserMenuAction.record(Events.BrowserMenuActionExtra("reader_mode_appearance"))
is ToolbarMenu.Item.Back -> Event.BrowserMenuItemTapped.Item.BACK is ToolbarMenu.Item.Back ->
is ToolbarMenu.Item.Forward -> Event.BrowserMenuItemTapped.Item.FORWARD Events.browserMenuAction.record(Events.BrowserMenuActionExtra("back"))
is ToolbarMenu.Item.Reload -> Event.BrowserMenuItemTapped.Item.RELOAD is ToolbarMenu.Item.Forward ->
is ToolbarMenu.Item.Stop -> Event.BrowserMenuItemTapped.Item.STOP Events.browserMenuAction.record(Events.BrowserMenuActionExtra("forward"))
is ToolbarMenu.Item.Share -> Event.BrowserMenuItemTapped.Item.SHARE is ToolbarMenu.Item.Reload ->
is ToolbarMenu.Item.Settings -> Event.BrowserMenuItemTapped.Item.SETTINGS Events.browserMenuAction.record(Events.BrowserMenuActionExtra("reload"))
is ToolbarMenu.Item.Stop ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("stop"))
is ToolbarMenu.Item.Share ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("share"))
is ToolbarMenu.Item.Settings ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("settings"))
is ToolbarMenu.Item.RequestDesktop -> is ToolbarMenu.Item.RequestDesktop ->
if (item.isChecked) { if (item.isChecked) {
Event.BrowserMenuItemTapped.Item.DESKTOP_VIEW_ON Events.browserMenuAction.record(Events.BrowserMenuActionExtra("desktop_view_on"))
} else { } else {
Event.BrowserMenuItemTapped.Item.DESKTOP_VIEW_OFF Events.browserMenuAction.record(Events.BrowserMenuActionExtra("desktop_view_off"))
} }
is ToolbarMenu.Item.FindInPage -> Event.BrowserMenuItemTapped.Item.FIND_IN_PAGE is ToolbarMenu.Item.FindInPage ->
is ToolbarMenu.Item.SaveToCollection -> Event.BrowserMenuItemTapped.Item.SAVE_TO_COLLECTION Events.browserMenuAction.record(Events.BrowserMenuActionExtra("find_in_page"))
is ToolbarMenu.Item.AddToTopSites -> Event.BrowserMenuItemTapped.Item.ADD_TO_TOP_SITES is ToolbarMenu.Item.SaveToCollection ->
is ToolbarMenu.Item.AddToHomeScreen -> Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN Events.browserMenuAction.record(Events.BrowserMenuActionExtra("save_to_collection"))
is ToolbarMenu.Item.SyncAccount -> Event.BrowserMenuItemTapped.Item.SYNC_ACCOUNT is ToolbarMenu.Item.AddToTopSites ->
is ToolbarMenu.Item.Bookmark -> Event.BrowserMenuItemTapped.Item.BOOKMARK Events.browserMenuAction.record(Events.BrowserMenuActionExtra("add_to_top_sites"))
is ToolbarMenu.Item.AddonsManager -> Event.BrowserMenuItemTapped.Item.ADDONS_MANAGER is ToolbarMenu.Item.AddToHomeScreen ->
is ToolbarMenu.Item.Bookmarks -> Event.BrowserMenuItemTapped.Item.BOOKMARKS Events.browserMenuAction.record(Events.BrowserMenuActionExtra("add_to_homescreen"))
is ToolbarMenu.Item.History -> Event.BrowserMenuItemTapped.Item.HISTORY is ToolbarMenu.Item.SyncAccount ->
is ToolbarMenu.Item.Downloads -> Event.BrowserMenuItemTapped.Item.DOWNLOADS Events.browserMenuAction.record(Events.BrowserMenuActionExtra("sync_account"))
is ToolbarMenu.Item.NewTab -> Event.BrowserMenuItemTapped.Item.NEW_TAB is ToolbarMenu.Item.Bookmark ->
is ToolbarMenu.Item.SetDefaultBrowser -> Event.BrowserMenuItemTapped.Item.SET_DEFAULT_BROWSER Events.browserMenuAction.record(Events.BrowserMenuActionExtra("bookmark"))
is ToolbarMenu.Item.RemoveFromTopSites -> Event.BrowserMenuItemTapped.Item.REMOVE_FROM_TOP_SITES is ToolbarMenu.Item.AddonsManager ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("addons_manager"))
is ToolbarMenu.Item.Bookmarks ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("bookmarks"))
is ToolbarMenu.Item.History ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("history"))
is ToolbarMenu.Item.Downloads ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("downloads"))
is ToolbarMenu.Item.NewTab ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("new_tab"))
is ToolbarMenu.Item.SetDefaultBrowser ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("set_default_browser"))
is ToolbarMenu.Item.RemoveFromTopSites ->
Events.browserMenuAction.record(Events.BrowserMenuActionExtra("remove_from_top_sites"))
} }
metrics.track(Event.BrowserMenuItemTapped(eventItem))
} }
companion object { companion object {

@ -50,6 +50,7 @@ import mozilla.components.support.test.robolectric.testContext
import mozilla.components.support.test.rule.MainCoroutineRule import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull import org.junit.Assert.assertNotNull
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
@ -57,6 +58,7 @@ import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mozilla.fenix.GleanMetrics.Collections import org.mozilla.fenix.GleanMetrics.Collections
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R import org.mozilla.fenix.R
@ -169,9 +171,15 @@ class DefaultBrowserToolbarMenuControllerTest {
bookmarkTappedInvoked = true bookmarkTappedInvoked = true
} }
) )
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BOOKMARK)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("bookmark", snapshot.single().extra?.getValue("item"))
assertTrue(bookmarkTappedInvoked) assertTrue(bookmarkTappedInvoked)
} }
@ -197,9 +205,15 @@ class DefaultBrowserToolbarMenuControllerTest {
bookmarkTappedInvoked = true bookmarkTappedInvoked = true
} }
) )
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BOOKMARK)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("bookmark", snapshot.single().extra?.getValue("item"))
assertTrue(bookmarkTappedInvoked) assertTrue(bookmarkTappedInvoked)
} }
@ -253,9 +267,15 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Back(false) val item = ToolbarMenu.Item.Back(false)
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BACK)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("back", snapshot.single().extra?.getValue("item"))
verify { sessionUseCases.goBack(browserStore.state.selectedTabId!!) } verify { sessionUseCases.goBack(browserStore.state.selectedTabId!!) }
} }
@ -264,11 +284,16 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Back(true) val item = ToolbarMenu.Item.Back(true)
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("back", snapshot.single().extra?.getValue("item"))
val directions = BrowserFragmentDirections.actionGlobalTabHistoryDialogFragment(null) val directions = BrowserFragmentDirections.actionGlobalTabHistoryDialogFragment(null)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BACK)) }
verify { navController.navigate(directions) } verify { navController.navigate(directions) }
} }
@ -277,9 +302,15 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Forward(false) val item = ToolbarMenu.Item.Forward(false)
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.FORWARD)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("forward", snapshot.single().extra?.getValue("item"))
verify { sessionUseCases.goForward(selectedTab.id) } verify { sessionUseCases.goForward(selectedTab.id) }
} }
@ -288,11 +319,17 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Forward(true) val item = ToolbarMenu.Item.Forward(true)
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("forward", snapshot.single().extra?.getValue("item"))
val directions = BrowserFragmentDirections.actionGlobalTabHistoryDialogFragment(null) val directions = BrowserFragmentDirections.actionGlobalTabHistoryDialogFragment(null)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.FORWARD)) }
verify { navController.navigate(directions) } verify { navController.navigate(directions) }
} }
@ -301,9 +338,15 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Reload(false) val item = ToolbarMenu.Item.Reload(false)
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.RELOAD)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("reload", snapshot.single().extra?.getValue("item"))
verify { sessionUseCases.reload(selectedTab.id) } verify { sessionUseCases.reload(selectedTab.id) }
} }
@ -312,9 +355,15 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Reload(true) val item = ToolbarMenu.Item.Reload(true)
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.RELOAD)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("reload", snapshot.single().extra?.getValue("item"))
verify { verify {
sessionUseCases.reload( sessionUseCases.reload(
selectedTab.id, selectedTab.id,
@ -328,9 +377,15 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Stop val item = ToolbarMenu.Item.Stop
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.STOP)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("stop", snapshot.single().extra?.getValue("item"))
verify { sessionUseCases.stopLoading(selectedTab.id) } verify { sessionUseCases.stopLoading(selectedTab.id) }
} }
@ -339,11 +394,16 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Settings val item = ToolbarMenu.Item.Settings
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("settings", snapshot.single().extra?.getValue("item"))
val directions = BrowserFragmentDirections.actionBrowserFragmentToSettingsFragment() val directions = BrowserFragmentDirections.actionBrowserFragmentToSettingsFragment()
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SETTINGS)) }
verify { navController.navigate(directions, null) } verify { navController.navigate(directions, null) }
} }
@ -352,11 +412,16 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.Bookmarks val item = ToolbarMenu.Item.Bookmarks
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("bookmarks", snapshot.single().extra?.getValue("item"))
val directions = BrowserFragmentDirections.actionGlobalBookmarkFragment(BookmarkRoot.Mobile.id) val directions = BrowserFragmentDirections.actionGlobalBookmarkFragment(BookmarkRoot.Mobile.id)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BOOKMARKS)) }
verify { navController.navigate(directions, null) } verify { navController.navigate(directions, null) }
} }
@ -365,11 +430,16 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.History val item = ToolbarMenu.Item.History
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("history", snapshot.single().extra?.getValue("item"))
val directions = BrowserFragmentDirections.actionGlobalHistoryFragment() val directions = BrowserFragmentDirections.actionGlobalHistoryFragment()
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.HISTORY)) }
verify { navController.navigate(directions, null) } verify { navController.navigate(directions, null) }
} }
@ -382,9 +452,15 @@ class DefaultBrowserToolbarMenuControllerTest {
every { sessionUseCases.requestDesktopSite } returns requestDesktopSiteUseCase every { sessionUseCases.requestDesktopSite } returns requestDesktopSiteUseCase
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.DESKTOP_VIEW_ON)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("desktop_view_on", snapshot.single().extra?.getValue("item"))
verify { verify {
requestDesktopSiteUseCase.invoke( requestDesktopSiteUseCase.invoke(
true, true,
@ -402,9 +478,15 @@ class DefaultBrowserToolbarMenuControllerTest {
every { sessionUseCases.requestDesktopSite } returns requestDesktopSiteUseCase every { sessionUseCases.requestDesktopSite } returns requestDesktopSiteUseCase
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.DESKTOP_VIEW_OFF)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("desktop_view_off", snapshot.single().extra?.getValue("item"))
verify { verify {
requestDesktopSiteUseCase.invoke( requestDesktopSiteUseCase.invoke(
false, false,
@ -424,11 +506,17 @@ class DefaultBrowserToolbarMenuControllerTest {
} returns "Added to shorcuts!" } returns "Added to shorcuts!"
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("add_to_top_sites", snapshot.single().extra?.getValue("item"))
verify { addPinnedSiteUseCase.invoke(selectedTab.content.title, selectedTab.content.url) } verify { addPinnedSiteUseCase.invoke(selectedTab.content.title, selectedTab.content.url) }
verify { snackbar.setText("Added to shorcuts!") } verify { snackbar.setText("Added to shorcuts!") }
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.ADD_TO_TOP_SITES)) }
} }
@Test @Test
@ -446,10 +534,16 @@ class DefaultBrowserToolbarMenuControllerTest {
} returns snackbarMessage } returns snackbarMessage
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("remove_from_top_sites", snapshot.single().extra?.getValue("item"))
verify { snackbar.setText(snackbarMessage) } verify { snackbar.setText(snackbarMessage) }
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.REMOVE_FROM_TOP_SITES)) }
verify { removePinnedSiteUseCase.invoke(topSite) } verify { removePinnedSiteUseCase.invoke(topSite) }
} }
@ -458,9 +552,14 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.AddonsManager val item = ToolbarMenu.Item.AddonsManager
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.ADDONS_MANAGER)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("addons_manager", snapshot.single().extra?.getValue("item"))
} }
@Test @Test
@ -468,9 +567,14 @@ class DefaultBrowserToolbarMenuControllerTest {
val item = ToolbarMenu.Item.AddToHomeScreen val item = ToolbarMenu.Item.AddToHomeScreen
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("add_to_homescreen", snapshot.single().extra?.getValue("item"))
} }
@Test @Test
@ -485,9 +589,15 @@ class DefaultBrowserToolbarMenuControllerTest {
) )
browserStore = BrowserStore(BrowserState(tabs = listOf(regularTab), selectedTabId = regularTab.id)) browserStore = BrowserStore(BrowserState(tabs = listOf(regularTab), selectedTabId = regularTab.id))
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SHARE)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("share", snapshot.single().extra?.getValue("item"))
verify { verify {
navController.navigate( navController.navigate(
directionsEq( directionsEq(
@ -512,9 +622,15 @@ class DefaultBrowserToolbarMenuControllerTest {
) )
browserStore = BrowserStore(BrowserState(tabs = listOf(readerTab), selectedTabId = readerTab.id)) browserStore = BrowserStore(BrowserState(tabs = listOf(readerTab), selectedTabId = readerTab.id))
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SHARE)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("share", snapshot.single().extra?.getValue("item"))
verify { verify {
navController.navigate( navController.navigate(
directionsEq( directionsEq(
@ -550,13 +666,14 @@ class DefaultBrowserToolbarMenuControllerTest {
every { tabCollectionStorage.cachedTabCollections } returns cachedTabCollections every { tabCollectionStorage.cachedTabCollections } returns cachedTabCollections
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { assertTrue(Events.browserMenuAction.testHasValue())
metrics.track( val snapshot = Events.browserMenuAction.testGetValue()
Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SAVE_TO_COLLECTION) assertEquals(1, snapshot.size)
) assertEquals("save_to_collection", snapshot.single().extra?.getValue("item"))
}
assertTrue(Collections.saveButton.testHasValue()) assertTrue(Collections.saveButton.testHasValue())
val recordedEvents = Collections.saveButton.testGetValue() val recordedEvents = Collections.saveButton.testGetValue()
@ -584,9 +701,14 @@ class DefaultBrowserToolbarMenuControllerTest {
every { tabCollectionStorage.cachedTabCollections } returns cachedTabCollectionsEmpty every { tabCollectionStorage.cachedTabCollections } returns cachedTabCollectionsEmpty
val controller = createController(scope = this, store = browserStore) val controller = createController(scope = this, store = browserStore)
assertFalse(Events.browserMenuAction.testHasValue())
controller.handleToolbarItemInteraction(item) controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.SAVE_TO_COLLECTION)) } assertTrue(Events.browserMenuAction.testHasValue())
val snapshot = Events.browserMenuAction.testGetValue()
assertEquals(1, snapshot.size)
assertEquals("save_to_collection", snapshot.single().extra?.getValue("item"))
assertTrue(Collections.saveButton.testHasValue()) assertTrue(Collections.saveButton.testHasValue())
val recordedEvents = Collections.saveButton.testGetValue() val recordedEvents = Collections.saveButton.testGetValue()
@ -598,7 +720,6 @@ class DefaultBrowserToolbarMenuControllerTest {
DefaultBrowserToolbarMenuController.TELEMETRY_BROWSER_IDENTIFIER, DefaultBrowserToolbarMenuController.TELEMETRY_BROWSER_IDENTIFIER,
eventExtra["from_screen"] eventExtra["from_screen"]
) )
val directions = BrowserFragmentDirections.actionGlobalCollectionCreationFragment( val directions = BrowserFragmentDirections.actionGlobalCollectionCreationFragment(
saveCollectionStep = SaveCollectionStep.NameCollection, saveCollectionStep = SaveCollectionStep.NameCollection,
tabIds = arrayOf(selectedTab.id), tabIds = arrayOf(selectedTab.id),

Loading…
Cancel
Save