Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6bf72fe authored by Jagrut Desai's avatar Jagrut Desai Committed by Android (Google) Code Review
Browse files

Merge "Making AbstractDeviceProfileTest tnd FakeInvariantDeviceProfileTesto...

Merge "Making AbstractDeviceProfileTest tnd FakeInvariantDeviceProfileTesto only run on CF_PHONE" into main
parents 9ac91ffa f584d784
Loading
Loading
Loading
Loading
+8 −24
Original line number Diff line number Diff line
@@ -17,9 +17,12 @@ package com.android.launcher3

import android.content.Context
import android.content.res.Configuration
import android.content.res.Resources
import android.graphics.Point
import android.graphics.Rect
import android.platform.test.rule.AllowedDevices
import android.platform.test.rule.DeviceProduct
import android.platform.test.rule.IgnoreLimit
import android.platform.test.rule.LimitDevicesRule
import android.util.DisplayMetrics
import android.view.Surface
import androidx.test.core.app.ApplicationProvider
@@ -32,7 +35,6 @@ import com.android.launcher3.util.WindowBounds
import com.android.launcher3.util.rule.TestStabilityRule
import com.android.launcher3.util.window.CachedDisplayInfo
import com.android.launcher3.util.window.WindowManagerProxy
import com.android.wm.shell.Flags
import com.google.common.truth.Truth
import java.io.BufferedReader
import java.io.File
@@ -52,6 +54,8 @@ import org.mockito.kotlin.whenever
 *
 * For an implementation that mocks InvariantDeviceProfile, use [FakeInvariantDeviceProfileTest]
 */
@AllowedDevices(allowed = [DeviceProduct.CF_PHONE])
@IgnoreLimit(ignoreLimit = BuildConfig.IS_STUDIO_BUILD)
abstract class AbstractDeviceProfileTest {
    protected val testContext: Context = InstrumentationRegistry.getInstrumentation().context
    protected lateinit var context: SandboxContext
@@ -59,15 +63,11 @@ abstract class AbstractDeviceProfileTest {
    private val displayController: DisplayController = mock()
    private val windowManagerProxy: WindowManagerProxy = mock()
    private val launcherPrefs: LauncherPrefs = mock()
    private val allowLeftRightSplitInPortrait: Boolean = initAllowLeftRightSplitInPortrait()
    fun initAllowLeftRightSplitInPortrait(): Boolean {
        val res = Resources.getSystem()
        val resId = res.getIdentifier("config_leftRightSplitInPortrait", "bool", "android")
        return Flags.enableLeftRightSplitInPortrait() && resId > 0 && res.getBoolean(resId)
    }

    @Rule @JvmField val testStabilityRule = TestStabilityRule()

    @Rule @JvmField val limitDevicesRule = LimitDevicesRule()

    class DeviceSpec(
        val naturalSize: Pair<Int, Int>,
        var densityDpi: Int,
@@ -311,22 +311,6 @@ abstract class AbstractDeviceProfileTest {
    protected fun assertDump(dp: DeviceProfile, folderName: String, filename: String) {
        val dump = dump(context!!, dp, "${folderName}_$filename.txt")
        var expected = readDumpFromAssets(testContext, "$folderName/$filename.txt")

        // TODO(b/315230497): We don't currently have device-specific device profile dumps, so just
        //  update the result before we do the comparison
        if (allowLeftRightSplitInPortrait) {
            val isLeftRightSplitInPortrait =
                when {
                    allowLeftRightSplitInPortrait && dp.isTablet -> !dp.isLandscape
                    else -> dp.isLandscape
                }
            expected =
                expected.replace(
                    Regex("isLeftRightSplit:\\w+"),
                    "isLeftRightSplit:$isLeftRightSplitInPortrait"
                )
        }

        Truth.assertThat(dump).isEqualTo(expected)
    }

+9 −0
Original line number Diff line number Diff line
@@ -18,6 +18,10 @@ package com.android.launcher3
import android.content.Context
import android.graphics.PointF
import android.graphics.Rect
import android.platform.test.rule.AllowedDevices
import android.platform.test.rule.DeviceProduct
import android.platform.test.rule.IgnoreLimit
import android.platform.test.rule.LimitDevicesRule
import android.util.SparseArray
import androidx.test.core.app.ApplicationProvider
import com.android.launcher3.DeviceProfile.DEFAULT_DIMENSION_PROVIDER
@@ -27,6 +31,7 @@ import com.android.launcher3.util.WindowBounds
import java.io.PrintWriter
import java.io.StringWriter
import org.junit.Before
import org.junit.Rule
import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
@@ -37,6 +42,8 @@ import org.mockito.kotlin.whenever
 *
 * For an implementation that creates InvariantDeviceProfile, use [AbstractDeviceProfileTest]
 */
@AllowedDevices(allowed = [DeviceProduct.CF_PHONE])
@IgnoreLimit(ignoreLimit = BuildConfig.IS_STUDIO_BUILD)
abstract class FakeInvariantDeviceProfileTest {

    protected var context: Context? = null
@@ -49,6 +56,8 @@ abstract class FakeInvariantDeviceProfileTest {
    protected var isGestureMode: Boolean = true
    protected var isTransientTaskbar: Boolean = true

    @Rule @JvmField val limitDevicesRule = LimitDevicesRule()

    @Before
    fun setUp() {
        context = ApplicationProvider.getApplicationContext()