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

Commit 172c4971 authored by Patrick Baumann's avatar Patrick Baumann Committed by Android (Google) Code Review
Browse files

Merge "Adds queries->provider tag"

parents 83235861 9918123b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -286,6 +286,8 @@ public interface AndroidPackage extends Parcelable {

    List<String> getQueriesPackages();

    Set<String> getQueriesProviders();

    String getRealPackage();

    // TODO(b/135203078): Rename to getRequiredFeatures? Somewhat ambiguous whether "Req" is
+20 −0
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;

/** @hide */
public class ApkParseUtils {
@@ -1817,6 +1818,25 @@ public class ApkParseUtils {
                    );
                }
                parsingPackage.addQueriesPackage(packageName.intern());
            } else if (parser.getName().equals("provider")) {
                final TypedArray sa = res.obtainAttributes(parser,
                        R.styleable.AndroidManifestQueriesProvider);
                try {
                    final String authorities =
                            sa.getString(R.styleable.AndroidManifestQueriesProvider_authorities);
                    if (TextUtils.isEmpty(authorities)) {
                        return parseInput.error(
                                PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
                                "Authority missing from provider tag."
                        );
                    }
                    StringTokenizer authoritiesTokenizer = new StringTokenizer(authorities, ";");
                    while (authoritiesTokenizer.hasMoreElements()) {
                        parsingPackage.addQueriesProvider(authoritiesTokenizer.nextToken());
                    }
                } finally {
                    sa.recycle();
                }
            }
        }
        return parseInput.success(parsingPackage);
+14 −0
Original line number Diff line number Diff line
@@ -215,6 +215,9 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
    @Nullable
    private ArrayList<String> queriesPackages;

    @Nullable
    private ArraySet<String> queriesProviders;

    @Nullable
    private ArrayMap<String, ComponentParseUtils.ParsedProcess> processes;

@@ -956,6 +959,12 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
        return this;
    }

    @Override
    public ParsingPackage addQueriesProvider(String authority) {
        this.queriesProviders = ArrayUtils.add(this.queriesProviders, authority);
        return this;
    }

    @Override
    public PackageImpl setProcesses(ArrayMap<String, ComponentParseUtils.ParsedProcess> processes) {
        this.processes = processes;
@@ -2975,6 +2984,11 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
        return queriesPackages;
    }

    @Override
    public Set<String> getQueriesProviders() {
        return queriesProviders;
    }

    private static void internStringArrayList(List<String> list) {
        if (list != null) {
            final int N = list.size();
+2 −0
Original line number Diff line number Diff line
@@ -100,6 +100,8 @@ public interface ParsingPackage extends AndroidPackage {

    ParsingPackage addQueriesPackage(String packageName);

    ParsingPackage addQueriesProvider(String authority);

    ParsingPackage setProcesses(ArrayMap<String, ComponentParseUtils.ParsedProcess> processes);

    ParsingPackage asSplit(
+3 −0
Original line number Diff line number Diff line
@@ -2056,6 +2056,9 @@
        <attr name="name" />
    </declare-styleable>
    <declare-styleable name="AndroidManifestQueriesIntent" parent="AndroidManifestQueries" />
    <declare-styleable name="AndroidManifestQueriesProvider" parent="AndroidManifestQueries" >
        <attr name="authorities" />
    </declare-styleable>


    <!-- The <code>static-library</code> tag declares that this apk is providing itself
Loading