Pass settings and metrics to CFR
parent
98d5ae6b89
commit
e809df0858
|
@ -150,7 +150,8 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
|||
|
||||
val toolbarSessionObserver = TrackingProtectionOverlay(
|
||||
context = context,
|
||||
settings = settings
|
||||
settings = settings,
|
||||
metrics = context.components.analytics.metrics
|
||||
) {
|
||||
browserToolbarView.view
|
||||
}
|
||||
|
|
|
@ -20,8 +20,7 @@ import kotlinx.android.synthetic.main.tracking_protection_onboarding_popup.view.
|
|||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.SearchWidgetCreator
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
/**
|
||||
|
@ -29,27 +28,29 @@ import org.mozilla.fenix.utils.Settings
|
|||
*/
|
||||
class SearchWidgetCFR(
|
||||
private val context: Context,
|
||||
private val settings: Settings,
|
||||
private val metrics: MetricController,
|
||||
private val getToolbar: () -> View
|
||||
) {
|
||||
|
||||
fun displayIfNecessary() {
|
||||
if (!context.settings().isInSearchWidgetExperiment ||
|
||||
!context.settings().shouldDisplaySearchWidgetCFR() ||
|
||||
isShown
|
||||
) { return }
|
||||
|
||||
if (settings.isInSearchWidgetExperiment &&
|
||||
settings.shouldDisplaySearchWidgetCFR() &&
|
||||
!isShown
|
||||
) {
|
||||
isShown = true
|
||||
showSearchWidgetCFR()
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber", "InflateParams")
|
||||
@Suppress("InflateParams")
|
||||
private fun showSearchWidgetCFR() {
|
||||
context.settings().incrementSearchWidgetCFRDisplayed()
|
||||
settings.incrementSearchWidgetCFRDisplayed()
|
||||
|
||||
val searchWidgetCFRDialog = Dialog(context)
|
||||
val layout = LayoutInflater.from(context)
|
||||
.inflate(R.layout.search_widget_cfr, null)
|
||||
val isBottomToolbar = Settings.getInstance(context).shouldUseBottomToolbar
|
||||
val isBottomToolbar = settings.shouldUseBottomToolbar
|
||||
|
||||
layout.drop_down_triangle.isGone = isBottomToolbar
|
||||
layout.pop_up_triangle.isVisible = isBottomToolbar
|
||||
|
@ -63,16 +64,16 @@ class SearchWidgetCFR(
|
|||
}
|
||||
|
||||
layout.cfr_neg_button.setOnClickListener {
|
||||
context.components.analytics.metrics.track(Event.SearchWidgetCFRNotNowPressed)
|
||||
metrics.track(Event.SearchWidgetCFRNotNowPressed)
|
||||
searchWidgetCFRDialog.dismiss()
|
||||
context.settings().manuallyDismissSearchWidgetCFR()
|
||||
settings.manuallyDismissSearchWidgetCFR()
|
||||
}
|
||||
|
||||
layout.cfr_pos_button.setOnClickListener {
|
||||
context.components.analytics.metrics.track(Event.SearchWidgetCFRAddWidgetPressed)
|
||||
metrics.track(Event.SearchWidgetCFRAddWidgetPressed)
|
||||
SearchWidgetCreator.createSearchWidget(context)
|
||||
searchWidgetCFRDialog.dismiss()
|
||||
context.settings().manuallyDismissSearchWidgetCFR()
|
||||
settings.manuallyDismissSearchWidgetCFR()
|
||||
}
|
||||
|
||||
searchWidgetCFRDialog.apply {
|
||||
|
@ -90,16 +91,16 @@ class SearchWidgetCFR(
|
|||
|
||||
searchWidgetCFRDialog.setOnCancelListener {
|
||||
isShown = false
|
||||
context.components.analytics.metrics.track(Event.SearchWidgetCFRCanceled)
|
||||
metrics.track(Event.SearchWidgetCFRCanceled)
|
||||
}
|
||||
|
||||
searchWidgetCFRDialog.setOnDismissListener {
|
||||
isShown = false
|
||||
context.settings().incrementSearchWidgetCFRDismissed()
|
||||
settings.incrementSearchWidgetCFRDismissed()
|
||||
}
|
||||
|
||||
searchWidgetCFRDialog.show()
|
||||
context.components.analytics.metrics.track(Event.SearchWidgetCFRDisplayed)
|
||||
metrics.track(Event.SearchWidgetCFRDisplayed)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -375,7 +375,13 @@ class HomeFragment : Fragment() {
|
|||
// the CFR in.
|
||||
view.toolbar_wrapper.doOnLayout {
|
||||
if (!browsingModeManager.mode.isPrivate) {
|
||||
SearchWidgetCFR(view.context) { view.toolbar_wrapper }.displayIfNecessary()
|
||||
SearchWidgetCFR(
|
||||
context = view.context,
|
||||
settings = view.context.settings(),
|
||||
metrics = view.context.components.analytics.metrics
|
||||
) {
|
||||
view.toolbar_wrapper
|
||||
}.displayIfNecessary()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import kotlinx.android.synthetic.main.tracking_protection_onboarding_popup.view.
|
|||
import mozilla.components.browser.session.Session
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.increaseTapArea
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
@ -32,6 +33,7 @@ import org.mozilla.fenix.utils.Settings
|
|||
class TrackingProtectionOverlay(
|
||||
private val context: Context,
|
||||
private val settings: Settings,
|
||||
private val metrics: MetricController,
|
||||
private val getToolbar: () -> View
|
||||
) : Session.Observer {
|
||||
|
||||
|
@ -62,7 +64,7 @@ class TrackingProtectionOverlay(
|
|||
|
||||
val layout = LayoutInflater.from(context)
|
||||
.inflate(R.layout.tracking_protection_onboarding_popup, null)
|
||||
val isBottomToolbar = Settings.getInstance(context).shouldUseBottomToolbar
|
||||
val isBottomToolbar = settings.shouldUseBottomToolbar
|
||||
|
||||
layout.drop_down_triangle.isGone = isBottomToolbar
|
||||
layout.pop_up_triangle.isVisible = isBottomToolbar
|
||||
|
@ -76,7 +78,7 @@ class TrackingProtectionOverlay(
|
|||
val closeButton = layout.findViewById<ImageView>(R.id.close_onboarding)
|
||||
closeButton.increaseTapArea(BUTTON_INCREASE_DPS)
|
||||
closeButton.setOnClickListener {
|
||||
context.components.analytics.metrics.track(Event.ContextualHintETPDismissed)
|
||||
metrics.track(Event.ContextualHintETPDismissed)
|
||||
trackingOnboardingDialog.dismiss()
|
||||
}
|
||||
|
||||
|
@ -115,12 +117,12 @@ class TrackingProtectionOverlay(
|
|||
val etpShield =
|
||||
getToolbar().findViewById<View>(R.id.mozac_browser_toolbar_tracking_protection_indicator)
|
||||
trackingOnboardingDialog.message.setOnClickListener {
|
||||
context.components.analytics.metrics.track(Event.ContextualHintETPInsideTap)
|
||||
metrics.track(Event.ContextualHintETPInsideTap)
|
||||
trackingOnboardingDialog.dismiss()
|
||||
etpShield.performClick()
|
||||
}
|
||||
|
||||
context.components.analytics.metrics.track(Event.ContextualHintETPDisplayed)
|
||||
metrics.track(Event.ContextualHintETPDisplayed)
|
||||
trackingOnboardingDialog.show()
|
||||
settings.incrementTrackingProtectionOnboardingCount()
|
||||
}
|
||||
|
|
|
@ -6,7 +6,9 @@ package org.mozilla.fenix.trackingprotection
|
|||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.mockk
|
||||
import io.mockk.spyk
|
||||
import io.mockk.verify
|
||||
|
@ -16,28 +18,27 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class TrackingProtectionOverlayTest {
|
||||
|
||||
private lateinit var context: Context
|
||||
private lateinit var settings: Settings
|
||||
private lateinit var toolbar: View
|
||||
private lateinit var icon: View
|
||||
private lateinit var session: Session
|
||||
private lateinit var overlay: TrackingProtectionOverlay
|
||||
@MockK(relaxed = true) private lateinit var settings: Settings
|
||||
@MockK(relaxed = true) private lateinit var metrics: MetricController
|
||||
@MockK(relaxed = true) private lateinit var toolbar: View
|
||||
@MockK(relaxed = true) private lateinit var icon: View
|
||||
@MockK(relaxed = true) private lateinit var session: Session
|
||||
@MockK(relaxed = true) private lateinit var overlay: TrackingProtectionOverlay
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
MockKAnnotations.init(this)
|
||||
context = spyk(testContext)
|
||||
settings = mockk(relaxed = true)
|
||||
toolbar = mockk(relaxed = true)
|
||||
icon = mockk(relaxed = true)
|
||||
session = mockk(relaxed = true)
|
||||
|
||||
overlay = TrackingProtectionOverlay(context, settings) { toolbar }
|
||||
overlay = TrackingProtectionOverlay(context, settings, metrics) { toolbar }
|
||||
every { toolbar.findViewById<View>(R.id.mozac_browser_toolbar_tracking_protection_indicator) } returns icon
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue