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

Commit c932ff21 authored by Winson's avatar Winson
Browse files

Fix asset loading on ResourcesImpl swap

The ResourceLoaderManager reference was not being updated and
so any configuration change would drop loaders from the asset
search list.

Also re-enables and updates a test originally designed to catch
this kind of problem.

Test: atest ResourceLoaderChangesTest

Change-Id: I5d9bba2f85c516573d3da0c8f1a97a1d716b3a34
parent 4ca4a363
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ public class ResourceLoaderManager {
    public void onImplUpdate(ResourcesImpl resourcesImpl) {
        synchronized (mLock) {
            this.mResourcesImpl = resourcesImpl;
            this.mResourcesImpl.getAssets().setResourceLoaderManager(this);
            updateLoaders();
        }
    }
+17 −12
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry
import androidx.test.runner.lifecycle.Stage
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -43,7 +42,6 @@ import java.util.concurrent.Executor
import java.util.concurrent.FutureTask
import java.util.concurrent.TimeUnit

// @Ignore("UiAutomation is crashing with not connected, not sure why")
@RunWith(Parameterized::class)
class ResourceLoaderChangesTest : ResourceLoaderTestBase() {

@@ -75,7 +73,7 @@ class ResourceLoaderChangesTest : ResourceLoaderTestBase() {
    @Before
    @After
    fun disableOverlay() {
//        enableOverlay(OVERLAY_PACKAGE, false)
        enableOverlay(OVERLAY_PACKAGE, false)
    }

    @Test
@@ -156,25 +154,32 @@ class ResourceLoaderChangesTest : ResourceLoaderTestBase() {

    // All these tests assert for the exact same loaders/values, so extract that logic out
    private fun verifySameBeforeAndAfter(block: () -> Resources) {
        // TODO(chiuwinson): atest doesn't work with @Ignore, UiAutomation not connected error
        Assume.assumeFalse(true)
        fun Resources.resource() = this.getString(android.R.string.cancel)
        fun Resources.asset() = this.assets.open("Asset.txt").reader().readText()

        val originalValue = resources.getString(android.R.string.cancel)
        val originalResource = resources.resource()
        val originalAsset = resources.asset()

        val loader = "stringOne".openLoader()
        addLoader(loader)
        val loaderResource = "stringOne".openLoader()
        val loaderAsset = "assetOne".openLoader(dataType = DataType.ASSET)
        addLoader(loaderResource)
        addLoader(loaderAsset)

        val oldLoaders = resources.loaders
        val oldValue = resources.getString(android.R.string.cancel)
        val oldResource = resources.resource()
        val oldAsset = resources.asset()

        assertThat(oldValue).isNotEqualTo(originalValue)
        assertThat(oldResource).isNotEqualTo(originalResource)
        assertThat(oldAsset).isNotEqualTo(originalAsset)

        val newResources = block()

        val newLoaders = newResources.loaders
        val newValue = newResources.getString(android.R.string.cancel)
        val newResource = newResources.resource()
        val newAsset = newResources.asset()

        assertThat(newValue).isEqualTo(oldValue)
        assertThat(newResource).isEqualTo(oldResource)
        assertThat(newAsset).isEqualTo(oldAsset)
        assertThat(newLoaders).isEqualTo(oldLoaders)
    }