|
|
|
@ -19,6 +19,8 @@ import mozilla.components.feature.media.facts.MediaFacts
|
|
|
|
|
import mozilla.components.feature.prompts.dialog.LoginDialogFacts
|
|
|
|
|
import mozilla.components.feature.prompts.facts.CreditCardAutofillDialogFacts
|
|
|
|
|
import mozilla.components.feature.pwa.ProgressiveWebAppFacts
|
|
|
|
|
import mozilla.components.feature.search.telemetry.ads.AdsTelemetry
|
|
|
|
|
import mozilla.components.feature.search.telemetry.incontent.InContentTelemetry
|
|
|
|
|
import mozilla.components.feature.syncedtabs.facts.SyncedTabsFacts
|
|
|
|
|
import mozilla.components.feature.top.sites.facts.TopSitesFacts
|
|
|
|
|
import mozilla.components.support.base.Component
|
|
|
|
@ -37,9 +39,10 @@ import org.junit.Rule
|
|
|
|
|
import org.junit.Test
|
|
|
|
|
import org.junit.runner.RunWith
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.AndroidAutofill
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.Awesomebar
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.BrowserSearch
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.ContextualMenu
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.CreditCards
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.Awesomebar
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.CustomTab
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.LoginDialog
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.MediaNotification
|
|
|
|
@ -609,4 +612,66 @@ class MetricControllerTest {
|
|
|
|
|
|
|
|
|
|
assertTrue(Awesomebar.openedTabSuggestionClicked.testHasValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `GIVEN advertising search facts WHEN the list is processed THEN the right metric is recorded`() {
|
|
|
|
|
val controller = ReleaseMetricController(emptyList(), { true }, { false }, mockk())
|
|
|
|
|
val action = mockk<Action>()
|
|
|
|
|
|
|
|
|
|
// an ad was clicked in a Search Engine Result Page
|
|
|
|
|
val addClickedInSearchFact = Fact(
|
|
|
|
|
Component.FEATURE_SEARCH,
|
|
|
|
|
action,
|
|
|
|
|
AdsTelemetry.SERP_ADD_CLICKED,
|
|
|
|
|
"provider"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFalse(BrowserSearch.adClicks["provider"].testHasValue())
|
|
|
|
|
controller.run {
|
|
|
|
|
addClickedInSearchFact.process()
|
|
|
|
|
}
|
|
|
|
|
assertTrue(BrowserSearch.adClicks["provider"].testHasValue())
|
|
|
|
|
assertEquals(1, BrowserSearch.adClicks["provider"].testGetValue())
|
|
|
|
|
|
|
|
|
|
// the user opened a Search Engine Result Page of one of our search providers which contains ads
|
|
|
|
|
val searchWithAdsOpenedFact = Fact(
|
|
|
|
|
Component.FEATURE_SEARCH,
|
|
|
|
|
action,
|
|
|
|
|
AdsTelemetry.SERP_SHOWN_WITH_ADDS,
|
|
|
|
|
"provider"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFalse(BrowserSearch.withAds["provider"].testHasValue())
|
|
|
|
|
|
|
|
|
|
controller.run {
|
|
|
|
|
searchWithAdsOpenedFact.process()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assertTrue(BrowserSearch.withAds["provider"].testHasValue())
|
|
|
|
|
assertEquals(1, BrowserSearch.withAds["provider"].testGetValue())
|
|
|
|
|
|
|
|
|
|
// the user performed a search
|
|
|
|
|
val inContentSearchFact = Fact(
|
|
|
|
|
Component.FEATURE_SEARCH,
|
|
|
|
|
action,
|
|
|
|
|
InContentTelemetry.IN_CONTENT_SEARCH,
|
|
|
|
|
"provider"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFalse(BrowserSearch.inContent["provider"].testHasValue())
|
|
|
|
|
|
|
|
|
|
controller.run {
|
|
|
|
|
inContentSearchFact.process()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assertTrue(BrowserSearch.inContent["provider"].testHasValue())
|
|
|
|
|
assertEquals(1, BrowserSearch.inContent["provider"].testGetValue())
|
|
|
|
|
|
|
|
|
|
// the user performed another search
|
|
|
|
|
controller.run {
|
|
|
|
|
inContentSearchFact.process()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assertEquals(2, BrowserSearch.inContent["provider"].testGetValue())
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|