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

Commit 0c8a17f2 authored by Grace Cheng's avatar Grace Cheng
Browse files

Changes getAdasAllowlist so that it is protected with the newly added...

Changes getAdasAllowlist so that it is protected with the newly added permission `ACCESS_LOCATION_BYPASS_ALLOWLIST` and becomes a system api.

This change also adds ACCESS_LOCATION_BYPASS_ALLOWLIST to Shell for XTS.

Flag: android.location.flags.change_get_adas_allowlist_from_hidden_to_system
Bug: 362287534
Test: atest CtsSecurityTestCases:LocationDisabledAppOpsTest
Test: atest GtsLocationTestCases:AdasPackageAllowlistTest
Change-Id: I4c9e8d9d49522555f2f227215294ac0da71b9f08
parent e77232f6
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -391,6 +391,17 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.location.flags-aconfig-java-export",
    aconfig_declarations: "android.location.flags-aconfig",
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "com.android.permission",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// NFC
aconfig_declarations {
    name: "android.nfc.flags-aconfig",
+22 −0
Original line number Diff line number Diff line
@@ -11678,6 +11678,28 @@ package android.os {
    method public boolean isSuccessful();
  }
  @FlaggedApi("android.location.flags.change_get_adas_allowlist_from_hidden_to_system") public final class PackageTagsList implements android.os.Parcelable {
    method public boolean contains(@NonNull String, @Nullable String);
    method public boolean containsAll(@NonNull android.os.PackageTagsList);
    method public boolean containsPackage(@NonNull String);
    method public boolean containsPackageWithAllTags(@NonNull String);
    method public int describeContents();
    method @NonNull public java.util.Set<java.lang.String> getPackages();
    method public boolean isEmpty();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.PackageTagsList> CREATOR;
  }
  public static final class PackageTagsList.Builder {
    ctor public PackageTagsList.Builder();
    ctor public PackageTagsList.Builder(int);
    method @NonNull public android.os.PackageTagsList.Builder add(@NonNull String);
    method @NonNull public android.os.PackageTagsList.Builder add(@NonNull String, @Nullable String);
    method @NonNull public android.os.PackageTagsList.Builder addAll(@NonNull android.os.PackageTagsList);
    method @NonNull public android.os.PackageTagsList.Builder addAll(@NonNull java.util.Map<java.lang.String,? extends java.util.Set<java.lang.String>>);
    method @NonNull public android.os.PackageTagsList build();
  }
  public interface Parcelable {
    method public default int getStability();
    field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0
+0 −22
Original line number Diff line number Diff line
@@ -2532,28 +2532,6 @@ package android.os {
    ctor public NewUserResponse(@Nullable android.os.UserHandle, int);
  }

  public final class PackageTagsList implements android.os.Parcelable {
    method public boolean contains(@NonNull String, @Nullable String);
    method public boolean containsAll(@NonNull android.os.PackageTagsList);
    method public boolean containsPackage(@NonNull String);
    method public boolean containsPackageWithAllTags(@NonNull String);
    method public int describeContents();
    method @NonNull public java.util.Set<java.lang.String> getPackages();
    method public boolean isEmpty();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.PackageTagsList> CREATOR;
  }

  public static final class PackageTagsList.Builder {
    ctor public PackageTagsList.Builder();
    ctor public PackageTagsList.Builder(int);
    method @NonNull public android.os.PackageTagsList.Builder add(@NonNull String);
    method @NonNull public android.os.PackageTagsList.Builder add(@NonNull String, @Nullable String);
    method @NonNull public android.os.PackageTagsList.Builder addAll(@NonNull android.os.PackageTagsList);
    method @NonNull public android.os.PackageTagsList.Builder addAll(@NonNull java.util.Map<java.lang.String,? extends java.util.Set<java.lang.String>>);
    method @NonNull public android.os.PackageTagsList build();
  }

  @FlaggedApi("android.location.flags.change_get_adas_allowlist_from_hidden_to_system") public final class PackageTagsMap implements android.os.Parcelable {
    method public boolean contains(@NonNull String, @Nullable String);
    method public boolean containsAll(@NonNull android.os.PackageTagsMap);
+7 −9
Original line number Diff line number Diff line
@@ -16,10 +16,12 @@

package android.os;

import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.TestApi;
import android.annotation.SystemApi;
import android.location.flags.Flags;
import android.util.ArrayMap;
import android.util.ArraySet;

@@ -40,8 +42,8 @@ import java.util.stream.Collectors;
 *
 * @hide
 */
@SuppressLint("UnflaggedApi") // TestApi
@TestApi
@FlaggedApi(Flags.FLAG_CHANGE_GET_ADAS_ALLOWLIST_FROM_HIDDEN_TO_SYSTEM)
@SystemApi
@Immutable
@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class PackageTagsList implements Parcelable {
@@ -65,7 +67,6 @@ public final class PackageTagsList implements Parcelable {
     * does not imply anything about whether any given attribution tag under the given package name
     * is present.
     */
    @SuppressLint("UnflaggedApi") // TestApi
    public boolean containsPackage(@NonNull String packageName) {
        return mPackageTags.containsKey(packageName);
    }
@@ -93,7 +94,6 @@ public final class PackageTagsList implements Parcelable {
     * Returns true if all attribution tags under the given package are contained within this
     * instance.
     */
    @SuppressLint("UnflaggedApi") // TestApi
    public boolean containsPackageWithAllTags(@NonNull String packageName) {
        Set<String> tags = mPackageTags.get(packageName);
        return tags != null && tags.isEmpty();
@@ -115,7 +115,6 @@ public final class PackageTagsList implements Parcelable {
    }

    /** Returns true if the given PackageTagsList is a subset of this instance. */
    @SuppressLint("UnflaggedApi") // TestApi
    public boolean containsAll(@NonNull PackageTagsList packageTagsList) {
        int otherSize = packageTagsList.mPackageTags.size();
        if (otherSize > mPackageTags.size()) {
@@ -146,7 +145,6 @@ public final class PackageTagsList implements Parcelable {
    }

    /** Returns all packages that possess at least one attribution tag. */
    @SuppressLint("UnflaggedApi") // TestApi
    public @NonNull Set<String> getPackages() {
        return Set.copyOf(mPackageTags.keySet());
    }
@@ -312,7 +310,7 @@ public final class PackageTagsList implements Parcelable {
        }

        /** Adds the specified {@link PackageTagsList} to the builder. */
        @SuppressLint({"MissingGetterMatchingBuilder", "UnflaggedApi"}) // TestApi
        @SuppressLint("MissingGetterMatchingBuilder")
        public @NonNull Builder addAll(@NonNull PackageTagsList packageTagsList) {
            return addAll(packageTagsList.mPackageTags);
        }
@@ -321,7 +319,7 @@ public final class PackageTagsList implements Parcelable {
         * Adds the given map of package to attribution tags to the builder. An empty set of
         * attribution tags is interpreted to imply all attribution tags under that package.
         */
        @SuppressLint({"MissingGetterMatchingBuilder", "UnflaggedApi"}) // TestApi
        @SuppressLint("MissingGetterMatchingBuilder")
        public @NonNull Builder addAll(@NonNull Map<String, ? extends Set<String>> packageTagsMap) {
            mPackageTags.ensureCapacity(packageTagsMap.size());
            for (Map.Entry<String, ? extends Set<String>> entry : packageTagsMap.entrySet()) {
+2 −0
Original line number Diff line number Diff line
@@ -269,6 +269,8 @@ applications that come with the platform
        <permission name="android.permission.GET_DEVICE_LOCK_ENROLLMENT_TYPE"/>
        <!-- Needed for GMSCore Location API test only -->
        <permission name="android.permission.LOCATION_BYPASS"/>
        <!-- Needed for XTS tests only. -->
        <permission name="android.permission.ACCESS_LOCATION_BYPASS_ALLOWLIST"/>
        <!-- Needed for test only -->
        <permission name="android.permission.BATTERY_PREDICTION"/>
        <permission name="android.permission.BATTERY_STATS"/>
Loading