From 8bfc4935687dbc7220403c8a873d04260c513aaa Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Mon, 27 Jul 2020 14:24:02 -0700 Subject: [PATCH] For #12103: Add ChangedDefaultBrowser event for leanplum --- .../main/java/org/mozilla/fenix/HomeActivity.kt | 14 ++++++++++++++ .../components/metrics/GleanMetricsService.kt | 1 + .../components/metrics/LeanplumMetricsService.kt | 1 + .../mozilla/fenix/components/metrics/Metrics.kt | 1 + .../fenix/settings/DefaultBrowserPreference.kt | 2 ++ .../main/java/org/mozilla/fenix/utils/Settings.kt | 9 +++++++++ app/src/main/res/values/preference_keys.xml | 2 ++ 7 files changed, 30 insertions(+) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index a932c4089..5f07c6095 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -31,6 +31,7 @@ import androidx.navigation.ui.NavigationUI import kotlinx.android.synthetic.main.activity_home.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.delay @@ -68,6 +69,7 @@ import org.mozilla.fenix.components.metrics.BreadcrumbsRecorder import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.alreadyOnDestination import org.mozilla.fenix.ext.components +import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.resetPoliciesAfter import org.mozilla.fenix.ext.settings @@ -243,12 +245,24 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { } } } + + // Launch this on a background thread so as not to affect startup performance + lifecycleScope.launch(IO) { + if (settings().wasDefaultBrowserOnLastPause != settings().isDefaultBrowser()) { + metrics.track(Event.ChangedToDefaultBrowser) + } + } } final override fun onPause() { if (settings().lastKnownMode.isPrivate) { window.addFlags(WindowManager.LayoutParams.FLAG_SECURE) } + + if (settings().wasDefaultBrowserOnLastPause != settings().isDefaultBrowser()) { + settings().wasDefaultBrowserOnLastPause = settings().isDefaultBrowser() + } + super.onPause() // Every time the application goes into the background, it is possible that the user diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt index f7cf4f504..755a3095a 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt @@ -666,6 +666,7 @@ private val Event.wrapper: EventWrapper<*>? is Event.FennecToFenixMigrated -> null is Event.AddonInstalled -> null is Event.SearchWidgetInstalled -> null + is Event.ChangedToDefaultBrowser -> null } class GleanMetricsService(private val context: Context) : MetricsService { diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/LeanplumMetricsService.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/LeanplumMetricsService.kt index c4b1da1ee..8675ccb5d 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/LeanplumMetricsService.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/LeanplumMetricsService.kt @@ -40,6 +40,7 @@ private val Event.name: String? is Event.FennecToFenixMigrated -> "E_Fennec_To_Fenix_Migrated" is Event.AddonInstalled -> "E_Addon_Installed" is Event.SearchWidgetInstalled -> "E_Search_Widget_Added" + is Event.ChangedToDefaultBrowser -> "E_Changed_Default_To_Fenix" // Do not track other events in Leanplum else -> null diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt index 697991068..676ba80a0 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt @@ -183,6 +183,7 @@ sealed class Event { object OnboardingPrivateBrowsing : Event() object OnboardingWhatsNew : Event() object OnboardingFinish : Event() + object ChangedToDefaultBrowser : Event() object ContextualHintETPDisplayed : Event() object ContextualHintETPDismissed : Event() diff --git a/app/src/main/java/org/mozilla/fenix/settings/DefaultBrowserPreference.kt b/app/src/main/java/org/mozilla/fenix/settings/DefaultBrowserPreference.kt index c2ef16ebb..2aa21de6e 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/DefaultBrowserPreference.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/DefaultBrowserPreference.kt @@ -10,6 +10,8 @@ import android.widget.Switch import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.utils.BrowsersCache class DefaultBrowserPreference @JvmOverloads constructor( diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt index defa8901d..cac21f0b5 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -324,6 +324,15 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = true ) + /** + * Caches the last known "is default browser" state when the app was paused. + * For an up to do date state use `isDefaultBrowser` instead. + */ + var wasDefaultBrowserOnLastPause by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_default_browser), + default = isDefaultBrowser() + ) + fun isDefaultBrowser(): Boolean { val browsers = BrowsersCache.all(appContext) return browsers.isDefaultBrowser diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 08f64e202..56aba91dd 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -186,5 +186,7 @@ pref_key_is_in_search_widget_experiment pref_key_show_search_widget_cfr + pref_key_default_browser + pref_key_login_exceptions