diff --git a/app/src/main/assets/wallpapers/wallpaper_1.png b/app/src/main/assets/wallpapers/wallpaper_1.png deleted file mode 100644 index 1138f6ee0e..0000000000 Binary files a/app/src/main/assets/wallpapers/wallpaper_1.png and /dev/null differ diff --git a/app/src/main/assets/wallpapers/wallpaper_2.png b/app/src/main/assets/wallpapers/wallpaper_2.png deleted file mode 100644 index b458d6a351..0000000000 Binary files a/app/src/main/assets/wallpapers/wallpaper_2.png and /dev/null differ diff --git a/app/src/main/assets/wallpapers/wallpapers.json b/app/src/main/assets/wallpapers/wallpapers.json deleted file mode 100644 index fa10c46f5c..0000000000 --- a/app/src/main/assets/wallpapers/wallpapers.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "name": "wallpaper_1", - "portrait": "wallpapers/wallpaper_1.png", - "landscape": "wallpapers/wallpaper_1.png", - "isDark":true - }, - { - "name": "wallpaper_2", - "portrait": "wallpapers/wallpaper_2.png", - "landscape": "wallpapers/wallpaper_2.png", - "isDark":false - } -] \ No newline at end of file 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 051fe8417f..2ea88a5b35 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -38,7 +38,6 @@ import org.mozilla.fenix.utils.ClipboardHandler import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.wallpapers.WallpaperDownloader import org.mozilla.fenix.wallpapers.WallpaperManager -import org.mozilla.fenix.wallpapers.WallpapersAssetsStorage import org.mozilla.fenix.wifi.WifiConnectionMonitor import java.util.concurrent.TimeUnit @@ -148,7 +147,6 @@ class Components(private val context: Context) { val wallpaperManager by lazyMonitored { WallpaperManager( settings, - WallpapersAssetsStorage(context), WallpaperDownloader(context, core.client, analytics.crashReporter), analytics.crashReporter, ) diff --git a/app/src/main/java/org/mozilla/fenix/wallpapers/Wallpaper.kt b/app/src/main/java/org/mozilla/fenix/wallpapers/Wallpaper.kt index 13838550be..f9ea1f1e84 100644 --- a/app/src/main/java/org/mozilla/fenix/wallpapers/Wallpaper.kt +++ b/app/src/main/java/org/mozilla/fenix/wallpapers/Wallpaper.kt @@ -6,6 +6,7 @@ package org.mozilla.fenix.wallpapers import android.content.Context import android.content.res.Configuration +import org.mozilla.fenix.R /** * A class that represents an available wallpaper and its state. @@ -17,9 +18,6 @@ import android.content.res.Configuration */ data class Wallpaper( val name: String, - val portraitPath: String, - val landscapePath: String, - val isDark: Boolean, val themeCollection: WallpaperThemeCollection, ) @@ -51,6 +49,13 @@ enum class WallpaperOrigin { REMOTE, } +val Wallpaper.drawableId: Int get() = when (name) { + "amethyst" -> R.drawable.amethyst + "cerulean" -> R.drawable.cerulean + "sunrise" -> R.drawable.sunrise + else -> -1 +} + /** * Get the expected local path on disk for a wallpaper. This will differ depending * on orientation and app theme. 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 c15d4f6277..b0e0193f72 100644 --- a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperManager.kt +++ b/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperManager.kt @@ -7,7 +7,6 @@ package org.mozilla.fenix.wallpapers import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.content.Context -import android.content.res.Configuration import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.drawable.BitmapDrawable @@ -30,7 +29,6 @@ import java.io.File @Suppress("TooManyFunctions") class WallpaperManager( private val settings: Settings, - private val wallpaperStorage: WallpaperStorage, private val downloader: WallpaperDownloader, private val crashReporter: CrashReporter, ) { @@ -38,13 +36,10 @@ class WallpaperManager( private val remoteWallpapers = listOf( Wallpaper( "focus", - portraitPath = "", - landscapePath = "", - isDark = false, themeCollection = WallpaperThemeCollection.FOCUS ), ) - var availableWallpapers: List = loadWallpapers() + remoteWallpapers + var availableWallpapers: List = localWallpapers + remoteWallpapers private set var currentWallpaper: Wallpaper = getCurrentWallpaperFromSettings() @@ -114,22 +109,18 @@ class WallpaperManager( */ fun loadSavedWallpaper(context: Context, wallpaper: Wallpaper): Bitmap? = if (wallpaper.themeCollection.origin == WallpaperOrigin.LOCAL) { - loadWallpaperFromAssets(context, wallpaper) + loadWallpaperFromDrawables(context, wallpaper) } else { loadWallpaperFromDisk(context, wallpaper) } - private fun loadWallpaperFromAssets(context: Context, wallpaper: Wallpaper): Bitmap? = Result.runCatching { - val path = if (isLandscape(context)) { - wallpaper.landscapePath - } else { - wallpaper.portraitPath - } - context.assets.open(path).use { - BitmapFactory.decodeStream(it) - } + private fun loadWallpaperFromDrawables(context: Context, wallpaper: Wallpaper): Bitmap? = Result.runCatching { + BitmapFactory.decodeResource(context.resources, wallpaper.drawableId) }.getOrNull() + /** + * Load a wallpaper from app-specific storage. + */ private fun loadWallpaperFromDisk(context: Context, wallpaper: Wallpaper): Bitmap? = Result.runCatching { val path = wallpaper.getLocalPathFromContext(context) runBlockingIncrement { @@ -140,19 +131,6 @@ class WallpaperManager( } }.getOrNull() - private fun isLandscape(context: Context): Boolean { - return context.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - } - - private fun loadWallpapers(): List { - val wallpapersFromStorage = wallpaperStorage.loadAll() - return if (wallpapersFromStorage.isNotEmpty()) { - listOf(defaultWallpaper) + wallpapersFromStorage - } else { - listOf(defaultWallpaper) - } - } - /** * Animates the Firefox logo, if it hasn't been animated before, otherwise nothing will happen. * After animating the first time, the [Settings.shouldAnimateFirefoxLogo] setting @@ -189,12 +167,15 @@ class WallpaperManager( companion object { const val DEFAULT_RESOURCE = R.attr.homeBackground val defaultWallpaper = Wallpaper( - name = "default_wallpaper", - portraitPath = "", - landscapePath = "", - isDark = false, + name = "default", themeCollection = WallpaperThemeCollection.NONE ) + val localWallpapers = listOf( + defaultWallpaper, + Wallpaper("amethyst", themeCollection = WallpaperThemeCollection.FIREFOX), + Wallpaper("cerulean", themeCollection = WallpaperThemeCollection.FIREFOX), + Wallpaper("sunrise", themeCollection = WallpaperThemeCollection.FIREFOX), + ) private const val ANIMATION_DELAY_MS = 1500L } } diff --git a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperStorage.kt b/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperStorage.kt deleted file mode 100644 index 8d61e6d3ba..0000000000 --- a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperStorage.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.fenix.wallpapers -/** - * Represents a storage to store [Wallpaper]s. - */ -interface WallpaperStorage { - /** - * Returns all [Wallpaper] from the storage. - */ - fun loadAll(): List -} diff --git a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersAssetsStorage.kt b/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersAssetsStorage.kt deleted file mode 100644 index 70ca4abbef..0000000000 --- a/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersAssetsStorage.kt +++ /dev/null @@ -1,61 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.fenix.wallpapers - -import android.content.Context -import android.content.res.AssetManager -import mozilla.components.support.base.log.logger.Logger -import org.json.JSONArray -import org.json.JSONException -import org.json.JSONObject -import java.lang.Exception - -class WallpapersAssetsStorage(private val context: Context) : WallpaperStorage { - val logger = Logger("WallpapersAssetsStorage") - private val wallpapersDirectory = "wallpapers" - - @Suppress("TooGenericExceptionCaught") - override fun loadAll(): List { - val assetsManager = context.assets - return try { - assetsManager.readArray("$wallpapersDirectory/wallpapers.json").toWallpapers() - } catch (e: Exception) { - logger.error("Unable to load wallpaper", e) - emptyList() - } - } - - private fun JSONArray.toWallpapers(): List { - return (0 until this.length()).mapNotNull { index -> - this.getJSONObject(index).toWallpaper() - } - } - - private fun JSONObject.toWallpaper(): Wallpaper? { - return try { - Wallpaper( - name = getString("name"), - portraitPath = getString("portrait"), - landscapePath = getString("landscape"), - isDark = getBoolean("isDark"), - themeCollection = Result.runCatching { - when (getString("themeCollection")) { - "firefox" -> WallpaperThemeCollection.FIREFOX - else -> WallpaperThemeCollection.NONE - } - }.getOrDefault(WallpaperThemeCollection.NONE) - ) - } catch (e: JSONException) { - logger.error("unable to parse json for wallpaper $this", e) - null - } - } - - private fun AssetManager.readArray(fileName: String) = JSONArray( - open(fileName).bufferedReader().use { - it.readText() - } - ) -} diff --git a/app/src/main/res/drawable-hdpi/amethyst.png b/app/src/main/res/drawable-hdpi/amethyst.png new file mode 100644 index 0000000000..70d82373c1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/amethyst.png differ diff --git a/app/src/main/res/drawable-hdpi/cerulean.png b/app/src/main/res/drawable-hdpi/cerulean.png new file mode 100644 index 0000000000..a7b19568ba Binary files /dev/null and b/app/src/main/res/drawable-hdpi/cerulean.png differ diff --git a/app/src/main/res/drawable-hdpi/sunrise.jpg b/app/src/main/res/drawable-hdpi/sunrise.jpg new file mode 100644 index 0000000000..d949505278 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sunrise.jpg differ diff --git a/app/src/main/res/drawable-land-hdpi/amethyst.png b/app/src/main/res/drawable-land-hdpi/amethyst.png new file mode 100644 index 0000000000..a93bf5eb89 Binary files /dev/null and b/app/src/main/res/drawable-land-hdpi/amethyst.png differ diff --git a/app/src/main/res/drawable-land-hdpi/cerulean.png b/app/src/main/res/drawable-land-hdpi/cerulean.png new file mode 100644 index 0000000000..f88ee28ed9 Binary files /dev/null and b/app/src/main/res/drawable-land-hdpi/cerulean.png differ diff --git a/app/src/main/res/drawable-land-hdpi/sunrise.jpg b/app/src/main/res/drawable-land-hdpi/sunrise.jpg new file mode 100644 index 0000000000..cd45b34bba Binary files /dev/null and b/app/src/main/res/drawable-land-hdpi/sunrise.jpg differ diff --git a/app/src/main/res/drawable-land-xhdpi/amethyst.png b/app/src/main/res/drawable-land-xhdpi/amethyst.png new file mode 100644 index 0000000000..a94366c20c Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/amethyst.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/cerulean.png b/app/src/main/res/drawable-land-xhdpi/cerulean.png new file mode 100644 index 0000000000..0d724429ad Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/cerulean.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/sunrise.jpg b/app/src/main/res/drawable-land-xhdpi/sunrise.jpg new file mode 100644 index 0000000000..bf857df901 Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/sunrise.jpg differ diff --git a/app/src/main/res/drawable-land-xxhdpi/amethyst.png b/app/src/main/res/drawable-land-xxhdpi/amethyst.png new file mode 100644 index 0000000000..227df91c6c Binary files /dev/null and b/app/src/main/res/drawable-land-xxhdpi/amethyst.png differ diff --git a/app/src/main/res/drawable-land-xxhdpi/cerulean.png b/app/src/main/res/drawable-land-xxhdpi/cerulean.png new file mode 100644 index 0000000000..06488660a5 Binary files /dev/null and b/app/src/main/res/drawable-land-xxhdpi/cerulean.png differ diff --git a/app/src/main/res/drawable-land-xxhdpi/sunrise.jpg b/app/src/main/res/drawable-land-xxhdpi/sunrise.jpg new file mode 100644 index 0000000000..9c5197b97a Binary files /dev/null and b/app/src/main/res/drawable-land-xxhdpi/sunrise.jpg differ diff --git a/app/src/main/res/drawable-port-xhdpi/amethyst.png b/app/src/main/res/drawable-port-xhdpi/amethyst.png new file mode 100644 index 0000000000..28aeb59c69 Binary files /dev/null and b/app/src/main/res/drawable-port-xhdpi/amethyst.png differ diff --git a/app/src/main/res/drawable-port-xhdpi/cerulean.png b/app/src/main/res/drawable-port-xhdpi/cerulean.png new file mode 100644 index 0000000000..55aef81738 Binary files /dev/null and b/app/src/main/res/drawable-port-xhdpi/cerulean.png differ diff --git a/app/src/main/res/drawable-port-xhdpi/sunrise.jpg b/app/src/main/res/drawable-port-xhdpi/sunrise.jpg new file mode 100644 index 0000000000..62067bc240 Binary files /dev/null and b/app/src/main/res/drawable-port-xhdpi/sunrise.jpg differ diff --git a/app/src/main/res/drawable-port-xxhdpi/amethyst.png b/app/src/main/res/drawable-port-xxhdpi/amethyst.png new file mode 100644 index 0000000000..d1ce2ec680 Binary files /dev/null and b/app/src/main/res/drawable-port-xxhdpi/amethyst.png differ diff --git a/app/src/main/res/drawable-port-xxhdpi/cerulean.png b/app/src/main/res/drawable-port-xxhdpi/cerulean.png new file mode 100644 index 0000000000..352c0b27cb Binary files /dev/null and b/app/src/main/res/drawable-port-xxhdpi/cerulean.png differ diff --git a/app/src/main/res/drawable-port-xxhdpi/sunrise.jpg b/app/src/main/res/drawable-port-xxhdpi/sunrise.jpg new file mode 100644 index 0000000000..9e88027bdd Binary files /dev/null and b/app/src/main/res/drawable-port-xxhdpi/sunrise.jpg differ diff --git a/app/src/test/java/org/mozilla/fenix/wallpapers/WallpaperManagerTest.kt b/app/src/test/java/org/mozilla/fenix/wallpapers/WallpaperManagerTest.kt index f950639d11..29c670f3f0 100644 --- a/app/src/test/java/org/mozilla/fenix/wallpapers/WallpaperManagerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/wallpapers/WallpaperManagerTest.kt @@ -13,9 +13,6 @@ import org.mozilla.fenix.utils.Settings class WallpaperManagerTest { private val mockSettings: Settings = mockk() - private val mockStorage: WallpaperStorage = mockk { - every { loadAll() } returns listOf() - } private val mockMetrics: MetricController = mockk() @Test @@ -27,7 +24,7 @@ class WallpaperManagerTest { every { mockSettings.currentWallpaper = capture(currentCaptureSlot) } just runs val updatedWallpaper = WallpaperManager.defaultWallpaper - val wallpaperManager = WallpaperManager(mockSettings, mockStorage, mockk(), mockk()) + val wallpaperManager = WallpaperManager(mockSettings, mockk(), mockk()) wallpaperManager.currentWallpaper = updatedWallpaper assertEquals(updatedWallpaper.name, currentCaptureSlot.captured)