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

Commit d9575d5c authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [11915192, 11915193, 11915194, 11915195] into rvc-release

Change-Id: Ie2261c36990cba81de7914e9553d4df381882310
parents 695428cf 6a9464c0
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -15788,9 +15788,10 @@ public class ActivityManagerService extends IActivityManager.Stub
        }
        if (receivers != null && broadcastWhitelist != null) {
            for (int i = receivers.size() - 1; i >= 0; i--) {
                final int uid = receivers.get(i).activityInfo.applicationInfo.uid;
                if (uid >= Process.FIRST_APPLICATION_UID
                        && Arrays.binarySearch(broadcastWhitelist, UserHandle.getAppId(uid)) < 0) {
                final int receiverAppId = UserHandle.getAppId(
                        receivers.get(i).activityInfo.applicationInfo.uid);
                if (receiverAppId >= Process.FIRST_APPLICATION_UID
                        && Arrays.binarySearch(broadcastWhitelist, receiverAppId) < 0) {
                    receivers.remove(i);
                }
            }
@@ -16436,9 +16437,9 @@ public class ActivityManagerService extends IActivityManager.Stub
            // if a uid whitelist was provided, remove anything in the application space that wasn't
            // in it.
            for (int i = registeredReceivers.size() - 1; i >= 0; i--) {
                final int uid = registeredReceivers.get(i).owningUid;
                if (uid >= Process.FIRST_APPLICATION_UID
                        && Arrays.binarySearch(broadcastWhitelist, UserHandle.getAppId(uid)) < 0) {
                final int owningAppId = UserHandle.getAppId(registeredReceivers.get(i).owningUid);
                if (owningAppId >= Process.FIRST_APPLICATION_UID
                        && Arrays.binarySearch(broadcastWhitelist, owningAppId) < 0) {
                    registeredReceivers.remove(i);
                }
            }
+15 −7
Original line number Diff line number Diff line
@@ -646,7 +646,7 @@ public class AppsFilter {
            final int appxUidCount = userCount * allSettings.size();
            for (int su = 0; su < userCount; su++) {
                int subjectUser = allUsers[su].id;
                for (int ou = su; ou < userCount; ou++) {
                for (int ou = 0; ou < userCount; ou++) {
                    int otherUser = allUsers[ou].id;
                    int subjectUid = UserHandle.getUid(subjectUser, subjectSetting.appId);
                    if (!mShouldFilterCache.contains(subjectUid)) {
@@ -819,9 +819,15 @@ public class AppsFilter {
            mOverlayReferenceMapper.removePkg(setting.name);
            mFeatureConfig.updatePackageState(setting, true /*removed*/);

            if (mShouldFilterCache != null) {
            if (mShouldFilterCache != null && setting.sharedUser != null) {
                for (int i = setting.sharedUser.packages.size() - 1; i >= 0; i--) {
                    PackageSetting siblingSetting = setting.sharedUser.packages.valueAt(i);
                    if (siblingSetting == setting) {
                        continue;
                    }
                    updateShouldFilterCacheForPackage(
                        setting.name, setting, settings, users, settings.size());
                            setting.name, siblingSetting, settings, users, settings.size());
                }
            }
        });
        mForceQueryable.remove(setting.appId);
@@ -843,8 +849,10 @@ public class AppsFilter {
            PackageSetting targetPkgSetting, int userId) {
        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "shouldFilterApplication");
        try {
            if (callingUid < Process.FIRST_APPLICATION_UID
                    || UserHandle.getAppId(callingUid) == targetPkgSetting.appId) {
            int callingAppId = UserHandle.getAppId(callingUid);
            if (callingAppId < Process.FIRST_APPLICATION_UID
                    || targetPkgSetting.appId < Process.FIRST_APPLICATION_UID
                    || callingAppId == targetPkgSetting.appId) {
                return false;
            }
            if (mShouldFilterCache != null) { // use cache
@@ -869,7 +877,7 @@ public class AppsFilter {
                    return false;
                }
            }
            if (DEBUG_LOGGING || mFeatureConfig.isLoggingEnabled(UserHandle.getAppId(callingUid))) {
            if (DEBUG_LOGGING || mFeatureConfig.isLoggingEnabled(callingAppId)) {
                log(callingSetting, targetPkgSetting, "BLOCKED");
            }
            return !DEBUG_ALLOW_ALL;
+18 −1
Original line number Diff line number Diff line
@@ -512,6 +512,22 @@ public class AppsFilterTest {
                null, target, SYSTEM_USER));
    }

    @Test
    public void testSystemUidSecondaryUser_DoesntFilter() throws Exception {
        final AppsFilter appsFilter =
                new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null);
        simulateAddBasicAndroid(appsFilter);
        appsFilter.onSystemReady();

        PackageSetting target = simulateAddPackage(appsFilter,
                pkg("com.some.package"), DUMMY_TARGET_APPID);

        assertFalse(appsFilter.shouldFilterApplication(0, null, target, SECONDARY_USER));
        assertFalse(appsFilter.shouldFilterApplication(
                UserHandle.getUid(SECONDARY_USER, Process.FIRST_APPLICATION_UID - 1),
                null, target, SECONDARY_USER));
    }

    @Test
    public void testNonSystemUid_NoCallingSetting_Filters() throws Exception {
        final AppsFilter appsFilter =
@@ -790,7 +806,8 @@ public class AppsFilterTest {

        final SparseArray<int[]> systemFilter =
                appsFilter.getVisibilityWhitelist(system, USER_ARRAY, mExisting);
        assertThat(toList(systemFilter.get(SYSTEM_USER)), empty());
        assertThat(toList(systemFilter.get(SYSTEM_USER)),
                contains(seesNothingAppId, hasProviderAppId, queriesProviderAppId));

        final SparseArray<int[]> seesNothingFilter =
                appsFilter.getVisibilityWhitelist(seesNothing, USER_ARRAY, mExisting);