From db47f4182d9308877209b9587f900d6273a1a282 Mon Sep 17 00:00:00 2001 From: sunilk9211 Date: Tue, 16 Aug 2022 00:14:53 +0530 Subject: [PATCH] For #25985: Remove ability to click the logo to change the wallpaper --- .../perf/StartupExcessiveResourceUseTest.kt | 2 +- .../mozilla/fenix/components/Components.kt | 2 - .../org/mozilla/fenix/home/HomeFragment.kt | 52 ----------------- .../settings/wallpaper/WallpaperSettings.kt | 43 -------------- .../wallpaper/WallpaperSettingsFragment.kt | 19 ------ .../java/org/mozilla/fenix/utils/Settings.kt | 14 ----- .../fenix/wallpapers/WallpaperManager.kt | 58 ------------------- app/src/main/res/values/preference_keys.xml | 2 - app/src/main/res/values/strings.xml | 4 +- 9 files changed, 3 insertions(+), 193 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/perf/StartupExcessiveResourceUseTest.kt b/app/src/androidTest/java/org/mozilla/fenix/perf/StartupExcessiveResourceUseTest.kt index df7111c1d..e16a6b093 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/perf/StartupExcessiveResourceUseTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/perf/StartupExcessiveResourceUseTest.kt @@ -35,7 +35,7 @@ import org.mozilla.fenix.helpers.HomeActivityTestRule * * Say no to main thread IO! 🙅 */ -private const val EXPECTED_SUPPRESSION_COUNT = 18 +private const val EXPECTED_SUPPRESSION_COUNT = 17 /** * The number of times we call the `runBlocking` coroutine method on the main thread during this diff --git a/app/src/main/java/org/mozilla/fenix/components/Components.kt b/app/src/main/java/org/mozilla/fenix/components/Components.kt index 155aab157..854dc6fb9 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -163,9 +163,7 @@ class Components(private val context: Context) { val wallpaperManager by lazyMonitored { strictMode.resetAfter(StrictMode.allowThreadDiskReads()) { WallpaperManager( - settings, appStore, - useCases.wallpaperUseCases.selectWallpaper, ) } } diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index dc51e680a..7d76fb970 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -14,7 +14,6 @@ import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.view.ViewTreeObserver import android.widget.Button import android.widget.LinearLayout import android.widget.PopupWindow @@ -77,7 +76,6 @@ import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged import org.mozilla.fenix.Config import org.mozilla.fenix.GleanMetrics.Events import org.mozilla.fenix.GleanMetrics.HomeScreen -import org.mozilla.fenix.GleanMetrics.Wallpapers import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R import org.mozilla.fenix.browser.BrowserAnimator.Companion.getToolbarNavOptions @@ -743,21 +741,6 @@ class HomeFragment : Fragment() { lifecycleScope.launch(IO) { requireComponents.reviewPromptController.promptReview(requireActivity()) } - - if (shouldEnableWallpaper() && context.settings().wallpapersSwitchedByLogoTap) { - binding.wordmark.contentDescription = - context.getString(R.string.wallpaper_logo_content_description) - binding.wordmark.setOnClickListener { - val manager = requireComponents.wallpaperManager - val newWallpaper = manager.switchToNextWallpaper() - Wallpapers.wallpaperSwitched.record( - Wallpapers.WallpaperSwitchedExtra( - name = newWallpaper.name, - themeCollection = newWallpaper::class.simpleName - ) - ) - } - } } private fun dispatchModeChanges(mode: Mode) { @@ -801,25 +784,6 @@ class HomeFragment : Fragment() { // triggered to cause an automatic update on warm start (no tab selection occurs). So we // update it manually here. requireComponents.useCases.sessionUseCases.updateLastAccess() - if (shouldAnimateLogoForWallpaper()) { - _binding?.sessionControlRecyclerView?.viewTreeObserver?.addOnGlobalLayoutListener( - homeLayoutListenerForLogoAnimation - ) - } - } - - // To try to find a good time to show the logo animation, we are waiting until all - // the sub-recyclerviews (recentBookmarks, collections, recentTabs,recentVisits - // and pocketStories) on the home screen have been layout. - private val homeLayoutListenerForLogoAnimation = object : ViewTreeObserver.OnGlobalLayoutListener { - override fun onGlobalLayout() { - _binding?.let { safeBindings -> - requireComponents.wallpaperManager.animateLogoIfNeeded(safeBindings.wordmark) - safeBindings.sessionControlRecyclerView.viewTreeObserver.removeOnGlobalLayoutListener( - this - ) - } - } } override fun onPause() { @@ -982,22 +946,6 @@ class HomeFragment : Fragment() { } } - // We want to show the animation in a time when the user less distracted - // The Heuristics are: - // 1) The animation hasn't shown before. - // 2) The user has onboarded. - // 3) It's the third time the user enters the app. - // 4) The user is part of the right audience. - @Suppress("MagicNumber") - private fun shouldAnimateLogoForWallpaper(): Boolean { - val localContext = context ?: return false - val settings = localContext.settings() - - return shouldEnableWallpaper() && settings.shouldAnimateFirefoxLogo && - onboarding.userHasBeenOnboarded() && - settings.numberOfAppLaunches >= 3 - } - private fun shouldEnableWallpaper() = (activity as? HomeActivity)?.themeManager?.currentTheme?.isPrivate?.not() ?: false diff --git a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt index b3b4e6f79..77f5d9c9e 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.border import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -28,8 +27,6 @@ import androidx.compose.material.Snackbar import androidx.compose.material.SnackbarDuration import androidx.compose.material.SnackbarHost import androidx.compose.material.Surface -import androidx.compose.material.Switch -import androidx.compose.material.SwitchDefaults import androidx.compose.material.Text import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable @@ -48,7 +45,6 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import kotlinx.coroutines.launch import org.mozilla.fenix.R import org.mozilla.fenix.compose.button.TextButton @@ -66,8 +62,6 @@ import org.mozilla.fenix.wallpapers.Wallpaper * @param loadWallpaperResource Callback to handle loading a wallpaper bitmap. Only optional in the default case. * @param onSelectWallpaper Callback for when a new wallpaper is selected. * @param onViewWallpaper Callback for when the view action is clicked from snackbar. - * @param tapLogoSwitchChecked Enabled state for switch controlling taps to change wallpaper. - * @param onTapLogoSwitchCheckedChange Callback for when state of above switch is updated. */ @Composable @Suppress("LongParameterList") @@ -78,8 +72,6 @@ fun WallpaperSettings( selectedWallpaper: Wallpaper, onSelectWallpaper: (Wallpaper) -> Unit, onViewWallpaper: () -> Unit, - tapLogoSwitchChecked: Boolean, - onTapLogoSwitchCheckedChange: (Boolean) -> Unit ) { val coroutineScope = rememberCoroutineScope() val scaffoldState = rememberScaffoldState() @@ -109,7 +101,6 @@ fun WallpaperSettings( onSelectWallpaper(updatedWallpaper) }, ) - WallpaperLogoSwitch(tapLogoSwitchChecked, onCheckedChange = onTapLogoSwitchCheckedChange) } } } @@ -253,38 +244,6 @@ private fun WallpaperThumbnailItem( } } -@Composable -@Suppress("MagicNumber") -private fun WallpaperLogoSwitch( - checked: Boolean, - onCheckedChange: (Boolean) -> Unit -) { - Row( - modifier = Modifier - .padding(horizontal = 16.dp, vertical = 16.dp) - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - text = stringResource(R.string.wallpaper_tap_to_change_switch_label_1), - color = FirefoxTheme.colors.textPrimary, - fontSize = 18.sp, - modifier = Modifier - .weight(0.8f) - ) - - Switch( - checked = checked, - onCheckedChange = onCheckedChange, - colors = SwitchDefaults.colors( - checkedThumbColor = FirefoxTheme.colors.formSelected, - checkedTrackColor = FirefoxTheme.colors.formSurface, - uncheckedTrackColor = FirefoxTheme.colors.formSurface - ) - ) - } -} - @Preview @Composable private fun WallpaperThumbnailsPreview() { @@ -297,8 +256,6 @@ private fun WallpaperThumbnailsPreview() { selectedWallpaper = Wallpaper.Default, onSelectWallpaper = {}, onViewWallpaper = {}, - tapLogoSwitchChecked = false, - onTapLogoSwitchCheckedChange = {} ) } } diff --git a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt index 90241aa74..6d7f23131 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt @@ -8,10 +8,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment @@ -34,10 +30,6 @@ class WallpaperSettingsFragment : Fragment() { requireComponents.useCases.wallpaperUseCases } - private val settings by lazy { - requireComponents.settings - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -54,7 +46,6 @@ class WallpaperSettingsFragment : Fragment() { val currentWallpaper = appStore.observeAsComposableState { state -> state.wallpaperState.currentWallpaper }.value ?: Wallpaper.Default - var wallpapersSwitchedByLogo by remember { mutableStateOf(settings.wallpapersSwitchedByLogoTap) } WallpaperSettings( wallpapers = wallpapers, @@ -63,16 +54,6 @@ class WallpaperSettingsFragment : Fragment() { selectedWallpaper = currentWallpaper, onSelectWallpaper = { wallpaperUseCases.selectWallpaper(it) }, onViewWallpaper = { findNavController().navigate(R.id.homeFragment) }, - tapLogoSwitchChecked = wallpapersSwitchedByLogo, - onTapLogoSwitchCheckedChange = { - settings.wallpapersSwitchedByLogoTap = it - wallpapersSwitchedByLogo = it - Wallpapers.changeWallpaperLogoToggled.record( - Wallpapers.ChangeWallpaperLogoToggledExtra( - checked = it - ) - ) - } ) } } 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 6e3a9cc98..7ab302e91 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -190,11 +190,6 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = Wallpaper.Default.name ) - var wallpapersSwitchedByLogoTap by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_wallpapers_switched_by_logo_tap), - default = true - ) - /** * Indicates if the wallpaper onboarding dialog should be shown. */ @@ -418,15 +413,6 @@ class Settings(private val appContext: Context) : PreferencesHolder { featureFlag = FeatureFlags.inactiveTabs ) - /** - * Indicates if the Firefox logo on the home screen should be animated, - * to show users that they can change the wallpaper by tapping on the Firefox logo. - */ - var shouldAnimateFirefoxLogo by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_show_logo_animation), - default = true, - ) - @VisibleForTesting internal fun timeNowInMillis(): Long = System.currentTimeMillis() diff --git a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperManager.kt b/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperManager.kt index c11154f8a..8edf4bf70 100644 --- a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperManager.kt +++ b/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperManager.kt @@ -4,11 +4,6 @@ package org.mozilla.fenix.wallpapers -import android.animation.AnimatorSet -import android.animation.ObjectAnimator -import android.os.Handler -import android.os.Looper -import android.view.View import mozilla.components.support.base.log.logger.Logger import org.mozilla.fenix.components.AppStore import org.mozilla.fenix.utils.Settings @@ -18,65 +13,13 @@ import org.mozilla.fenix.utils.Settings */ @Suppress("TooManyFunctions") class WallpaperManager( - private val settings: Settings, private val appStore: AppStore, - private val selectWallpaperUseCase: WallpapersUseCases.SelectWallpaperUseCase, ) { val logger = Logger("WallpaperManager") val wallpapers get() = appStore.state.wallpaperState.availableWallpapers val currentWallpaper: Wallpaper get() = appStore.state.wallpaperState.currentWallpaper - /** - * Returns the next available [Wallpaper], the [currentWallpaper] is the last one then - * the first available [Wallpaper] will be returned. - */ - fun switchToNextWallpaper(): Wallpaper { - val values = wallpapers - val index = values.indexOf(currentWallpaper) + 1 - - return if (index >= values.size) { - values.first() - } else { - values[index] - }.also { - selectWallpaperUseCase(it) - } - } - - /** - * Animates the Firefox logo, if it hasn't been animated before, otherwise nothing will happen. - * After animating the first time, the [Settings.shouldAnimateFirefoxLogo] setting - * will be updated. - */ - @Suppress("MagicNumber") - fun animateLogoIfNeeded(logo: View) { - if (!settings.shouldAnimateFirefoxLogo) { - return - } - Handler(Looper.getMainLooper()).postDelayed( - { - val animator1 = ObjectAnimator.ofFloat(logo, "rotation", 0f, 10f) - val animator2 = ObjectAnimator.ofFloat(logo, "rotation", 10f, 0f) - val animator3 = ObjectAnimator.ofFloat(logo, "rotation", 0f, 10f) - val animator4 = ObjectAnimator.ofFloat(logo, "rotation", 10f, 0f) - - animator1.duration = 200 - animator2.duration = 200 - animator3.duration = 200 - animator4.duration = 200 - - val set = AnimatorSet() - - set.play(animator1).before(animator2).after(animator3).before(animator4) - set.start() - - settings.shouldAnimateFirefoxLogo = false - }, - ANIMATION_DELAY_MS - ) - } - companion object { /** * Get whether the default wallpaper should be used. @@ -86,6 +29,5 @@ class WallpaperManager( } val defaultWallpaper = Wallpaper.Default - private const val ANIMATION_DELAY_MS = 1500L } } diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 5607f1119..0ab0608b8 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -202,8 +202,6 @@ pref_key_wallpapers pref_key_current_wallpaper - pref_key_wallpapers_switched_by_logo_tap - pref_key_show_logo_animation pref_key_wallpapers_onboarding pref_key_encryption_key_generated diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a4bdc4190..0bea8990a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -427,10 +427,10 @@ View - Change wallpaper by tapping Firefox homepage logo + Change wallpaper by tapping Firefox homepage logo - Firefox logo - change the wallpaper, button + Firefox logo - change the wallpaper, button