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

Commit decd887f authored by Felipe Leme's avatar Felipe Leme
Browse files

Autofill binding permission fixes.

- Removed deprecated BIND_AUTO_FILL
- Renamed BIND_AUTOFILL to BIND_AUTOFILL_SERVICE
- Kept BIND_AUTOFILL as @hide
- Fixed the permission code

The permission check was actually ignored; it was probably broken when we
introduced support to settings.

Fixes: 37723410
Bug: 37563972
Test: manual verification with existing client
Test: CtsAutoFillServiceTestCases pass

Change-Id: If3abdcb0ae850f0a327bfdbb9ca6c44a24823047
parent 5f797922
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -20,8 +20,7 @@ package android {
    field public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
    field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
    field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
    field public static final java.lang.String BIND_AUTOFILL = "android.permission.BIND_AUTOFILL";
    field public static final java.lang.String BIND_AUTO_FILL = "android.permission.BIND_AUTO_FILL";
    field public static final java.lang.String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
    field public static final deprecated java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
    field public static final java.lang.String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
    field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+1 −2
Original line number Diff line number Diff line
@@ -30,8 +30,7 @@ package android {
    field public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
    field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
    field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
    field public static final java.lang.String BIND_AUTOFILL = "android.permission.BIND_AUTOFILL";
    field public static final java.lang.String BIND_AUTO_FILL = "android.permission.BIND_AUTO_FILL";
    field public static final java.lang.String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
    field public static final deprecated java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
    field public static final java.lang.String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
    field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+1 −2
Original line number Diff line number Diff line
@@ -20,8 +20,7 @@ package android {
    field public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
    field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
    field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
    field public static final java.lang.String BIND_AUTOFILL = "android.permission.BIND_AUTOFILL";
    field public static final java.lang.String BIND_AUTO_FILL = "android.permission.BIND_AUTO_FILL";
    field public static final java.lang.String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
    field public static final deprecated java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
    field public static final java.lang.String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
    field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ public abstract class AutofillService extends Service {
    /**
     * The {@link Intent} that must be declared as handled by the service.
     * To be supported, the service must also require the
     * {@link android.Manifest.permission#BIND_AUTOFILL} permission so
     * {@link android.Manifest.permission#BIND_AUTOFILL_SERVICE} permission so
     * that other applications can not abuse it.
     */
    @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION)
+9 −4
Original line number Diff line number Diff line
@@ -83,14 +83,19 @@ public final class AutofillServiceInfo {
    }

    /**
     * Gets the meta-data as a TypedArray, or null if not provided, or throws if invalid.
     * Gets the meta-data as a {@link TypedArray}, or {@code null} if not provided,
     * or throws if invalid.
     */
    @Nullable
    private static TypedArray getMetaDataArray(PackageManager pm, ServiceInfo si) {
        // Check for permissions.
        if (!Manifest.permission.BIND_AUTOFILL.equals(si.permission)) {
            Log.e(TAG, "Service does not require permission " + Manifest.permission.BIND_AUTOFILL);
            return null;
        // TODO(b/37563972): remove support to BIND_AUTOFILL once clients use BIND_AUTOFILL_SERVICE
        if (!Manifest.permission.BIND_AUTOFILL_SERVICE.equals(si.permission)
                && !Manifest.permission.BIND_AUTOFILL.equals(si.permission)) {
            Log.w(TAG, "AutofillService from '" + si.packageName + "' does not require permission "
                    + Manifest.permission.BIND_AUTOFILL_SERVICE);
            throw new SecurityException("Service does not require permission "
                    + Manifest.permission.BIND_AUTOFILL_SERVICE);
        }

        // Get the AutoFill metadata, if declared.
Loading