diff options
author | 2025-01-06 17:11:50 -0800 | |
---|---|---|
committer | 2025-01-06 17:11:50 -0800 | |
commit | 1d050ffaf5608c50f085b5e89b35b7a8946b714e (patch) | |
tree | 16f0009bb6a7b4037309e1a7558272aa7ab8d005 | |
parent | ba9d00ca3b5dabf478101dd17ec6ab46c36b3dcc (diff) | |
parent | 2af482faee30b3961669bb010793d60253287626 (diff) |
Merge "[Ravenwood] Support PlatformCompatChangeRule" into main am: ec4d580454 am: 2af482faee
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3437000
Change-Id: I05a58ecb26ee1593478f0753fb4da0d1657ff261
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 58 insertions, 8 deletions
diff --git a/core/java/com/android/internal/ravenwood/RavenwoodEnvironment.java b/core/java/com/android/internal/ravenwood/RavenwoodEnvironment.java index 8df3f2abcafd..e522b508b44b 100644 --- a/core/java/com/android/internal/ravenwood/RavenwoodEnvironment.java +++ b/core/java/com/android/internal/ravenwood/RavenwoodEnvironment.java @@ -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; } } diff --git a/ravenwood/tests/bivalenttest/Android.bp b/ravenwood/tests/bivalenttest/Android.bp index ac545dfb06cc..c4086c5b3835 100644 --- a/ravenwood/tests/bivalenttest/Android.bp +++ b/ravenwood/tests/bivalenttest/Android.bp @@ -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", diff --git a/ravenwood/tests/bivalenttest/test/com/android/ravenwoodtest/bivalenttest/compat/RavenwoodCompatFrameworkTest.kt b/ravenwood/tests/bivalenttest/test/com/android/ravenwoodtest/bivalenttest/compat/RavenwoodCompatFrameworkTest.kt index 882c91c43ee9..540b0822319c 100644 --- a/ravenwood/tests/bivalenttest/test/com/android/ravenwoodtest/bivalenttest/compat/RavenwoodCompatFrameworkTest.kt +++ b/ravenwood/tests/bivalenttest/test/com/android/ravenwoodtest/bivalenttest/compat/RavenwoodCompatFrameworkTest.kt @@ -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)) } } diff --git a/services/core/java/com/android/server/compat/CompatConfig.java b/services/core/java/com/android/server/compat/CompatConfig.java index e89f43bd7196..20c33275b8f1 100644 --- a/services/core/java/com/android/server/compat/CompatConfig.java +++ b/services/core/java/com/android/server/compat/CompatConfig.java @@ -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); |