[fenix] For https://github.com/mozilla-mobile/fenix/issues/26424 - Add contrasting text color for migrated Turning Red Wallpapers

pull/600/head
Mugurell 2 years ago committed by mergify[bot]
parent bfddfa7177
commit 342c9551e4

@ -7,6 +7,7 @@ package org.mozilla.fenix.wallpapers
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import mozilla.components.support.base.log.logger.Logger import mozilla.components.support.base.log.logger.Logger
import org.mozilla.fenix.utils.Settings
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
@ -14,9 +15,11 @@ import java.io.IOException
* Manages the migration of legacy wallpapers to the new paths * Manages the migration of legacy wallpapers to the new paths
* *
* @property storageRootDirectory The top level app-local storage directory. * @property storageRootDirectory The top level app-local storage directory.
* @property settings Used to update the color of the text shown above wallpapers.
*/ */
class LegacyWallpaperMigration( class LegacyWallpaperMigration(
private val storageRootDirectory: File, private val storageRootDirectory: File,
private val settings: Settings,
) { ) {
/** /**
* Migrate the legacy wallpaper to the new path and delete the remaining legacy files. * Migrate the legacy wallpaper to the new path and delete the remaining legacy files.
@ -60,6 +63,11 @@ class LegacyWallpaperMigration(
"$targetDirectory/landscape.png", "$targetDirectory/landscape.png",
), ),
) )
// If an expired Turning Red wallpaper is successfully migrated
if (wallpaperName == TURNING_RED_MEI_WALLPAPER_NAME || wallpaperName == TURNING_RED_PANDA_WALLPAPER_NAME) {
settings.currentWallpaperTextColor = TURNING_RED_WALLPAPER_TEXT_COLOR.toLong(radix = 16)
}
} catch (e: IOException) { } catch (e: IOException) {
Logger.error("Failed to migrate legacy wallpaper", e) Logger.error("Failed to migrate legacy wallpaper", e)
} }
@ -68,4 +76,10 @@ class LegacyWallpaperMigration(
File(storageRootDirectory, "wallpapers/portrait").deleteRecursively() File(storageRootDirectory, "wallpapers/portrait").deleteRecursively()
File(storageRootDirectory, "wallpapers/landscape").deleteRecursively() File(storageRootDirectory, "wallpapers/landscape").deleteRecursively()
} }
companion object {
const val TURNING_RED_MEI_WALLPAPER_NAME = "mei"
const val TURNING_RED_PANDA_WALLPAPER_NAME = "panda"
const val TURNING_RED_WALLPAPER_TEXT_COLOR = "FFFBFBFE"
}
} }

@ -47,7 +47,10 @@ class WallpapersUseCases(
val initialize: InitializeWallpapersUseCase by lazy { val initialize: InitializeWallpapersUseCase by lazy {
if (FeatureFlags.wallpaperV2Enabled) { if (FeatureFlags.wallpaperV2Enabled) {
val metadataFetcher = WallpaperMetadataFetcher(client) val metadataFetcher = WallpaperMetadataFetcher(client)
val migrationHelper = LegacyWallpaperMigration(storageRootDirectory) val migrationHelper = LegacyWallpaperMigration(
storageRootDirectory = storageRootDirectory,
settings = context.settings(),
)
DefaultInitializeWallpaperUseCase( DefaultInitializeWallpaperUseCase(
store = store, store = store,
downloader = downloader, downloader = downloader,

@ -1,5 +1,7 @@
package org.mozilla.fenix.wallpapers package org.mozilla.fenix.wallpapers
import io.mockk.mockk
import io.mockk.verify
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
@ -7,12 +9,17 @@ import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.rules.TemporaryFolder import org.junit.rules.TemporaryFolder
import org.mozilla.fenix.utils.Settings
import org.mozilla.fenix.wallpapers.LegacyWallpaperMigration.Companion.TURNING_RED_MEI_WALLPAPER_NAME
import org.mozilla.fenix.wallpapers.LegacyWallpaperMigration.Companion.TURNING_RED_PANDA_WALLPAPER_NAME
import org.mozilla.fenix.wallpapers.LegacyWallpaperMigration.Companion.TURNING_RED_WALLPAPER_TEXT_COLOR
import java.io.File import java.io.File
class LegacyWallpaperMigrationTest { class LegacyWallpaperMigrationTest {
@Rule @Rule
@JvmField @JvmField
val tempFolder = TemporaryFolder() val tempFolder = TemporaryFolder()
private lateinit var settings: Settings
private lateinit var wallpapersFolder: File private lateinit var wallpapersFolder: File
private lateinit var migrationHelper: LegacyWallpaperMigration private lateinit var migrationHelper: LegacyWallpaperMigration
private lateinit var portraitLightFolder: File private lateinit var portraitLightFolder: File
@ -23,8 +30,10 @@ class LegacyWallpaperMigrationTest {
@Before @Before
fun setup() { fun setup() {
wallpapersFolder = File(tempFolder.root, "wallpapers") wallpapersFolder = File(tempFolder.root, "wallpapers")
settings = mockk(relaxed = true)
migrationHelper = LegacyWallpaperMigration( migrationHelper = LegacyWallpaperMigration(
storageRootDirectory = tempFolder.root, storageRootDirectory = tempFolder.root,
settings = settings,
) )
} }
@ -83,8 +92,62 @@ class LegacyWallpaperMigrationTest {
assertFalse(getAllFiles(landscapeOnlyWallpaperName).any { it.exists() }) assertFalse(getAllFiles(landscapeOnlyWallpaperName).any { it.exists() })
} }
@Test
fun `GIVEN a Turning Red wallpaper WHEN it is successfully migrated THEN set a matching text color`() {
runTest {
createAllLegacyFiles(TURNING_RED_MEI_WALLPAPER_NAME)
migrationHelper.migrateLegacyWallpaper(TURNING_RED_MEI_WALLPAPER_NAME)
assertTrue(getAllFiles(TURNING_RED_MEI_WALLPAPER_NAME).all { it.exists() })
verify(exactly = 1) {
settings.currentWallpaperTextColor = TURNING_RED_WALLPAPER_TEXT_COLOR.toLong(radix = 16)
}
createAllLegacyFiles(TURNING_RED_PANDA_WALLPAPER_NAME)
migrationHelper.migrateLegacyWallpaper(TURNING_RED_PANDA_WALLPAPER_NAME)
assertTrue(getAllFiles(TURNING_RED_PANDA_WALLPAPER_NAME).all { it.exists() })
verify(exactly = 2) {
settings.currentWallpaperTextColor = TURNING_RED_WALLPAPER_TEXT_COLOR.toLong(radix = 16)
}
}
}
@Test
fun `GIVEN a Turning Red wallpaper WHEN it can't be migrated THEN don't set a matching text color`() {
runTest {
migrationHelper.migrateLegacyWallpaper(TURNING_RED_MEI_WALLPAPER_NAME)
migrationHelper.migrateLegacyWallpaper(TURNING_RED_PANDA_WALLPAPER_NAME)
assertFalse(getAllFiles(TURNING_RED_MEI_WALLPAPER_NAME).all { it.exists() })
assertFalse(getAllFiles(TURNING_RED_PANDA_WALLPAPER_NAME).all { it.exists() })
verify(exactly = 0) {
settings.currentWallpaperTextColor = TURNING_RED_WALLPAPER_TEXT_COLOR.toLong(radix = 16)
}
}
}
@Test
fun `GIVEN legacy wallpapers different than Turning Red WHEN they are tried to be migrated THEN don't set a matching text color`() {
runTest {
val wallpaper1 = "wallpaper1"
val wallpaper2 = "wallpaper2"
migrationHelper.migrateLegacyWallpaper(wallpaper1)
assertFalse(getAllFiles(wallpaper1).all { it.exists() })
verify(exactly = 0) {
settings.currentWallpaperTextColor = TURNING_RED_WALLPAPER_TEXT_COLOR.toLong(radix = 16)
}
createAllLegacyFiles(wallpaper2)
migrationHelper.migrateLegacyWallpaper(wallpaper2)
assertTrue(getAllFiles(wallpaper2).all { it.exists() })
verify(exactly = 0) {
settings.currentWallpaperTextColor = TURNING_RED_WALLPAPER_TEXT_COLOR.toLong(radix = 16)
}
}
}
private fun createAllLegacyFiles(name: String) { private fun createAllLegacyFiles(name: String) {
if (!this::portraitLightFolder.isInitialized) { if (!this::portraitLightFolder.isInitialized || !portraitLightFolder.exists()) {
portraitLightFolder = tempFolder.newFolder("wallpapers", "portrait", "light") portraitLightFolder = tempFolder.newFolder("wallpapers", "portrait", "light")
portraitDarkFolder = tempFolder.newFolder("wallpapers", "portrait", "dark") portraitDarkFolder = tempFolder.newFolder("wallpapers", "portrait", "dark")
landscapeLightFolder = tempFolder.newFolder("wallpapers", "landscape", "light") landscapeLightFolder = tempFolder.newFolder("wallpapers", "landscape", "light")

Loading…
Cancel
Save