Loading services/core/java/com/android/server/notification/ManagedServices.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -71,10 +71,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; import java.util.HashSet; import java.util.HashSet; import java.util.List; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.function.Predicate; import java.util.function.Predicate; import java.util.stream.Collectors; /** /** * Manages the lifecycle of application-provided services bound by system server. * Manages the lifecycle of application-provided services bound by system server. Loading Loading @@ -406,15 +404,20 @@ abstract public class ManagedServices { approvedByType = new ArrayMap<>(); approvedByType = new ArrayMap<>(); mApproved.put(userId, approvedByType); mApproved.put(userId, approvedByType); } } ArraySet<String> approvedList = approvedByType.get(isPrimary); if (approvedList == null) { approvedList = new ArraySet<>(); approvedByType.put(isPrimary, approvedList); } String[] approvedArray = approved.split(ENABLED_SERVICES_SEPARATOR); String[] approvedArray = approved.split(ENABLED_SERVICES_SEPARATOR); final ArraySet<String> approvedList = new ArraySet<>(); for (String pkgOrComponent : approvedArray) { for (String pkgOrComponent : approvedArray) { String approvedItem = getApprovedValue(pkgOrComponent); String approvedItem = getApprovedValue(pkgOrComponent); if (approvedItem != null) { if (approvedItem != null) { approvedList.add(approvedItem); approvedList.add(approvedItem); } } } } approvedByType.put(isPrimary, approvedList); } } protected boolean isComponentEnabledForPackage(String pkg) { protected boolean isComponentEnabledForPackage(String pkg) { Loading services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java +26 −0 Original line number Original line Diff line number Diff line Loading @@ -266,6 +266,32 @@ public class ManagedServicesTest extends UiServiceTestCase { } } } } @Test public void testReadXml_appendsListOfApprovedComponents() throws Exception { for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, mIpm, approvalLevel); String preApprovedPackage = "some.random.package"; String preApprovedComponent = "some.random.package/C1"; List<String> packages = new ArrayList<>(); packages.add(preApprovedPackage); addExpectedServices(service, packages, 0); service.setPackageOrComponentEnabled(preApprovedComponent, 0, true, true); loadXml(service); verifyExpectedApprovedEntries(service); String verifyValue = (approvalLevel == APPROVAL_BY_COMPONENT) ? preApprovedComponent : preApprovedPackage; assertTrue(service.isPackageOrComponentAllowed(verifyValue, 0)); } } @Test @Test public void testWriteXml_trimsMissingServices() throws Exception { public void testWriteXml_trimsMissingServices() throws Exception { for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { Loading Loading
services/core/java/com/android/server/notification/ManagedServices.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -71,10 +71,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; import java.util.HashSet; import java.util.HashSet; import java.util.List; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.function.Predicate; import java.util.function.Predicate; import java.util.stream.Collectors; /** /** * Manages the lifecycle of application-provided services bound by system server. * Manages the lifecycle of application-provided services bound by system server. Loading Loading @@ -406,15 +404,20 @@ abstract public class ManagedServices { approvedByType = new ArrayMap<>(); approvedByType = new ArrayMap<>(); mApproved.put(userId, approvedByType); mApproved.put(userId, approvedByType); } } ArraySet<String> approvedList = approvedByType.get(isPrimary); if (approvedList == null) { approvedList = new ArraySet<>(); approvedByType.put(isPrimary, approvedList); } String[] approvedArray = approved.split(ENABLED_SERVICES_SEPARATOR); String[] approvedArray = approved.split(ENABLED_SERVICES_SEPARATOR); final ArraySet<String> approvedList = new ArraySet<>(); for (String pkgOrComponent : approvedArray) { for (String pkgOrComponent : approvedArray) { String approvedItem = getApprovedValue(pkgOrComponent); String approvedItem = getApprovedValue(pkgOrComponent); if (approvedItem != null) { if (approvedItem != null) { approvedList.add(approvedItem); approvedList.add(approvedItem); } } } } approvedByType.put(isPrimary, approvedList); } } protected boolean isComponentEnabledForPackage(String pkg) { protected boolean isComponentEnabledForPackage(String pkg) { Loading
services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java +26 −0 Original line number Original line Diff line number Diff line Loading @@ -266,6 +266,32 @@ public class ManagedServicesTest extends UiServiceTestCase { } } } } @Test public void testReadXml_appendsListOfApprovedComponents() throws Exception { for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, mIpm, approvalLevel); String preApprovedPackage = "some.random.package"; String preApprovedComponent = "some.random.package/C1"; List<String> packages = new ArrayList<>(); packages.add(preApprovedPackage); addExpectedServices(service, packages, 0); service.setPackageOrComponentEnabled(preApprovedComponent, 0, true, true); loadXml(service); verifyExpectedApprovedEntries(service); String verifyValue = (approvalLevel == APPROVAL_BY_COMPONENT) ? preApprovedComponent : preApprovedPackage; assertTrue(service.isPackageOrComponentAllowed(verifyValue, 0)); } } @Test @Test public void testWriteXml_trimsMissingServices() throws Exception { public void testWriteXml_trimsMissingServices() throws Exception { for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { Loading