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

Commit 6099ad23 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add support for queries matching provider filters" into rvc-dev am:...

Merge "Add support for queries matching provider filters" into rvc-dev am: 64033711 am: 5fd0a77f am: 0eba6cc3

Change-Id: Ie8d0582f359e5d002b464141d9c974da7ad010f4
parents f6513394 0eba6cc3
Loading
Loading
Loading
Loading
+26 −25
Original line number Original line Diff line number Diff line
@@ -27,12 +27,11 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageParser;
import android.content.pm.PackageParser;
import android.content.pm.parsing.component.ParsedActivity;
import android.content.pm.parsing.component.ParsedComponent;
import android.content.pm.parsing.component.ParsedComponent;
import android.content.pm.parsing.component.ParsedInstrumentation;
import android.content.pm.parsing.component.ParsedInstrumentation;
import android.content.pm.parsing.component.ParsedIntentInfo;
import android.content.pm.parsing.component.ParsedIntentInfo;
import android.content.pm.parsing.component.ParsedMainComponent;
import android.content.pm.parsing.component.ParsedProvider;
import android.content.pm.parsing.component.ParsedProvider;
import android.content.pm.parsing.component.ParsedService;
import android.os.Binder;
import android.os.Binder;
import android.os.Process;
import android.os.Process;
import android.os.Trace;
import android.os.Trace;
@@ -302,7 +301,7 @@ public class AppsFilter {
            AndroidPackage potentialTarget, Set<String> protectedBroadcasts) {
            AndroidPackage potentialTarget, Set<String> protectedBroadcasts) {
        if (!querying.getQueriesIntents().isEmpty()) {
        if (!querying.getQueriesIntents().isEmpty()) {
            for (Intent intent : querying.getQueriesIntents()) {
            for (Intent intent : querying.getQueriesIntents()) {
                if (matchesIntentFilters(intent, potentialTarget, protectedBroadcasts)) {
                if (matchesPackage(intent, potentialTarget, protectedBroadcasts)) {
                    return true;
                    return true;
                }
                }
            }
            }
@@ -354,33 +353,35 @@ public class AppsFilter {
        return false;
        return false;
    }
    }


    private static boolean matchesIntentFilters(Intent intent, AndroidPackage potentialTarget,
    private static boolean matchesPackage(Intent intent, AndroidPackage potentialTarget,
            Set<String> protectedBroadcasts) {
            Set<String> protectedBroadcasts) {
        for (int s = ArrayUtils.size(potentialTarget.getServices()) - 1; s >= 0; s--) {
        if (matchesAnyComponents(
            ParsedService service = potentialTarget.getServices().get(s);
                intent, potentialTarget.getServices(), null /*protectedBroadcasts*/)) {
            if (!service.isExported()) {
                continue;
            }
            if (matchesAnyFilter(intent, service, null /*protectedBroadcasts*/)) {
            return true;
            return true;
        }
        }
        if (matchesAnyComponents(
                intent, potentialTarget.getActivities(), null /*protectedBroadcasts*/)) {
            return true;
        }
        }
        for (int a = ArrayUtils.size(potentialTarget.getActivities()) - 1; a >= 0; a--) {
        if (matchesAnyComponents(intent, potentialTarget.getReceivers(), protectedBroadcasts)) {
            ParsedActivity activity = potentialTarget.getActivities().get(a);
            return true;
            if (!activity.isExported()) {
                continue;
        }
        }

        if (matchesAnyComponents(
            if (matchesAnyFilter(intent, activity, null /*protectedBroadcasts*/)) {
                intent, potentialTarget.getProviders(), null /*protectedBroadcasts*/)) {
            return true;
            return true;
        }
        }
        return false;
    }
    }
        for (int r = ArrayUtils.size(potentialTarget.getReceivers()) - 1; r >= 0; r--) {

            ParsedActivity receiver = potentialTarget.getReceivers().get(r);
    private static boolean matchesAnyComponents(Intent intent,
            if (!receiver.isExported()) {
            List<? extends ParsedMainComponent> components,
            Set<String> protectedBroadcasts) {
        for (int i = ArrayUtils.size(components) - 1; i >= 0; i--) {
            ParsedMainComponent component = components.get(i);
            if (!component.isExported()) {
                continue;
                continue;
            }
            }
            if (matchesAnyFilter(intent, receiver, protectedBroadcasts)) {
            if (matchesAnyFilter(intent, component, protectedBroadcasts)) {
                return true;
                return true;
            }
            }
        }
        }