diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/ext/Context.kt b/app/src/main/java/org/mozilla/fenix/tabstray/ext/Context.kt index 82f522ec6..1beff2677 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/ext/Context.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/ext/Context.kt @@ -15,5 +15,5 @@ internal val Context.numberOfGridColumns: Int get() { val displayMetrics = resources.displayMetrics val screenWidthDp = displayMetrics.widthPixels / displayMetrics.density - return (screenWidthDp / MIN_COLUMN_WIDTH_DP).toInt() + return (screenWidthDp / MIN_COLUMN_WIDTH_DP).toInt().coerceAtLeast(2) } diff --git a/app/src/test/java/org/mozilla/fenix/tabstray/browser/DefaultBrowserTrayInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/tabstray/browser/DefaultBrowserTrayInteractorTest.kt index 41922e431..cbb916abd 100644 --- a/app/src/test/java/org/mozilla/fenix/tabstray/browser/DefaultBrowserTrayInteractorTest.kt +++ b/app/src/test/java/org/mozilla/fenix/tabstray/browser/DefaultBrowserTrayInteractorTest.kt @@ -5,10 +5,13 @@ package org.mozilla.fenix.tabstray.browser import android.content.Context +import android.content.res.Resources +import android.util.DisplayMetrics import androidx.recyclerview.widget.GridLayoutManager import io.mockk.every import io.mockk.mockk import io.mockk.mockkStatic +import io.mockk.spyk import io.mockk.unmockkStatic import org.junit.After import org.junit.Assert.assertEquals @@ -79,4 +82,20 @@ class DefaultBrowserTrayInteractorTest { // Should NOT be 4. assertEquals(1, (result as GridLayoutManager).spanCount) } + + @Test + fun `WHEN screen density is very low THEN numberOfGridColumns will still be a minimum of 2`() { + val context = mockk() + val resources = mockk() + val displayMetrics = spyk { + widthPixels = 1 + density = 1f + } + every { context.resources } returns resources + every { resources.displayMetrics } returns displayMetrics + + val result = context.numberOfGridColumns + + assertEquals(2, result) + } }