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

Commit 1d050ffa authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "[Ravenwood] Support PlatformCompatChangeRule" into main am: ec4d5804 am: 2af482fa

parents ba9d00ca 2af482fa
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -94,14 +94,21 @@ public final class RavenwoodEnvironment {

        /** Used for testing */
        @Disabled
        @ChangeId public static final long TEST_COMPAT_ID_2 = 368131701L;
        @ChangeId
        public static final long TEST_COMPAT_ID_2 = 368131701L;

        /** Used for testing */
        @EnabledAfter(targetSdkVersion = S)
        @ChangeId public static final long TEST_COMPAT_ID_3 = 368131659L;
        @ChangeId
        public static final long TEST_COMPAT_ID_3 = 368131659L;

        /** Used for testing */
        @EnabledAfter(targetSdkVersion = UPSIDE_DOWN_CAKE)
        @ChangeId public static final long TEST_COMPAT_ID_4 = 368132057L;
        @ChangeId
        public static final long TEST_COMPAT_ID_4 = 368132057L;

        /** Used for testing */
        @ChangeId
        public static final long TEST_COMPAT_ID_5 = 387558811L;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ java_defaults {

        "junit-params",
        "platform-parametric-runner-lib",
        "platform-compat-test-rules",

        // To make sure it won't cause VerifyError (b/324063814)
        "platformprotosnano",
+26 −5
Original line number Diff line number Diff line
@@ -16,31 +16,52 @@
package com.android.ravenwoodtest.bivalenttest.compat

import android.app.compat.CompatChanges
import android.compat.testing.PlatformCompatChangeRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.internal.ravenwood.RavenwoodEnvironment.CompatIdsForTest
import org.junit.Assert
import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges
import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class RavenwoodCompatFrameworkTest {

    @get:Rule
    val compatRule = PlatformCompatChangeRule()

    @Test
    fun testEnabled() {
        Assert.assertTrue(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_1))
        assertTrue(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_1))
    }

    @Test
    fun testDisabled() {
        Assert.assertFalse(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_2))
        assertFalse(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_2))
    }

    @Test
    fun testEnabledAfterSForUApps() {
        Assert.assertTrue(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_3))
        assertTrue(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_3))
    }

    @Test
    fun testEnabledAfterUForUApps() {
        Assert.assertFalse(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_4))
        assertFalse(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_4))
    }

    @Test
    @EnableCompatChanges(CompatIdsForTest.TEST_COMPAT_ID_5)
    fun testEnableCompatChanges() {
        assertTrue(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_5))
    }

    @Test
    @DisableCompatChanges(CompatIdsForTest.TEST_COMPAT_ID_5)
    fun testDisableCompatChanges() {
        assertFalse(CompatChanges.isChangeEnabled(CompatIdsForTest.TEST_COMPAT_ID_5))
    }
}
+21 −0
Original line number Diff line number Diff line
@@ -876,7 +876,28 @@ final class CompatConfig {
    }

    @Nullable
    @android.ravenwood.annotation.RavenwoodReplace(
            blockedBy = PackageManager.class,
            reason = "PackageManager.getApplicationInfo() isn't supported yet")
    private Long getVersionCodeOrNull(String packageName) {
        return getVersionCodeOrNullImpl(packageName);
    }

    @SuppressWarnings("unused")
    @Nullable
    private Long getVersionCodeOrNull$ravenwood(String packageName) {
        try {
            // It's possible that the context is mocked, try the real method first
            return getVersionCodeOrNullImpl(packageName);
        } catch (Throwable e) {
            // For now, Ravenwood doesn't support the concept of "app updates", so let's
            // just use a fixed version code for all packages.
            return 1L;
        }
    }

    @Nullable
    private Long getVersionCodeOrNullImpl(String packageName) {
        try {
            ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
                    packageName, MATCH_ANY_USER);