Merge "Add support for LoggingOnly changes" into rvc-dev am: e9e7d56cd9
Change-Id: I3b8ca2d9f2c2bd693e720e16ebb20ce5408fb97c
This commit is contained in:
@@ -30,6 +30,7 @@ public class CompatibilityChangeInfo implements Parcelable {
|
|||||||
private final @Nullable String mName;
|
private final @Nullable String mName;
|
||||||
private final int mEnableAfterTargetSdk;
|
private final int mEnableAfterTargetSdk;
|
||||||
private final boolean mDisabled;
|
private final boolean mDisabled;
|
||||||
|
private final boolean mLoggingOnly;
|
||||||
private final @Nullable String mDescription;
|
private final @Nullable String mDescription;
|
||||||
|
|
||||||
public long getId() {
|
public long getId() {
|
||||||
@@ -49,17 +50,22 @@ public class CompatibilityChangeInfo implements Parcelable {
|
|||||||
return mDisabled;
|
return mDisabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getLoggingOnly() {
|
||||||
|
return mLoggingOnly;
|
||||||
|
}
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return mDescription;
|
return mDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CompatibilityChangeInfo(
|
public CompatibilityChangeInfo(
|
||||||
Long changeId, String name, int enableAfterTargetSdk, boolean disabled,
|
Long changeId, String name, int enableAfterTargetSdk, boolean disabled,
|
||||||
String description) {
|
boolean loggingOnly, String description) {
|
||||||
this.mChangeId = changeId;
|
this.mChangeId = changeId;
|
||||||
this.mName = name;
|
this.mName = name;
|
||||||
this.mEnableAfterTargetSdk = enableAfterTargetSdk;
|
this.mEnableAfterTargetSdk = enableAfterTargetSdk;
|
||||||
this.mDisabled = disabled;
|
this.mDisabled = disabled;
|
||||||
|
this.mLoggingOnly = loggingOnly;
|
||||||
this.mDescription = description;
|
this.mDescription = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,6 +74,7 @@ public class CompatibilityChangeInfo implements Parcelable {
|
|||||||
mName = in.readString();
|
mName = in.readString();
|
||||||
mEnableAfterTargetSdk = in.readInt();
|
mEnableAfterTargetSdk = in.readInt();
|
||||||
mDisabled = in.readBoolean();
|
mDisabled = in.readBoolean();
|
||||||
|
mLoggingOnly = in.readBoolean();
|
||||||
mDescription = in.readString();
|
mDescription = in.readString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,6 +89,7 @@ public class CompatibilityChangeInfo implements Parcelable {
|
|||||||
dest.writeString(mName);
|
dest.writeString(mName);
|
||||||
dest.writeInt(mEnableAfterTargetSdk);
|
dest.writeInt(mEnableAfterTargetSdk);
|
||||||
dest.writeBoolean(mDisabled);
|
dest.writeBoolean(mDisabled);
|
||||||
|
dest.writeBoolean(mLoggingOnly);
|
||||||
dest.writeString(mDescription);
|
dest.writeString(mDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,8 @@ public final class OverrideAllowedState implements Parcelable {
|
|||||||
DISABLED_NOT_DEBUGGABLE,
|
DISABLED_NOT_DEBUGGABLE,
|
||||||
DISABLED_NON_TARGET_SDK,
|
DISABLED_NON_TARGET_SDK,
|
||||||
DISABLED_TARGET_SDK_TOO_HIGH,
|
DISABLED_TARGET_SDK_TOO_HIGH,
|
||||||
PACKAGE_DOES_NOT_EXIST
|
PACKAGE_DOES_NOT_EXIST,
|
||||||
|
LOGGING_ONLY_CHANGE
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface State {
|
public @interface State {
|
||||||
@@ -60,6 +61,10 @@ public final class OverrideAllowedState implements Parcelable {
|
|||||||
* Package does not exist.
|
* Package does not exist.
|
||||||
*/
|
*/
|
||||||
public static final int PACKAGE_DOES_NOT_EXIST = 4;
|
public static final int PACKAGE_DOES_NOT_EXIST = 4;
|
||||||
|
/**
|
||||||
|
* Change is marked as logging only, and cannot be toggled.
|
||||||
|
*/
|
||||||
|
public static final int LOGGING_ONLY_CHANGE = 5;
|
||||||
|
|
||||||
@State
|
@State
|
||||||
public final int state;
|
public final int state;
|
||||||
@@ -118,6 +123,10 @@ public final class OverrideAllowedState implements Parcelable {
|
|||||||
"Cannot override %1$d for %2$s because the package does not exist, and "
|
"Cannot override %1$d for %2$s because the package does not exist, and "
|
||||||
+ "the change is targetSdk gated.",
|
+ "the change is targetSdk gated.",
|
||||||
changeId, packageName));
|
changeId, packageName));
|
||||||
|
case LOGGING_ONLY_CHANGE:
|
||||||
|
throw new SecurityException(String.format(
|
||||||
|
"Cannot override %1$d because it is marked as a logging-only change.",
|
||||||
|
changeId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public final class CompatChange extends CompatibilityChangeInfo {
|
|||||||
private Map<String, Boolean> mPackageOverrides;
|
private Map<String, Boolean> mPackageOverrides;
|
||||||
|
|
||||||
public CompatChange(long changeId) {
|
public CompatChange(long changeId) {
|
||||||
this(changeId, null, -1, false, null);
|
this(changeId, null, -1, false, false, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,8 +74,8 @@ public final class CompatChange extends CompatibilityChangeInfo {
|
|||||||
* @param disabled If {@code true}, overrides any {@code enableAfterTargetSdk} set.
|
* @param disabled If {@code true}, overrides any {@code enableAfterTargetSdk} set.
|
||||||
*/
|
*/
|
||||||
public CompatChange(long changeId, @Nullable String name, int enableAfterTargetSdk,
|
public CompatChange(long changeId, @Nullable String name, int enableAfterTargetSdk,
|
||||||
boolean disabled, String description) {
|
boolean disabled, boolean loggingOnly, String description) {
|
||||||
super(changeId, name, enableAfterTargetSdk, disabled, description);
|
super(changeId, name, enableAfterTargetSdk, disabled, loggingOnly, description);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -83,7 +83,7 @@ public final class CompatChange extends CompatibilityChangeInfo {
|
|||||||
*/
|
*/
|
||||||
public CompatChange(Change change) {
|
public CompatChange(Change change) {
|
||||||
super(change.getId(), change.getName(), change.getEnableAfterTargetSdk(),
|
super(change.getId(), change.getName(), change.getEnableAfterTargetSdk(),
|
||||||
change.getDisabled(), change.getDescription());
|
change.getDisabled(), change.getLoggingOnly(), change.getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerListener(ChangeListener listener) {
|
void registerListener(ChangeListener listener) {
|
||||||
@@ -105,6 +105,10 @@ public final class CompatChange extends CompatibilityChangeInfo {
|
|||||||
* @param enabled Whether or not to enable the change.
|
* @param enabled Whether or not to enable the change.
|
||||||
*/
|
*/
|
||||||
void addPackageOverride(String pname, boolean enabled) {
|
void addPackageOverride(String pname, boolean enabled) {
|
||||||
|
if (getLoggingOnly()) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Can't add overrides for a logging only change " + toString());
|
||||||
|
}
|
||||||
if (mPackageOverrides == null) {
|
if (mPackageOverrides == null) {
|
||||||
mPackageOverrides = new HashMap<>();
|
mPackageOverrides = new HashMap<>();
|
||||||
}
|
}
|
||||||
@@ -160,6 +164,9 @@ public final class CompatChange extends CompatibilityChangeInfo {
|
|||||||
if (getDisabled()) {
|
if (getDisabled()) {
|
||||||
sb.append("; disabled");
|
sb.append("; disabled");
|
||||||
}
|
}
|
||||||
|
if (getLoggingOnly()) {
|
||||||
|
sb.append("; loggingOnly");
|
||||||
|
}
|
||||||
if (mPackageOverrides != null && mPackageOverrides.size() > 0) {
|
if (mPackageOverrides != null && mPackageOverrides.size() > 0) {
|
||||||
sb.append("; packageOverrides=").append(mPackageOverrides);
|
sb.append("; packageOverrides=").append(mPackageOverrides);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,6 +205,19 @@ final class CompatConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the change is marked as logging only.
|
||||||
|
*/
|
||||||
|
boolean isLoggingOnly(long changeId) {
|
||||||
|
synchronized (mChanges) {
|
||||||
|
CompatChange c = mChanges.get(changeId);
|
||||||
|
if (c == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return c.getLoggingOnly();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes an override previously added via {@link #addOverride(long, String, boolean)}. This
|
* Removes an override previously added via {@link #addOverride(long, String, boolean)}. This
|
||||||
* restores the default behaviour for the given change and app, once any app processes have been
|
* restores the default behaviour for the given change and app, once any app processes have been
|
||||||
@@ -365,6 +378,7 @@ final class CompatConfig {
|
|||||||
change.getName(),
|
change.getName(),
|
||||||
change.getEnableAfterTargetSdk(),
|
change.getEnableAfterTargetSdk(),
|
||||||
change.getDisabled(),
|
change.getDisabled(),
|
||||||
|
change.getLoggingOnly(),
|
||||||
change.getDescription());
|
change.getDescription());
|
||||||
}
|
}
|
||||||
return changeInfos;
|
return changeInfos;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static com.android.internal.compat.OverrideAllowedState.ALLOWED;
|
|||||||
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NON_TARGET_SDK;
|
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NON_TARGET_SDK;
|
||||||
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NOT_DEBUGGABLE;
|
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NOT_DEBUGGABLE;
|
||||||
import static com.android.internal.compat.OverrideAllowedState.DISABLED_TARGET_SDK_TOO_HIGH;
|
import static com.android.internal.compat.OverrideAllowedState.DISABLED_TARGET_SDK_TOO_HIGH;
|
||||||
|
import static com.android.internal.compat.OverrideAllowedState.LOGGING_ONLY_CHANGE;
|
||||||
import static com.android.internal.compat.OverrideAllowedState.PACKAGE_DOES_NOT_EXIST;
|
import static com.android.internal.compat.OverrideAllowedState.PACKAGE_DOES_NOT_EXIST;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -51,12 +52,13 @@ public class OverrideValidatorImpl extends IOverrideValidator.Stub {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OverrideAllowedState getOverrideAllowedState(long changeId, String packageName) {
|
public OverrideAllowedState getOverrideAllowedState(long changeId, String packageName) {
|
||||||
boolean debuggableBuild = false;
|
if (mCompatConfig.isLoggingOnly(changeId)) {
|
||||||
boolean finalBuild = false;
|
return new OverrideAllowedState(LOGGING_ONLY_CHANGE, -1, -1);
|
||||||
int minTargetSdk = mCompatConfig.minTargetSdkForChangeId(changeId);
|
}
|
||||||
|
|
||||||
debuggableBuild = mAndroidBuildClassifier.isDebuggableBuild();
|
boolean debuggableBuild = mAndroidBuildClassifier.isDebuggableBuild();
|
||||||
finalBuild = mAndroidBuildClassifier.isFinalBuild();
|
boolean finalBuild = mAndroidBuildClassifier.isFinalBuild();
|
||||||
|
int minTargetSdk = mCompatConfig.minTargetSdkForChangeId(changeId);
|
||||||
|
|
||||||
// Allow any override for userdebug or eng builds.
|
// Allow any override for userdebug or eng builds.
|
||||||
if (debuggableBuild) {
|
if (debuggableBuild) {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
<xs:attribute type="xs:long" name="id" use="required"/>
|
<xs:attribute type="xs:long" name="id" use="required"/>
|
||||||
<xs:attribute type="xs:string" name="name" use="required"/>
|
<xs:attribute type="xs:string" name="name" use="required"/>
|
||||||
<xs:attribute type="xs:boolean" name="disabled"/>
|
<xs:attribute type="xs:boolean" name="disabled"/>
|
||||||
|
<xs:attribute type="xs:boolean" name="loggingOnly"/>
|
||||||
<xs:attribute type="xs:int" name="enableAfterTargetSdk"/>
|
<xs:attribute type="xs:int" name="enableAfterTargetSdk"/>
|
||||||
<xs:attribute type="xs:string" name="description"/>
|
<xs:attribute type="xs:string" name="description"/>
|
||||||
</xs:extension>
|
</xs:extension>
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ package com.android.server.compat.config {
|
|||||||
method public boolean getDisabled();
|
method public boolean getDisabled();
|
||||||
method public int getEnableAfterTargetSdk();
|
method public int getEnableAfterTargetSdk();
|
||||||
method public long getId();
|
method public long getId();
|
||||||
|
method public boolean getLoggingOnly();
|
||||||
method public String getName();
|
method public String getName();
|
||||||
method public String getValue();
|
method public String getValue();
|
||||||
method public void setDescription(String);
|
method public void setDescription(String);
|
||||||
method public void setDisabled(boolean);
|
method public void setDisabled(boolean);
|
||||||
method public void setEnableAfterTargetSdk(int);
|
method public void setEnableAfterTargetSdk(int);
|
||||||
method public void setId(long);
|
method public void setId(long);
|
||||||
|
method public void setLoggingOnly(boolean);
|
||||||
method public void setName(String);
|
method public void setName(String);
|
||||||
method public void setValue(String);
|
method public void setValue(String);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,52 +40,57 @@ class CompatConfigBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addTargetSdkChangeWithId(int sdk, long id) {
|
CompatConfigBuilder addTargetSdkChangeWithId(int sdk, long id) {
|
||||||
mChanges.add(new CompatChange(id, "", sdk, false, ""));
|
mChanges.add(new CompatChange(id, "", sdk, false, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addTargetSdkDisabledChangeWithId(int sdk, long id) {
|
CompatConfigBuilder addTargetSdkDisabledChangeWithId(int sdk, long id) {
|
||||||
mChanges.add(new CompatChange(id, "", sdk, true, ""));
|
mChanges.add(new CompatChange(id, "", sdk, true, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addTargetSdkChangeWithIdAndName(int sdk, long id, String name) {
|
CompatConfigBuilder addTargetSdkChangeWithIdAndName(int sdk, long id, String name) {
|
||||||
mChanges.add(new CompatChange(id, name, sdk, false, ""));
|
mChanges.add(new CompatChange(id, name, sdk, false, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addTargetSdkChangeWithIdAndDescription(int sdk, long id,
|
CompatConfigBuilder addTargetSdkChangeWithIdAndDescription(int sdk, long id,
|
||||||
String description) {
|
String description) {
|
||||||
mChanges.add(new CompatChange(id, "", sdk, false, description));
|
mChanges.add(new CompatChange(id, "", sdk, false, false, description));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addEnabledChangeWithId(long id) {
|
CompatConfigBuilder addEnabledChangeWithId(long id) {
|
||||||
mChanges.add(new CompatChange(id, "", -1, false, ""));
|
mChanges.add(new CompatChange(id, "", -1, false, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addEnabledChangeWithIdAndName(long id, String name) {
|
CompatConfigBuilder addEnabledChangeWithIdAndName(long id, String name) {
|
||||||
mChanges.add(new CompatChange(id, name, -1, false, ""));
|
mChanges.add(new CompatChange(id, name, -1, false, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
CompatConfigBuilder addEnabledChangeWithIdAndDescription(long id, String description) {
|
CompatConfigBuilder addEnabledChangeWithIdAndDescription(long id, String description) {
|
||||||
mChanges.add(new CompatChange(id, "", -1, false, description));
|
mChanges.add(new CompatChange(id, "", -1, false, false, description));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addDisabledChangeWithId(long id) {
|
CompatConfigBuilder addDisabledChangeWithId(long id) {
|
||||||
mChanges.add(new CompatChange(id, "", -1, true, ""));
|
mChanges.add(new CompatChange(id, "", -1, true, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addDisabledChangeWithIdAndName(long id, String name) {
|
CompatConfigBuilder addDisabledChangeWithIdAndName(long id, String name) {
|
||||||
mChanges.add(new CompatChange(id, name, -1, true, ""));
|
mChanges.add(new CompatChange(id, name, -1, true, false, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompatConfigBuilder addDisabledChangeWithIdAndDescription(long id, String description) {
|
CompatConfigBuilder addDisabledChangeWithIdAndDescription(long id, String description) {
|
||||||
mChanges.add(new CompatChange(id, "", -1, true, description));
|
mChanges.add(new CompatChange(id, "", -1, true, false, description));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
CompatConfigBuilder addLoggingOnlyChangeWithId(long id) {
|
||||||
|
mChanges.add(new CompatChange(id, "", -1, false, true, ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -213,6 +213,17 @@ public class CompatConfigTest {
|
|||||||
assertThat(compatConfig.isChangeEnabled(1234L, applicationInfo)).isFalse();
|
assertThat(compatConfig.isChangeEnabled(1234L, applicationInfo)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLoggingOnlyChangePreventAddOverride() throws Exception {
|
||||||
|
CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
|
||||||
|
.addLoggingOnlyChangeWithId(1234L)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
assertThrows(SecurityException.class,
|
||||||
|
() -> compatConfig.addOverride(1234L, "com.some.package", true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPreventRemoveOverride() throws Exception {
|
public void testPreventRemoveOverride() throws Exception {
|
||||||
CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
|
CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static com.android.internal.compat.OverrideAllowedState.ALLOWED;
|
|||||||
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NON_TARGET_SDK;
|
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NON_TARGET_SDK;
|
||||||
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NOT_DEBUGGABLE;
|
import static com.android.internal.compat.OverrideAllowedState.DISABLED_NOT_DEBUGGABLE;
|
||||||
import static com.android.internal.compat.OverrideAllowedState.DISABLED_TARGET_SDK_TOO_HIGH;
|
import static com.android.internal.compat.OverrideAllowedState.DISABLED_TARGET_SDK_TOO_HIGH;
|
||||||
|
import static com.android.internal.compat.OverrideAllowedState.LOGGING_ONLY_CHANGE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -78,6 +79,7 @@ public class OverrideValidatorImplTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
android.app.compat.ChangeIdStateCache.disable();
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +91,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
||||||
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
||||||
.addEnabledChangeWithId(4)
|
.addEnabledChangeWithId(4)
|
||||||
.addDisabledChangeWithId(5).build();
|
.addDisabledChangeWithId(5)
|
||||||
|
.addLoggingOnlyChangeWithId(6).build();
|
||||||
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
||||||
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
||||||
.thenReturn(ApplicationInfoBuilder.create()
|
.thenReturn(ApplicationInfoBuilder.create()
|
||||||
@@ -107,6 +110,8 @@ public class OverrideValidatorImplTest {
|
|||||||
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
||||||
OverrideAllowedState stateDisabledChange =
|
OverrideAllowedState stateDisabledChange =
|
||||||
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
||||||
|
OverrideAllowedState stateDLoggingOnlyChange =
|
||||||
|
overrideValidator.getOverrideAllowedState(6, PACKAGE_NAME);
|
||||||
|
|
||||||
assertThat(stateTargetSdkLessChange)
|
assertThat(stateTargetSdkLessChange)
|
||||||
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
||||||
@@ -118,6 +123,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
||||||
assertThat(stateDisabledChange)
|
assertThat(stateDisabledChange)
|
||||||
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
||||||
|
assertThat(stateDLoggingOnlyChange)
|
||||||
|
.isEqualTo(new OverrideAllowedState(LOGGING_ONLY_CHANGE, -1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -128,7 +135,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
||||||
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
||||||
.addEnabledChangeWithId(4)
|
.addEnabledChangeWithId(4)
|
||||||
.addDisabledChangeWithId(5).build();
|
.addDisabledChangeWithId(5)
|
||||||
|
.addLoggingOnlyChangeWithId(6).build();
|
||||||
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
||||||
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
||||||
.thenReturn(ApplicationInfoBuilder.create()
|
.thenReturn(ApplicationInfoBuilder.create()
|
||||||
@@ -145,6 +153,8 @@ public class OverrideValidatorImplTest {
|
|||||||
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
||||||
OverrideAllowedState stateDisabledChange =
|
OverrideAllowedState stateDisabledChange =
|
||||||
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
||||||
|
OverrideAllowedState stateDLoggingOnlyChange =
|
||||||
|
overrideValidator.getOverrideAllowedState(6, PACKAGE_NAME);
|
||||||
|
|
||||||
assertThat(stateTargetSdkLessChange)
|
assertThat(stateTargetSdkLessChange)
|
||||||
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
||||||
@@ -156,6 +166,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
||||||
assertThat(stateDisabledChange)
|
assertThat(stateDisabledChange)
|
||||||
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
.isEqualTo(new OverrideAllowedState(ALLOWED, -1, -1));
|
||||||
|
assertThat(stateDLoggingOnlyChange)
|
||||||
|
.isEqualTo(new OverrideAllowedState(LOGGING_ONLY_CHANGE, -1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -232,7 +244,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
||||||
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
||||||
.addEnabledChangeWithId(4)
|
.addEnabledChangeWithId(4)
|
||||||
.addDisabledChangeWithId(5).build();
|
.addDisabledChangeWithId(5)
|
||||||
|
.addLoggingOnlyChangeWithId(6).build();
|
||||||
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
||||||
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
||||||
.thenReturn(ApplicationInfoBuilder.create()
|
.thenReturn(ApplicationInfoBuilder.create()
|
||||||
@@ -249,6 +262,8 @@ public class OverrideValidatorImplTest {
|
|||||||
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
||||||
OverrideAllowedState stateDisabledChange =
|
OverrideAllowedState stateDisabledChange =
|
||||||
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
||||||
|
OverrideAllowedState stateDLoggingOnlyChange =
|
||||||
|
overrideValidator.getOverrideAllowedState(6, PACKAGE_NAME);
|
||||||
|
|
||||||
assertThat(stateTargetSdkLessChange)
|
assertThat(stateTargetSdkLessChange)
|
||||||
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
||||||
@@ -260,6 +275,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
||||||
assertThat(stateDisabledChange)
|
assertThat(stateDisabledChange)
|
||||||
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
||||||
|
assertThat(stateDLoggingOnlyChange)
|
||||||
|
.isEqualTo(new OverrideAllowedState(LOGGING_ONLY_CHANGE, -1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -351,7 +368,8 @@ public class OverrideValidatorImplTest {
|
|||||||
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
.addTargetSdkChangeWithId(TARGET_SDK, 2)
|
||||||
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
.addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
|
||||||
.addEnabledChangeWithId(4)
|
.addEnabledChangeWithId(4)
|
||||||
.addDisabledChangeWithId(5).build();
|
.addDisabledChangeWithId(5)
|
||||||
|
.addLoggingOnlyChangeWithId(6).build();
|
||||||
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
IOverrideValidator overrideValidator = config.getOverrideValidator();
|
||||||
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
|
||||||
.thenReturn(ApplicationInfoBuilder.create()
|
.thenReturn(ApplicationInfoBuilder.create()
|
||||||
@@ -368,6 +386,8 @@ public class OverrideValidatorImplTest {
|
|||||||
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(4, PACKAGE_NAME);
|
||||||
OverrideAllowedState stateDisabledChange =
|
OverrideAllowedState stateDisabledChange =
|
||||||
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
overrideValidator.getOverrideAllowedState(5, PACKAGE_NAME);
|
||||||
|
OverrideAllowedState stateDLoggingOnlyChange =
|
||||||
|
overrideValidator.getOverrideAllowedState(6, PACKAGE_NAME);
|
||||||
|
|
||||||
assertThat(stateTargetSdkLessChange)
|
assertThat(stateTargetSdkLessChange)
|
||||||
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
||||||
@@ -379,5 +399,7 @@ public class OverrideValidatorImplTest {
|
|||||||
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
||||||
assertThat(stateDisabledChange)
|
assertThat(stateDisabledChange)
|
||||||
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
.isEqualTo(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
|
||||||
|
assertThat(stateDLoggingOnlyChange)
|
||||||
|
.isEqualTo(new OverrideAllowedState(LOGGING_ONLY_CHANGE, -1, -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user