Fix boundary condition for targetSDK gated changes
@EnabledAfter(targetSdk = FOO) means that apps targeting FOO should still be able to override the change. Previously, the condition was excluding FOO. Bug: 156047625 Test: atest OverideValidatorImplTest Change-Id: Ic0eecc83c9f96fb605b499579b9d58064dcaedd9
This commit is contained in:
@@ -89,7 +89,7 @@ public class OverrideValidatorImpl extends IOverrideValidator.Stub {
|
||||
return new OverrideAllowedState(DISABLED_NON_TARGET_SDK, appTargetSdk, minTargetSdk);
|
||||
}
|
||||
// Only allow to opt-in for a targetSdk gated change.
|
||||
if (disabled || applicationInfo.targetSdkVersion < minTargetSdk) {
|
||||
if (disabled || appTargetSdk <= minTargetSdk) {
|
||||
return new OverrideAllowedState(ALLOWED, appTargetSdk, minTargetSdk);
|
||||
}
|
||||
return new OverrideAllowedState(DISABLED_TARGET_SDK_TOO_HIGH, appTargetSdk, minTargetSdk);
|
||||
|
||||
@@ -288,7 +288,8 @@ public class OverrideValidatorImplTest {
|
||||
public void getOverrideAllowedState_finalBuildTargetSdkChangeDebugAppOptin_allowOverride()
|
||||
throws Exception {
|
||||
CompatConfig config = CompatConfigBuilder.create(finalBuild(), mContext)
|
||||
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 1).build();
|
||||
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 1)
|
||||
.addTargetSdkChangeWithId(TARGET_SDK, 2).build();
|
||||
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
||||
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
||||
.thenReturn(ApplicationInfoBuilder.create()
|
||||
@@ -296,19 +297,23 @@ public class OverrideValidatorImplTest {
|
||||
.withTargetSdk(TARGET_SDK)
|
||||
.withPackageName(PACKAGE_NAME).build());
|
||||
|
||||
OverrideAllowedState allowedState =
|
||||
OverrideAllowedState stateTargetSdkGreaterChange =
|
||||
overrideValidator.getOverrideAllowedState(1, PACKAGE_NAME);
|
||||
OverrideAllowedState stateTargetSdkEqualChange =
|
||||
overrideValidator.getOverrideAllowedState(2, PACKAGE_NAME);
|
||||
|
||||
assertThat(allowedState)
|
||||
assertThat(stateTargetSdkGreaterChange)
|
||||
.isEqualTo(new OverrideAllowedState(ALLOWED, TARGET_SDK, TARGET_SDK_AFTER));
|
||||
|
||||
assertThat(stateTargetSdkEqualChange)
|
||||
.isEqualTo(new OverrideAllowedState(ALLOWED, TARGET_SDK, TARGET_SDK));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getOverrideAllowedState_finalBuildTargetSdkChangeDebugAppOptout_rejectOverride()
|
||||
throws Exception {
|
||||
CompatConfig config = CompatConfigBuilder.create(finalBuild(), mContext)
|
||||
.addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1)
|
||||
.addTargetSdkChangeWithId(TARGET_SDK, 2).build();
|
||||
.addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1).build();
|
||||
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
||||
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
||||
.thenReturn(ApplicationInfoBuilder.create()
|
||||
@@ -319,14 +324,10 @@ public class OverrideValidatorImplTest {
|
||||
|
||||
OverrideAllowedState stateTargetSdkLessChange =
|
||||
overrideValidator.getOverrideAllowedState(1, PACKAGE_NAME);
|
||||
OverrideAllowedState stateTargetSdkEqualChange =
|
||||
overrideValidator.getOverrideAllowedState(2, PACKAGE_NAME);
|
||||
|
||||
assertThat(stateTargetSdkLessChange).isEqualTo(
|
||||
new OverrideAllowedState(DISABLED_TARGET_SDK_TOO_HIGH, TARGET_SDK,
|
||||
TARGET_SDK_BEFORE));
|
||||
assertThat(stateTargetSdkEqualChange).isEqualTo(
|
||||
new OverrideAllowedState(DISABLED_TARGET_SDK_TOO_HIGH, TARGET_SDK, TARGET_SDK));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user