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

Commit 47b94341 authored by William Loh's avatar William Loh Committed by Android (Google) Code Review
Browse files

Merge "Add dynamic applinks update API" into main

parents d2d7a20f 53969265
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4360,10 +4360,12 @@ package android.content.pm.verify.domain {
  public final class DomainVerificationManager {
    method @Nullable @RequiresPermission(android.Manifest.permission.DOMAIN_VERIFICATION_AGENT) public android.content.pm.verify.domain.DomainVerificationInfo getDomainVerificationInfo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION) public java.util.SortedSet<android.content.pm.verify.domain.DomainOwner> getOwnersForDomain(@NonNull String);
    method @FlaggedApi("android.content.pm.relative_reference_intent_filters") @NonNull public java.util.Map<java.lang.String,java.util.List<android.content.UriRelativeFilterGroup>> getUriRelativeFilterGroups(@NonNull String, @NonNull java.util.List<java.lang.String>);
    method @NonNull @RequiresPermission(android.Manifest.permission.DOMAIN_VERIFICATION_AGENT) public java.util.List<java.lang.String> queryValidVerificationPackageNames();
    method @RequiresPermission(android.Manifest.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION) public void setDomainVerificationLinkHandlingAllowed(@NonNull String, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
    method @CheckResult @RequiresPermission(android.Manifest.permission.DOMAIN_VERIFICATION_AGENT) public int setDomainVerificationStatus(@NonNull java.util.UUID, @NonNull java.util.Set<java.lang.String>, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method @CheckResult @RequiresPermission(android.Manifest.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION) public int setDomainVerificationUserSelection(@NonNull java.util.UUID, @NonNull java.util.Set<java.lang.String>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
    method @FlaggedApi("android.content.pm.relative_reference_intent_filters") @RequiresPermission(android.Manifest.permission.DOMAIN_VERIFICATION_AGENT) public void setUriRelativeFilterGroups(@NonNull String, @NonNull java.util.Map<java.lang.String,java.util.List<android.content.UriRelativeFilterGroup>>);
    field public static final int ERROR_DOMAIN_SET_ID_INVALID = 1; // 0x1
    field public static final int ERROR_UNABLE_TO_APPROVE = 3; // 0x3
    field public static final int ERROR_UNKNOWN_DOMAIN = 2; // 0x2
+5 −7
Original line number Diff line number Diff line
@@ -559,6 +559,10 @@ public class IntentFilter implements Parcelable {
            sb.append(" sch=");
            sb.append(mDataSchemes.toString());
        }
        if (Flags.relativeReferenceIntentFilters() && countUriRelativeFilterGroups() > 0) {
            sb.append(" grp=");
            sb.append(mUriRelativeFilterGroups.toString());
        }
        sb.append(" }");
        return sb.toString();
    }
@@ -1807,13 +1811,7 @@ public class IntentFilter implements Parcelable {
        if (mUriRelativeFilterGroups == null) {
            return false;
        }
        for (int i = 0; i < mUriRelativeFilterGroups.size(); i++) {
            UriRelativeFilterGroup group = mUriRelativeFilterGroups.get(i);
            if (group.matchData(data)) {
                return group.getAction() == UriRelativeFilterGroup.ACTION_ALLOW;
            }
        }
        return false;
        return UriRelativeFilterGroup.matchGroupsToUri(mUriRelativeFilterGroups, data);
    }

    /**
+16 −0
Original line number Diff line number Diff line
@@ -217,6 +217,15 @@ public final class UriRelativeFilter {
                + " }";
    }

    /** @hide */
    public UriRelativeFilterParcel toParcel() {
        UriRelativeFilterParcel parcel = new UriRelativeFilterParcel();
        parcel.uriPart = mUriPart;
        parcel.patternType = mPatternType;
        parcel.filter = mFilter;
        return parcel;
    }

    @Override
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
@@ -257,4 +266,11 @@ public final class UriRelativeFilter {
        mPatternType = Integer.parseInt(parser.getAttributeValue(null, PATTERN_STR));
        mFilter = parser.getAttributeValue(null, FILTER_STR);
    }

    /** @hide */
    public UriRelativeFilter(UriRelativeFilterParcel parcel) {
        mUriPart = parcel.uriPart;
        mPatternType = parcel.patternType;
        mFilter = parcel.filter;
    }
}
+19 −0
Original line number Diff line number Diff line
/**
 * Copyright (c) 2024, The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.content;

parcelable UriRelativeFilterGroup;
+74 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.content;
import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.pm.Flags;
import android.net.Uri;
import android.os.Parcel;
@@ -36,9 +37,11 @@ import org.xmlpull.v1.XmlSerializer;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;

/**
@@ -83,6 +86,40 @@ public final class UriRelativeFilterGroup {
    private final @Action int mAction;
    private final ArraySet<UriRelativeFilter> mUriRelativeFilters = new ArraySet<>();

    /** @hide */
    public static boolean matchGroupsToUri(List<UriRelativeFilterGroup> groups, Uri uri) {
        for (int i = 0; i < groups.size(); i++) {
            if (groups.get(i).matchData(uri)) {
                return groups.get(i).getAction() == UriRelativeFilterGroup.ACTION_ALLOW;
            }
        }
        return false;
    }

    /** @hide */
    public static List<UriRelativeFilterGroup> parcelsToGroups(
            @Nullable List<UriRelativeFilterGroupParcel> parcels) {
        List<UriRelativeFilterGroup> groups = new ArrayList<>();
        if (parcels != null) {
            for (int i = 0; i < parcels.size(); i++) {
                groups.add(new UriRelativeFilterGroup(parcels.get(i)));
            }
        }
        return groups;
    }

    /** @hide */
    public static List<UriRelativeFilterGroupParcel> groupsToParcels(
            @Nullable List<UriRelativeFilterGroup> groups) {
        List<UriRelativeFilterGroupParcel> parcels = new ArrayList<>();
        if (groups != null) {
            for (int i = 0; i < groups.size(); i++) {
                parcels.add(groups.get(i).toParcel());
            }
        }
        return parcels;
    }

    /**
     * New UriRelativeFilterGroup that matches a Intent data.
     *
@@ -205,6 +242,35 @@ public final class UriRelativeFilterGroup {
        }
    }

    @Override
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        @SuppressWarnings("unchecked")
        UriRelativeFilterGroup that = (UriRelativeFilterGroup) o;
        if (mAction != that.mAction) return false;
        return mUriRelativeFilters.equals(that.mUriRelativeFilters);
    }

    @Override
    public int hashCode() {
        int _hash = 0;
        _hash = 31 * _hash + mAction;
        _hash = 31 * _hash + java.util.Objects.hashCode(mUriRelativeFilters);
        return _hash;
    }

    /** @hide */
    public UriRelativeFilterGroupParcel toParcel() {
        UriRelativeFilterGroupParcel parcel = new UriRelativeFilterGroupParcel();
        parcel.action = mAction;
        parcel.filters = new ArrayList<>();
        for (UriRelativeFilter filter : mUriRelativeFilters) {
            parcel.filters.add(filter.toParcel());
        }
        return parcel;
    }

    /** @hide */
    UriRelativeFilterGroup(@NonNull Parcel src) {
        mAction = src.readInt();
@@ -213,4 +279,12 @@ public final class UriRelativeFilterGroup {
            mUriRelativeFilters.add(new UriRelativeFilter(src));
        }
    }

    /** @hide */
    public UriRelativeFilterGroup(UriRelativeFilterGroupParcel parcel) {
        mAction = parcel.action;
        for (int i = 0; i < parcel.filters.size(); i++) {
            mUriRelativeFilters.add(new UriRelativeFilter(parcel.filters.get(i)));
        }
    }
}
Loading