Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 314abf43 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add list of approved services in addApprovedList"

parents d2e2c3a6 bec9617f
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -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.
@@ -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) {
+26 −0
Original line number Original line Diff line number Diff line
@@ -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}) {