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

Commit 97dba1b5 authored by Pierre Barbier de Reuille's avatar Pierre Barbier de Reuille
Browse files

Stop using DesktopModeStatus in App to Web

Bug: 395863348
Flag: EXEMPT (refactor)
Test: atest WMShellUnitTests
Change-Id: If0a3965247001888fa6f3903011a37e04af41fa4
parent 91f8e0ad
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import com.android.internal.annotations.VisibleForTesting
import com.android.wm.shell.R
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.shared.annotations.ShellMainThread
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus.useAppToWebBuildTimeGenericLinks
import com.android.wm.shell.shared.desktopmode.DesktopConfig

/**
 * Retrieves the build-time or server-side generic links list and parses and stores the
@@ -31,13 +31,14 @@ import com.android.wm.shell.shared.desktopmode.DesktopModeStatus.useAppToWebBuil
 */
class AppToWebGenericLinksParser(
    private val context: Context,
    @ShellMainThread private val mainExecutor: ShellExecutor
    @ShellMainThread private val mainExecutor: ShellExecutor,
    private val desktopConfig: DesktopConfig,
) {
    private val genericLinksMap: MutableMap<String, String> = mutableMapOf()

    init {
        // If using the server-side generic links list, register a listener
        if (!useAppToWebBuildTimeGenericLinks()) {
        if (!desktopConfig.useAppToWebBuildTimeGenericLinks) {
            DeviceConfigListener()
        }

@@ -49,7 +50,7 @@ class AppToWebGenericLinksParser(

    private fun updateGenericLinksMap() {
        val genericLinksList =
            if (useAppToWebBuildTimeGenericLinks()) {
            if (desktopConfig.useAppToWebBuildTimeGenericLinks) {
                context.resources.getString(R.string.generic_links_list)
            } else {
                DeviceConfig.getString(NAMESPACE, FLAG_GENERIC_LINKS, /* defaultValue= */ "")
+3 −2
Original line number Diff line number Diff line
@@ -388,8 +388,9 @@ public abstract class WMShellModule {
    @WMSingleton
    @Provides
    static AppToWebGenericLinksParser provideGenericLinksParser(
            Context context, @ShellMainThread ShellExecutor mainExecutor) {
        return new AppToWebGenericLinksParser(context, mainExecutor);
            Context context, @ShellMainThread ShellExecutor mainExecutor,
            DesktopConfig desktopConfig) {
        return new AppToWebGenericLinksParser(context, mainExecutor, desktopConfig);
    }

    @Provides
+16 −21
Original line number Diff line number Diff line
@@ -21,14 +21,11 @@ import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.testing.TestableResources
import androidx.test.filters.SmallTest
import com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn
import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
import com.android.dx.mockito.inline.extended.StaticMockitoSession
import com.android.wm.shell.R
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.apptoweb.AppToWebGenericLinksParser.Companion.FLAG_GENERIC_LINKS
import com.android.wm.shell.shared.desktopmode.FakeDesktopConfig
import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertNull
import org.junit.After
@@ -37,7 +34,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.quality.Strictness

/**
 * Tests for [AppToWebGenericLinksParser].
@@ -51,18 +47,13 @@ class AppToWebGenericLinksParserTests : ShellTestCase() {
    @Mock private lateinit var mockExecutor: ShellExecutor

    private lateinit var genericLinksParser: AppToWebGenericLinksParser
    private lateinit var mockitoSession: StaticMockitoSession
    private lateinit var resources: TestableResources
    private lateinit var mocksInit: AutoCloseable

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        mocksInit = MockitoAnnotations.openMocks(this)

        mockitoSession =
            mockitoSession()
                .strictness(Strictness.LENIENT)
                .spyStatic(DesktopModeStatus::class.java)
                .startMocking()
        resources = mContext.getOrCreateTestableResources()
        resources.addOverride(R.string.generic_links_list, BUILD_TIME_LIST)
        DeviceConfig.setProperty(
@@ -75,33 +66,36 @@ class AppToWebGenericLinksParserTests : ShellTestCase() {

    @After
    fun tearDown() {
        mockitoSession.finishMocking()
        mocksInit.close()
    }

    @Test
    fun init_usingBuildTimeList() {
        doReturn(true).`when` { DesktopModeStatus.useAppToWebBuildTimeGenericLinks() }
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor)
        val desktopConfig = FakeDesktopConfig()
        desktopConfig.useAppToWebBuildTimeGenericLinks = true
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor, desktopConfig)
        // Assert build-time list correctly parsed
        assertEquals(URL_B, genericLinksParser.getGenericLink(PACKAGE_NAME_1))
    }

    @Test
    fun init_usingServerSideList() {
        doReturn(false).`when` { DesktopModeStatus.useAppToWebBuildTimeGenericLinks() }
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor)
        val desktopConfig = FakeDesktopConfig()
        desktopConfig.useAppToWebBuildTimeGenericLinks = false
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor, desktopConfig)
        // Assert server side list correctly parsed
        assertEquals(URL_S, genericLinksParser.getGenericLink(PACKAGE_NAME_1))
    }

    @Test
    fun init_ignoresMalformedPair() {
        doReturn(true).`when` { DesktopModeStatus.useAppToWebBuildTimeGenericLinks() }
        val desktopConfig = FakeDesktopConfig()
        desktopConfig.useAppToWebBuildTimeGenericLinks = true
        val packageName2 = "com.google.android.slides"
        val url2 = "https://docs.google.com"
        resources.addOverride(R.string.generic_links_list,
                "$PACKAGE_NAME_1:$URL_B error $packageName2:$url2")
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor)
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor, desktopConfig)
        // Assert generics links list correctly parsed
        assertEquals(URL_B, genericLinksParser.getGenericLink(PACKAGE_NAME_1))
        assertEquals(url2, genericLinksParser.getGenericLink(packageName2))
@@ -110,9 +104,10 @@ class AppToWebGenericLinksParserTests : ShellTestCase() {

    @Test
    fun onlySavesValidPackageToUrlMaps() {
        doReturn(true).`when` { DesktopModeStatus.useAppToWebBuildTimeGenericLinks() }
        val desktopConfig = FakeDesktopConfig()
        desktopConfig.useAppToWebBuildTimeGenericLinks = true
        resources.addOverride(R.string.generic_links_list, "$PACKAGE_NAME_1:www.yout")
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor)
        genericLinksParser = AppToWebGenericLinksParser(mContext, mockExecutor, desktopConfig)
        // Verify map with invalid url not saved
        assertNull(genericLinksParser.getGenericLink(PACKAGE_NAME_1))
    }