Skip to content

Commit

Permalink
API change: Change BrowserFeatureStateReporterPlugin signature (#5023)
Browse files Browse the repository at this point in the history
Task/Issue URL:
https://app.asana.com/0/1202552961248957/1208307454923082/f

### Description

This PR changes the signature of `BrowserFeatureStateReporterPlugin` to
be more flexible and return a map of key-value pairs.
  • Loading branch information
0nko authored Sep 18, 2024
1 parent b2c944e commit 90b4dd9
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import com.duckduckgo.browser.api.WebViewVersionProvider
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.absoluteString
import com.duckduckgo.common.utils.domain
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.common.utils.extensions.toSanitizedLanguageTag
import com.duckduckgo.di.scopes.AppScope
import com.duckduckgo.experiments.api.VariantManager
Expand Down Expand Up @@ -203,8 +204,6 @@ class BrokenSiteSubmitter @Inject constructor(
}
}

fun Boolean.toBinaryString(): String = if (this) "1" else "0"

private fun ReportFlow.toStringValue(): String = when (this) {
DASHBOARD -> "dashboard"
MENU -> "menu"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,6 @@ import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter.FIRE_BUTTON_STATE
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter.LOADING_BAR_EXPERIMENT
import com.duckduckgo.app.statistics.pixels.Pixel.PixelType.DAILY
import com.duckduckgo.app.statistics.pixels.toBinaryString
import com.duckduckgo.app.tabs.model.TabEntity
import com.duckduckgo.app.tabs.ui.GridViewColumnCalculator
import com.duckduckgo.app.tabs.ui.TabSwitcherActivity
Expand Down Expand Up @@ -270,6 +269,7 @@ import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.FragmentViewModelFactory
import com.duckduckgo.common.utils.KeyboardVisibilityUtil
import com.duckduckgo.common.utils.extensions.html
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.common.utils.extensions.websiteFromGeoLocationsApiOrigin
import com.duckduckgo.common.utils.extractDomain
import com.duckduckgo.common.utils.playstore.PlayStoreUtils
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,13 @@ import com.duckduckgo.app.di.AppCoroutineScope
import com.duckduckgo.app.pixels.AppPixelName
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter.LOADING_BAR_EXPERIMENT
import com.duckduckgo.app.statistics.pixels.toBinaryString
import com.duckduckgo.autoconsent.api.Autoconsent
import com.duckduckgo.autofill.api.BrowserAutofill
import com.duckduckgo.autofill.api.InternalTestUserChecker
import com.duckduckgo.browser.api.JsInjectorPlugin
import com.duckduckgo.common.utils.CurrentTimeProvider
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.common.utils.plugins.PluginPoint
import com.duckduckgo.cookies.api.CookieManagerProvider
import com.duckduckgo.duckplayer.api.DuckPlayer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import android.os.Build
import com.duckduckgo.app.statistics.api.BrowserFeatureStateReporterPlugin
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.di.scopes.AppScope
import com.squareup.anvil.annotations.ContributesBinding
import com.squareup.anvil.annotations.ContributesMultibinding
Expand Down Expand Up @@ -66,8 +67,8 @@ class AndroidDefaultBrowserDetector @Inject constructor(
return resolutionInfo?.activityInfo?.packageName
}

override fun featureState(): Pair<Boolean, String> {
return Pair(isDefaultBrowser(), PixelParameter.DEFAULT_BROWSER)
override fun featureStateParams(): Map<String, String> {
return mapOf(PixelParameter.DEFAULT_BROWSER to isDefaultBrowser().toBinaryString())
}

@Suppress("NewApi") // we use appBuildConfig
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/java/com/duckduckgo/app/email/AppEmailManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter
import com.duckduckgo.autofill.api.email.EmailManager
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.di.scopes.AppScope
import com.squareup.anvil.annotations.ContributesBinding
import com.squareup.anvil.annotations.ContributesMultibinding
Expand Down Expand Up @@ -188,7 +189,7 @@ class AppEmailManager @Inject constructor(
nextAlias = null
}

override fun featureState(): Pair<Boolean, String> {
return Pair(isSignedIn(), PixelParameter.EMAIL)
override fun featureStateParams(): Map<String, String> {
return mapOf(PixelParameter.EMAIL to isSignedIn().toBinaryString())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ import com.duckduckgo.app.pixels.AppPixelName
import com.duckduckgo.app.pixels.AppPixelName.FEEDBACK_NEGATIVE_SUBMISSION
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter.LOADING_BAR_EXPERIMENT
import com.duckduckgo.app.statistics.pixels.toBinaryString
import com.duckduckgo.app.statistics.store.StatisticsDataStore
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.experiments.api.VariantManager
import com.duckduckgo.experiments.api.loadingbarexperiment.LoadingBarExperimentManager
import java.util.Locale
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024 DuckDuckGo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.duckduckgo.common.utils.extensions

fun Boolean.toBinaryString(): String = if (this) "1" else "0"
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@ package com.duckduckgo.app.statistics.api
interface BrowserFeatureStateReporterPlugin {

/**
* Used by the [StatisticsPixelName.BROWSER_DAILY_ACTIVE_FEATURE_STATE] pixel,
* to notify the state of a feature
* @return true if the feature is enabled, false if not, alongside the feature name
* Used to report the state across different modules in the browser
* @return a map of key-value pairs that represent the state of the features
*/
fun featureState(): Pair<Boolean, String>
fun featureStateParams(): Map<String, String>
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter.LOADING_BAR_EXP
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter.LOCALE
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.common.utils.extensions.toSanitizedLanguageTag
import com.duckduckgo.common.utils.plugins.PluginPoint
import com.duckduckgo.di.scopes.AppScope
Expand Down Expand Up @@ -71,8 +72,7 @@ class FeatureRetentionPixelSender @Inject constructor(

val parameters = mutableMapOf<String, String>()
plugins.getPlugins().forEach { plugin ->
val featureState = plugin.featureState()
parameters[featureState.second] = featureState.first.toBinaryString()
parameters += plugin.featureStateParams()
}

parameters[LOCALE] = getLocale()
Expand Down Expand Up @@ -105,5 +105,3 @@ class FeatureRetentionPixelSender @Inject constructor(
private fun String.appendTimestampSuffix(): String {
return "${this}_timestamp"
}

fun Boolean.toBinaryString(): String = if (this) "1" else "0"
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.duckduckgo.voice.impl

import com.duckduckgo.app.statistics.api.BrowserFeatureStateReporterPlugin
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter
import com.duckduckgo.common.utils.extensions.toBinaryString
import com.duckduckgo.di.scopes.AppScope
import com.duckduckgo.voice.api.VoiceSearchAvailability
import com.squareup.anvil.annotations.ContributesBinding
Expand All @@ -31,7 +32,7 @@ interface VoiceStateReporterPlugin
class RealVoiceStateReporterPlugin @Inject constructor(
private val voiceSearchAvailability: VoiceSearchAvailability,
) : VoiceStateReporterPlugin, BrowserFeatureStateReporterPlugin {
override fun featureState(): Pair<Boolean, String> {
return Pair(voiceSearchAvailability.isVoiceSearchAvailable, PixelParameter.VOICE_SEARCH)
override fun featureStateParams(): Map<String, String> {
return mapOf(PixelParameter.VOICE_SEARCH to voiceSearchAvailability.isVoiceSearchAvailable.toBinaryString())
}
}

0 comments on commit 90b4dd9

Please sign in to comment.