Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import com.duckduckgo.app.settings.SettingsViewModel.Command
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.Variant
import com.duckduckgo.app.statistics.VariantManager
import com.duckduckgo.app.statistics.VariantManager.VariantFeature.ThemeFeature.ThemeToggle
import com.duckduckgo.app.statistics.pixels.Pixel
import com.nhaarman.mockito_kotlin.*
import org.junit.Assert.*
Expand Down Expand Up @@ -208,19 +207,5 @@ class SettingsViewModelTest {
assertEquals(expectedStartString, latestViewState().version)
}

@Test
fun whenThemeToggleFeatureExistsThenThemeToggleIsShown() {
whenever(mockVariantManager.getVariant()).thenReturn(Variant("aa", 1.0, listOf(ThemeToggle)))
testee.start()
assertTrue(latestViewState().showThemeToggle)
}

@Test
fun whenThemeToggleFeatureDoesNotExistThenThemeToggleIsNotShown() {
whenever(mockVariantManager.getVariant()).thenReturn(Variant("aa", 1.0, emptyList()))
testee.start()
assertFalse(latestViewState().showThemeToggle)
}

private fun latestViewState() = testee.viewState.value!!
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import android.support.v4.content.LocalBroadcastManager
import android.support.v7.app.AppCompatActivity
import android.view.MenuItem
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.VariantManager
import dagger.android.AndroidInjection
import javax.inject.Inject

Expand All @@ -37,14 +36,11 @@ abstract class DuckDuckGoActivity : AppCompatActivity() {
@Inject
lateinit var settingsDataStore: SettingsDataStore

@Inject
lateinit var variantManager: VariantManager

private var themeChangeReceiver: BroadcastReceiver? = null

override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
themeChangeReceiver = applyTheme(settingsDataStore, variantManager.getVariant())
themeChangeReceiver = applyTheme(settingsDataStore)
super.onCreate(savedInstanceState)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ import com.duckduckgo.app.httpsupgrade.HttpsUpgrader
import com.duckduckgo.app.job.AppConfigurationSyncer
import com.duckduckgo.app.migration.LegacyMigration
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.VariantManager
import com.duckduckgo.app.statistics.api.StatisticsUpdater
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.pixels.Pixel.PixelName.APP_LAUNCH
Expand Down Expand Up @@ -90,10 +89,7 @@ open class DuckDuckGoApplication : HasActivityInjector, HasServiceInjector, HasS

@Inject
lateinit var notificationRegistrar: NotificationRegistrar

@Inject
lateinit var variantManager: VariantManager


@Inject
lateinit var pixel: Pixel

Expand Down Expand Up @@ -127,7 +123,7 @@ open class DuckDuckGoApplication : HasActivityInjector, HasServiceInjector, HasS
}

initializeStatistics()
initializeTheme(settingsDataStore, variantManager.getVariant())
initializeTheme(settingsDataStore)
loadTrackerData()
configureDataDownloader()
recordInstallationTimestamp()
Expand Down
10 changes: 3 additions & 7 deletions app/src/main/java/com/duckduckgo/app/global/Theming.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,9 @@ import android.content.Intent
import android.content.IntentFilter
import android.support.v4.content.LocalBroadcastManager
import com.duckduckgo.app.browser.R
import com.duckduckgo.app.global.DuckDuckGoTheme.DARK
import com.duckduckgo.app.global.DuckDuckGoTheme.LIGHT
import com.duckduckgo.app.global.Theming.Constants.BROADCAST_THEME_CHANGED
import com.duckduckgo.app.global.Theming.Constants.THEME_MAP
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.Variant
import com.duckduckgo.app.statistics.VariantManager.VariantFeature.ThemeFeature.LightThemeAsDefault


enum class DuckDuckGoTheme {
Expand All @@ -38,9 +34,9 @@ enum class DuckDuckGoTheme {

object Theming {

fun initializeTheme(settingsDataStore: SettingsDataStore, variant: Variant) {
fun initializeTheme(settingsDataStore: SettingsDataStore) {
if (settingsDataStore.theme == null) {
settingsDataStore.theme = if (variant.hasFeature(LightThemeAsDefault)) LIGHT else DARK
settingsDataStore.theme = DuckDuckGoTheme.DARK
}
}

Expand All @@ -55,7 +51,7 @@ object Theming {
}
}

fun DuckDuckGoActivity.applyTheme(settingsDataStore: SettingsDataStore, variant: Variant): BroadcastReceiver? {
fun DuckDuckGoActivity.applyTheme(settingsDataStore: SettingsDataStore): BroadcastReceiver? {
val themeId = THEME_MAP[Pair(manifestThemeId(), settingsDataStore.theme)] ?: return null
setTheme(themeId)
return registerForThemeChangeBroadcast()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import android.os.Bundle
import android.support.v7.widget.SwitchCompat
import android.view.View
import android.widget.CompoundButton.OnCheckedChangeListener
import androidx.core.view.isVisible
import com.duckduckgo.app.about.AboutDuckDuckGoActivity
import com.duckduckgo.app.browser.R
import com.duckduckgo.app.feedback.ui.FeedbackActivity
Expand Down Expand Up @@ -77,7 +76,6 @@ class SettingsActivity : DuckDuckGoActivity() {
viewModel.viewState.observe(this, Observer<SettingsViewModel.ViewState> { viewState ->
viewState?.let {
version.text = it.version
lightThemeToggle.isVisible = it.showThemeToggle
lightThemeToggle.quietlySetIsChecked(it.lightThemeEnabled, lightThemeToggleListener)
autocompleteToggle.quietlySetIsChecked(it.autoCompleteSuggestionsEnabled, autocompleteToggleListener)
updateDefaultBrowserViewVisibility(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import com.duckduckgo.app.global.DuckDuckGoTheme
import com.duckduckgo.app.global.SingleLiveEvent
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.VariantManager
import com.duckduckgo.app.statistics.VariantManager.VariantFeature.ThemeFeature.ThemeToggle
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.pixels.Pixel.PixelName.*
import timber.log.Timber
Expand All @@ -40,7 +39,6 @@ class SettingsViewModel @Inject constructor(
data class ViewState(
val loading: Boolean = true,
val version: String = "",
val showThemeToggle: Boolean = false,
val lightThemeEnabled: Boolean = false,
val autoCompleteSuggestionsEnabled: Boolean = true,
val showDefaultBrowserSetting: Boolean = false,
Expand Down Expand Up @@ -73,7 +71,6 @@ class SettingsViewModel @Inject constructor(

viewState.value = currentViewState.copy(
loading = false,
showThemeToggle = variant.hasFeature(ThemeToggle),
lightThemeEnabled = isLightTheme,
autoCompleteSuggestionsEnabled = settingsDataStore.autoCompleteSuggestionsEnabled,
isAppDefaultBrowser = defaultBrowserAlready,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,15 @@

package com.duckduckgo.app.statistics

import android.os.Build
import android.support.annotation.WorkerThread
import com.duckduckgo.app.statistics.VariantManager.Companion.DEFAULT_VARIANT
import com.duckduckgo.app.statistics.VariantManager.VariantFeature.ThemeFeature.*
import com.duckduckgo.app.statistics.store.StatisticsDataStore
import timber.log.Timber

@WorkerThread
interface VariantManager {

sealed class VariantFeature {

sealed class ThemeFeature : VariantFeature() {
object ThemeToggle : ThemeFeature()
object LightThemeAsDefault : ThemeFeature()
object DarkThemeAsDefault : ThemeFeature()
}
}

companion object {
Expand All @@ -43,13 +35,7 @@ interface VariantManager {
val ACTIVE_VARIANTS = listOf(
// SERP variants - do not remove
Variant(key = "sa", weight = 1.0, features = emptyList()),
Variant(key = "sb", weight = 1.0, features = emptyList()),

// Light theme experiment
Variant(key = "mg", weight = 2.0, features = emptyList()),
Variant(key = "mh", weight = 1.0, features = listOf(LightThemeAsDefault, ThemeToggle)),
Variant(key = "mj", weight = 1.0, features = listOf(DarkThemeAsDefault, ThemeToggle))
)
Variant(key = "sb", weight = 1.0, features = emptyList()))
}

fun getVariant(activeVariants: List<Variant> = ACTIVE_VARIANTS): Variant
Expand Down