Merge "Don't autogrant permissions on managed profiles" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b6cf707632
@@ -455,6 +455,11 @@ abstract public class ManagedServices {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onUserRemoved(int user) {
|
||||||
|
mApproved.remove(user);
|
||||||
|
rebindServices(true);
|
||||||
|
}
|
||||||
|
|
||||||
public void onUserSwitched(int user) {
|
public void onUserSwitched(int user) {
|
||||||
if (DEBUG) Slog.d(TAG, "onUserSwitched u=" + user);
|
if (DEBUG) Slog.d(TAG, "onUserSwitched u=" + user);
|
||||||
if (Arrays.equals(mLastSeenProfileIds, mUserProfiles.getCurrentProfileIds())) {
|
if (Arrays.equals(mLastSeenProfileIds, mUserProfiles.getCurrentProfileIds())) {
|
||||||
|
|||||||
@@ -985,12 +985,17 @@ public class NotificationManagerService extends SystemService {
|
|||||||
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
|
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
|
||||||
if (userId != USER_NULL) {
|
if (userId != USER_NULL) {
|
||||||
mUserProfiles.updateCache(context);
|
mUserProfiles.updateCache(context);
|
||||||
readDefaultApprovedServices(userId);
|
if (!mUserProfiles.isManagedProfile(userId)) {
|
||||||
|
readDefaultApprovedServices(userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (action.equals(Intent.ACTION_USER_REMOVED)) {
|
} else if (action.equals(Intent.ACTION_USER_REMOVED)) {
|
||||||
final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
|
final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
|
||||||
mZenModeHelper.onUserRemoved(user);
|
mZenModeHelper.onUserRemoved(user);
|
||||||
mRankingHelper.onUserRemoved(user);
|
mRankingHelper.onUserRemoved(user);
|
||||||
|
mListeners.onUserRemoved(user);
|
||||||
|
mConditionProviders.onUserRemoved(user);
|
||||||
|
mAssistants.onUserRemoved(user);
|
||||||
savePolicyFile();
|
savePolicyFile();
|
||||||
} else if (action.equals(Intent.ACTION_USER_UNLOCKED)) {
|
} else if (action.equals(Intent.ACTION_USER_UNLOCKED)) {
|
||||||
final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
|
final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ public class ManagedServicesTest extends NotificationTestCase {
|
|||||||
private ArrayMap<Integer, String> mExpectedSecondaryPackages;
|
private ArrayMap<Integer, String> mExpectedSecondaryPackages;
|
||||||
private ArrayMap<Integer, String> mExpectedSecondaryComponentNames;
|
private ArrayMap<Integer, String> mExpectedSecondaryComponentNames;
|
||||||
|
|
||||||
|
// type : user : list of approved
|
||||||
private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedPrimary = new ArrayMap<>();
|
private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedPrimary = new ArrayMap<>();
|
||||||
private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedSecondary = new ArrayMap<>();
|
private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedSecondary = new ArrayMap<>();
|
||||||
|
|
||||||
@@ -578,6 +579,32 @@ public class ManagedServicesTest extends NotificationTestCase {
|
|||||||
assertEquals(0, service.getAllowedComponents(10).size());
|
assertEquals(0, service.getAllowedComponents(10).size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnUserRemoved() throws Exception {
|
||||||
|
for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
|
||||||
|
ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles,
|
||||||
|
mIpm, approvalLevel);
|
||||||
|
loadXml(service);
|
||||||
|
|
||||||
|
ArrayMap<Integer, String> verifyMap = mExpectedPrimary.get(service.mApprovalLevel);
|
||||||
|
String user0 = verifyMap.remove(0);
|
||||||
|
verifyMap = mExpectedSecondary.get(service.mApprovalLevel);
|
||||||
|
user0 = user0 + ":" + verifyMap.remove(0);
|
||||||
|
|
||||||
|
service.onUserRemoved(0);
|
||||||
|
|
||||||
|
for (String verifyValue : user0.split(":")) {
|
||||||
|
if (!TextUtils.isEmpty(verifyValue)) {
|
||||||
|
assertFalse("service type " + service.mApprovalLevel + ":" + verifyValue
|
||||||
|
+ " is still allowed",
|
||||||
|
service.isPackageOrComponentAllowed(verifyValue, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
verifyExpectedApprovedEntries(service);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void loadXml(ManagedServices service) throws Exception {
|
private void loadXml(ManagedServices service) throws Exception {
|
||||||
final StringBuffer xml = new StringBuffer();
|
final StringBuffer xml = new StringBuffer();
|
||||||
xml.append("<" + service.getConfig().xmlTag + ">\n");
|
xml.append("<" + service.getConfig().xmlTag + ">\n");
|
||||||
@@ -657,7 +684,8 @@ public class ManagedServicesTest extends NotificationTestCase {
|
|||||||
for (String packageOrComponent : verifyMap.get(userId).split(":")) {
|
for (String packageOrComponent : verifyMap.get(userId).split(":")) {
|
||||||
if (!TextUtils.isEmpty(packageOrComponent)) {
|
if (!TextUtils.isEmpty(packageOrComponent)) {
|
||||||
if (service.mApprovalLevel == APPROVAL_BY_PACKAGE) {
|
if (service.mApprovalLevel == APPROVAL_BY_PACKAGE) {
|
||||||
assertTrue(packageOrComponent, service.isComponentEnabledForPackage(packageOrComponent));
|
assertTrue(packageOrComponent,
|
||||||
|
service.isComponentEnabledForPackage(packageOrComponent));
|
||||||
for (int i = 1; i <= 3; i ++) {
|
for (int i = 1; i <= 3; i ++) {
|
||||||
ComponentName componentName = ComponentName.unflattenFromString(
|
ComponentName componentName = ComponentName.unflattenFromString(
|
||||||
packageOrComponent +"/C" + i);
|
packageOrComponent +"/C" + i);
|
||||||
|
|||||||
Reference in New Issue
Block a user