Loading core/java/android/app/compat/ChangeIdStateCache.java +24 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.compat; import android.annotation.NonNull; import android.app.PropertyInvalidatedCache; import android.content.Context; import android.os.Binder; Loading @@ -33,6 +34,7 @@ public final class ChangeIdStateCache private static final String CACHE_KEY = "cache_key.is_compat_change_enabled"; private static final int MAX_ENTRIES = 20; private static boolean sDisabled = false; private volatile IPlatformCompat mPlatformCompat; /** @hide */ public ChangeIdStateCache() { Loading Loading @@ -61,18 +63,36 @@ public final class ChangeIdStateCache } } @NonNull IPlatformCompat getPlatformCompatService() { IPlatformCompat platformCompat = mPlatformCompat; if (platformCompat == null) { synchronized (this) { platformCompat = mPlatformCompat; if (platformCompat == null) { platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); if (platformCompat == null) { throw new RuntimeException( "Could not get PlatformCompatService instance!"); } mPlatformCompat = platformCompat; } } } return platformCompat; } @Override protected Boolean recompute(ChangeIdStateQuery query) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); final long token = Binder.clearCallingIdentity(); try { if (query.type == ChangeIdStateQuery.QUERY_BY_PACKAGE_NAME) { return platformCompat.isChangeEnabledByPackageName(query.changeId, return getPlatformCompatService().isChangeEnabledByPackageName(query.changeId, query.packageName, query.userId); } else if (query.type == ChangeIdStateQuery.QUERY_BY_UID) { return platformCompat.isChangeEnabledByUid(query.changeId, query.uid); return getPlatformCompatService().isChangeEnabledByUid(query.changeId, query.uid); } else { throw new IllegalArgumentException("Invalid query type: " + query.type); } Loading core/java/android/app/compat/CompatChanges.java +5 −9 Original line number Diff line number Diff line Loading @@ -20,14 +20,11 @@ import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.compat.Compatibility; import android.content.Context; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import com.android.internal.compat.CompatibilityOverrideConfig; import com.android.internal.compat.CompatibilityOverridesToRemoveConfig; import com.android.internal.compat.IPlatformCompat; import java.util.Map; import java.util.Set; Loading @@ -41,6 +38,7 @@ import java.util.Set; @SystemApi public final class CompatChanges { private static final ChangeIdStateCache QUERY_CACHE = new ChangeIdStateCache(); private CompatChanges() {} /** Loading Loading @@ -115,11 +113,10 @@ public final class CompatChanges { @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void putPackageOverrides(@NonNull String packageName, @NonNull Map<Long, PackageOverride> overrides) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); CompatibilityOverrideConfig config = new CompatibilityOverrideConfig(overrides); try { platformCompat.putOverridesOnReleaseBuilds(config, packageName); QUERY_CACHE.getPlatformCompatService() .putOverridesOnReleaseBuilds(config, packageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } Loading @@ -139,12 +136,11 @@ public final class CompatChanges { @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void removePackageOverrides(@NonNull String packageName, @NonNull Set<Long> overridesToRemove) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); CompatibilityOverridesToRemoveConfig config = new CompatibilityOverridesToRemoveConfig( overridesToRemove); try { platformCompat.removeOverridesOnReleaseBuilds(config, packageName); QUERY_CACHE.getPlatformCompatService() .removeOverridesOnReleaseBuilds(config, packageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } Loading Loading
core/java/android/app/compat/ChangeIdStateCache.java +24 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.compat; import android.annotation.NonNull; import android.app.PropertyInvalidatedCache; import android.content.Context; import android.os.Binder; Loading @@ -33,6 +34,7 @@ public final class ChangeIdStateCache private static final String CACHE_KEY = "cache_key.is_compat_change_enabled"; private static final int MAX_ENTRIES = 20; private static boolean sDisabled = false; private volatile IPlatformCompat mPlatformCompat; /** @hide */ public ChangeIdStateCache() { Loading Loading @@ -61,18 +63,36 @@ public final class ChangeIdStateCache } } @NonNull IPlatformCompat getPlatformCompatService() { IPlatformCompat platformCompat = mPlatformCompat; if (platformCompat == null) { synchronized (this) { platformCompat = mPlatformCompat; if (platformCompat == null) { platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); if (platformCompat == null) { throw new RuntimeException( "Could not get PlatformCompatService instance!"); } mPlatformCompat = platformCompat; } } } return platformCompat; } @Override protected Boolean recompute(ChangeIdStateQuery query) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); final long token = Binder.clearCallingIdentity(); try { if (query.type == ChangeIdStateQuery.QUERY_BY_PACKAGE_NAME) { return platformCompat.isChangeEnabledByPackageName(query.changeId, return getPlatformCompatService().isChangeEnabledByPackageName(query.changeId, query.packageName, query.userId); } else if (query.type == ChangeIdStateQuery.QUERY_BY_UID) { return platformCompat.isChangeEnabledByUid(query.changeId, query.uid); return getPlatformCompatService().isChangeEnabledByUid(query.changeId, query.uid); } else { throw new IllegalArgumentException("Invalid query type: " + query.type); } Loading
core/java/android/app/compat/CompatChanges.java +5 −9 Original line number Diff line number Diff line Loading @@ -20,14 +20,11 @@ import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.compat.Compatibility; import android.content.Context; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import com.android.internal.compat.CompatibilityOverrideConfig; import com.android.internal.compat.CompatibilityOverridesToRemoveConfig; import com.android.internal.compat.IPlatformCompat; import java.util.Map; import java.util.Set; Loading @@ -41,6 +38,7 @@ import java.util.Set; @SystemApi public final class CompatChanges { private static final ChangeIdStateCache QUERY_CACHE = new ChangeIdStateCache(); private CompatChanges() {} /** Loading Loading @@ -115,11 +113,10 @@ public final class CompatChanges { @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void putPackageOverrides(@NonNull String packageName, @NonNull Map<Long, PackageOverride> overrides) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); CompatibilityOverrideConfig config = new CompatibilityOverrideConfig(overrides); try { platformCompat.putOverridesOnReleaseBuilds(config, packageName); QUERY_CACHE.getPlatformCompatService() .putOverridesOnReleaseBuilds(config, packageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } Loading @@ -139,12 +136,11 @@ public final class CompatChanges { @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void removePackageOverrides(@NonNull String packageName, @NonNull Set<Long> overridesToRemove) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); CompatibilityOverridesToRemoveConfig config = new CompatibilityOverridesToRemoveConfig( overridesToRemove); try { platformCompat.removeOverridesOnReleaseBuilds(config, packageName); QUERY_CACHE.getPlatformCompatService() .removeOverridesOnReleaseBuilds(config, packageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } Loading