Loading core/api/system-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -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 core/java/android/content/IntentFilter.java +5 −7 Original line number Diff line number Diff line Loading @@ -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(); } Loading Loading @@ -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); } /** Loading core/java/android/content/UriRelativeFilter.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } } core/java/android/content/UriRelativeFilterGroup.aidl 0 → 100644 +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; core/java/android/content/UriRelativeFilterGroup.java +74 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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. * Loading Loading @@ -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(); Loading @@ -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
core/api/system-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -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
core/java/android/content/IntentFilter.java +5 −7 Original line number Diff line number Diff line Loading @@ -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(); } Loading Loading @@ -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); } /** Loading
core/java/android/content/UriRelativeFilter.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } }
core/java/android/content/UriRelativeFilterGroup.aidl 0 → 100644 +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;
core/java/android/content/UriRelativeFilterGroup.java +74 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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. * Loading Loading @@ -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(); Loading @@ -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))); } } }