Merge "Handle multiple users when adding and rechecking overrides." into sc-dev
This commit is contained in:
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.server.compat;
|
package com.android.server.compat;
|
||||||
|
|
||||||
|
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.app.compat.ChangeIdStateCache;
|
import android.app.compat.ChangeIdStateCache;
|
||||||
import android.app.compat.PackageOverride;
|
import android.app.compat.PackageOverride;
|
||||||
@@ -693,7 +695,7 @@ final class CompatConfig {
|
|||||||
private Long getVersionCodeOrNull(String packageName) {
|
private Long getVersionCodeOrNull(String packageName) {
|
||||||
try {
|
try {
|
||||||
ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
|
ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
|
||||||
packageName, 0);
|
packageName, MATCH_ANY_USER);
|
||||||
return applicationInfo.longVersionCode;
|
return applicationInfo.longVersionCode;
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.server.compat;
|
package com.android.server.compat;
|
||||||
|
|
||||||
import static android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD;
|
import static android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD;
|
||||||
|
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
||||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||||
|
|
||||||
import static com.android.internal.compat.OverrideAllowedState.ALLOWED;
|
import static com.android.internal.compat.OverrideAllowedState.ALLOWED;
|
||||||
@@ -116,7 +117,7 @@ public class OverrideValidatorImpl extends IOverrideValidator.Stub {
|
|||||||
}
|
}
|
||||||
ApplicationInfo applicationInfo;
|
ApplicationInfo applicationInfo;
|
||||||
try {
|
try {
|
||||||
applicationInfo = packageManager.getApplicationInfo(packageName, 0);
|
applicationInfo = packageManager.getApplicationInfo(packageName, MATCH_ANY_USER);
|
||||||
} catch (NameNotFoundException e) {
|
} catch (NameNotFoundException e) {
|
||||||
return new OverrideAllowedState(DEFERRED_VERIFICATION, -1, -1);
|
return new OverrideAllowedState(DEFERRED_VERIFICATION, -1, -1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -508,7 +508,8 @@ public class PlatformCompat extends IPlatformCompat.Stub {
|
|||||||
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
|
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
|
||||||
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
|
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
|
||||||
filter.addDataScheme("package");
|
filter.addDataScheme("package");
|
||||||
context.registerReceiver(receiver, filter);
|
context.registerReceiverForAllUsers(receiver, filter, /* broadcastPermission= */
|
||||||
|
null, /* scheduler= */ null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.tests.gating;
|
package com.android.tests.gating;
|
||||||
|
|
||||||
|
import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
|
||||||
import static android.Manifest.permission.LOG_COMPAT_CHANGE;
|
import static android.Manifest.permission.LOG_COMPAT_CHANGE;
|
||||||
import static android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG;
|
import static android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG;
|
||||||
import static android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG;
|
import static android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG;
|
||||||
@@ -261,13 +262,15 @@ public final class PlatformCompatPermissionsTest {
|
|||||||
public void clearOverrides_noOverridesPermission_throwsSecurityException()
|
public void clearOverrides_noOverridesPermission_throwsSecurityException()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
thrown.expect(SecurityException.class);
|
thrown.expect(SecurityException.class);
|
||||||
|
mUiAutomation.adoptShellPermissionIdentity(INTERACT_ACROSS_USERS_FULL);
|
||||||
|
|
||||||
mPlatformCompat.clearOverrides("foo.bar");
|
mPlatformCompat.clearOverrides("foo.bar");
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void clearOverrides_overridesPermission_noThrow()
|
public void clearOverrides_overridesPermission_noThrow()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
|
mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG,
|
||||||
|
INTERACT_ACROSS_USERS_FULL);
|
||||||
|
|
||||||
mPlatformCompat.clearOverrides("foo.bar");
|
mPlatformCompat.clearOverrides("foo.bar");
|
||||||
}
|
}
|
||||||
@@ -276,13 +279,15 @@ public final class PlatformCompatPermissionsTest {
|
|||||||
public void clearOverridesForTest_noOverridesPermission_throwsSecurityException()
|
public void clearOverridesForTest_noOverridesPermission_throwsSecurityException()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
thrown.expect(SecurityException.class);
|
thrown.expect(SecurityException.class);
|
||||||
|
mUiAutomation.adoptShellPermissionIdentity(INTERACT_ACROSS_USERS_FULL);
|
||||||
|
|
||||||
mPlatformCompat.clearOverridesForTest("foo.bar");
|
mPlatformCompat.clearOverridesForTest("foo.bar");
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void clearOverridesForTest_overridesPermission_noThrow()
|
public void clearOverridesForTest_overridesPermission_noThrow()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
|
mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG,
|
||||||
|
INTERACT_ACROSS_USERS_FULL);
|
||||||
|
|
||||||
mPlatformCompat.clearOverridesForTest("foo.bar");
|
mPlatformCompat.clearOverridesForTest("foo.bar");
|
||||||
}
|
}
|
||||||
@@ -291,13 +296,15 @@ public final class PlatformCompatPermissionsTest {
|
|||||||
public void clearOverride_noOverridesPermission_throwsSecurityException()
|
public void clearOverride_noOverridesPermission_throwsSecurityException()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
thrown.expect(SecurityException.class);
|
thrown.expect(SecurityException.class);
|
||||||
|
mUiAutomation.adoptShellPermissionIdentity(INTERACT_ACROSS_USERS_FULL);
|
||||||
|
|
||||||
mPlatformCompat.clearOverride(1, "foo.bar");
|
mPlatformCompat.clearOverride(1, "foo.bar");
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void clearOverride_overridesPermission_noThrow()
|
public void clearOverride_overridesPermission_noThrow()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
|
mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG,
|
||||||
|
INTERACT_ACROSS_USERS_FULL);
|
||||||
|
|
||||||
mPlatformCompat.clearOverride(1, "foo.bar");
|
mPlatformCompat.clearOverride(1, "foo.bar");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user