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 Original line Diff line number Diff line
@@ -391,6 +391,17 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    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
// NFC
aconfig_declarations {
aconfig_declarations {
    name: "android.nfc.flags-aconfig",
    name: "android.nfc.flags-aconfig",
+22 −0
Original line number Original line Diff line number Diff line
@@ -11678,6 +11678,28 @@ package android.os {
    method public boolean isSuccessful();
    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 {
  public interface Parcelable {
    method public default int getStability();
    method public default int getStability();
    field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0
    field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0
+0 −22
Original line number Original line Diff line number Diff line
@@ -2532,28 +2532,6 @@ package android.os {
    ctor public NewUserResponse(@Nullable android.os.UserHandle, int);
    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 {
  @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 contains(@NonNull String, @Nullable String);
    method public boolean containsAll(@NonNull android.os.PackageTagsMap);
    method public boolean containsAll(@NonNull android.os.PackageTagsMap);
+7 −9
Original line number Original line Diff line number Diff line
@@ -16,10 +16,12 @@


package android.os;
package android.os;


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


@@ -40,8 +42,8 @@ import java.util.stream.Collectors;
 *
 *
 * @hide
 * @hide
 */
 */
@SuppressLint("UnflaggedApi") // TestApi
@FlaggedApi(Flags.FLAG_CHANGE_GET_ADAS_ALLOWLIST_FROM_HIDDEN_TO_SYSTEM)
@TestApi
@SystemApi
@Immutable
@Immutable
@android.ravenwood.annotation.RavenwoodKeepWholeClass
@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class PackageTagsList implements Parcelable {
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
     * does not imply anything about whether any given attribution tag under the given package name
     * is present.
     * is present.
     */
     */
    @SuppressLint("UnflaggedApi") // TestApi
    public boolean containsPackage(@NonNull String packageName) {
    public boolean containsPackage(@NonNull String packageName) {
        return mPackageTags.containsKey(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
     * Returns true if all attribution tags under the given package are contained within this
     * instance.
     * instance.
     */
     */
    @SuppressLint("UnflaggedApi") // TestApi
    public boolean containsPackageWithAllTags(@NonNull String packageName) {
    public boolean containsPackageWithAllTags(@NonNull String packageName) {
        Set<String> tags = mPackageTags.get(packageName);
        Set<String> tags = mPackageTags.get(packageName);
        return tags != null && tags.isEmpty();
        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. */
    /** Returns true if the given PackageTagsList is a subset of this instance. */
    @SuppressLint("UnflaggedApi") // TestApi
    public boolean containsAll(@NonNull PackageTagsList packageTagsList) {
    public boolean containsAll(@NonNull PackageTagsList packageTagsList) {
        int otherSize = packageTagsList.mPackageTags.size();
        int otherSize = packageTagsList.mPackageTags.size();
        if (otherSize > 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. */
    /** Returns all packages that possess at least one attribution tag. */
    @SuppressLint("UnflaggedApi") // TestApi
    public @NonNull Set<String> getPackages() {
    public @NonNull Set<String> getPackages() {
        return Set.copyOf(mPackageTags.keySet());
        return Set.copyOf(mPackageTags.keySet());
    }
    }
@@ -312,7 +310,7 @@ public final class PackageTagsList implements Parcelable {
        }
        }


        /** Adds the specified {@link PackageTagsList} to the builder. */
        /** Adds the specified {@link PackageTagsList} to the builder. */
        @SuppressLint({"MissingGetterMatchingBuilder", "UnflaggedApi"}) // TestApi
        @SuppressLint("MissingGetterMatchingBuilder")
        public @NonNull Builder addAll(@NonNull PackageTagsList packageTagsList) {
        public @NonNull Builder addAll(@NonNull PackageTagsList packageTagsList) {
            return addAll(packageTagsList.mPackageTags);
            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
         * 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.
         * 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) {
        public @NonNull Builder addAll(@NonNull Map<String, ? extends Set<String>> packageTagsMap) {
            mPackageTags.ensureCapacity(packageTagsMap.size());
            mPackageTags.ensureCapacity(packageTagsMap.size());
            for (Map.Entry<String, ? extends Set<String>> entry : packageTagsMap.entrySet()) {
            for (Map.Entry<String, ? extends Set<String>> entry : packageTagsMap.entrySet()) {
+2 −0
Original line number Original line Diff line number Diff line
@@ -269,6 +269,8 @@ applications that come with the platform
        <permission name="android.permission.GET_DEVICE_LOCK_ENROLLMENT_TYPE"/>
        <permission name="android.permission.GET_DEVICE_LOCK_ENROLLMENT_TYPE"/>
        <!-- Needed for GMSCore Location API test only -->
        <!-- Needed for GMSCore Location API test only -->
        <permission name="android.permission.LOCATION_BYPASS"/>
        <permission name="android.permission.LOCATION_BYPASS"/>
        <!-- Needed for XTS tests only. -->
        <permission name="android.permission.ACCESS_LOCATION_BYPASS_ALLOWLIST"/>
        <!-- Needed for test only -->
        <!-- Needed for test only -->
        <permission name="android.permission.BATTERY_PREDICTION"/>
        <permission name="android.permission.BATTERY_PREDICTION"/>
        <permission name="android.permission.BATTERY_STATS"/>
        <permission name="android.permission.BATTERY_STATS"/>
Loading