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

Commit fb9fa4fd authored by John Wu's avatar John Wu
Browse files

[Ravenwood] Support PlatformCompatChangeRule

Bug: 367706429
Flag: EXEMPT host test change only
Test: atest RavenwoodCompatFrameworkTest
Change-Id: I05dda6fff67d387d7f5bbe79d0c11fb16d959f37
parent 0805e0e8
Loading
Loading
Loading
Loading
+10 −3
Original line number Original line Diff line number Diff line
@@ -94,14 +94,21 @@ public final class RavenwoodEnvironment {


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


        /** Used for testing */
        /** Used for testing */
        @EnabledAfter(targetSdkVersion = S)
        @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 */
        /** Used for testing */
        @EnabledAfter(targetSdkVersion = UPSIDE_DOWN_CAKE)
        @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 Original line Diff line number Diff line
@@ -40,6 +40,7 @@ java_defaults {


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


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


import android.app.compat.CompatChanges
import android.app.compat.CompatChanges
import android.compat.testing.PlatformCompatChangeRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.internal.ravenwood.RavenwoodEnvironment.CompatIdsForTest
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.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith


@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
class RavenwoodCompatFrameworkTest {
class RavenwoodCompatFrameworkTest {

    @get:Rule
    val compatRule = PlatformCompatChangeRule()

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


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


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


    @Test
    @Test
    fun testEnabledAfterUForUApps() {
    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 Original line Diff line number Diff line
@@ -876,7 +876,28 @@ final class CompatConfig {
    }
    }


    @Nullable
    @Nullable
    @android.ravenwood.annotation.RavenwoodReplace(
            blockedBy = PackageManager.class,
            reason = "PackageManager.getApplicationInfo() isn't supported yet")
    private Long getVersionCodeOrNull(String packageName) {
    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 {
        try {
            ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
            ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
                    packageName, MATCH_ANY_USER);
                    packageName, MATCH_ANY_USER);