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

Commit a7533278 authored by Jing Ji's avatar Jing Ji
Browse files

Remove the health connect related permissions from the FGS type "health"

As they're not supposed to be used by a FGS.

Bug: 254662522
Bug: 246792057
Test: atest CtsAppFgsTestCases
Change-Id: I000c489efed1ad038573e9c3a8faa8d8ba24fd9a
parent 9c1c1754
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -12493,7 +12493,7 @@ package android.content.pm {
    field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE}, anyOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.CHANGE_NETWORK_STATE, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, android.Manifest.permission.NFC, android.Manifest.permission.TRANSMIT_IR}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
    field @Deprecated @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
    field @RequiresPermission(android.Manifest.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT) public static final int FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT = 4096; // 0x1000
    field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.HIGH_SAMPLING_RATE_SENSORS}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 256; // 0x100
    field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.HIGH_SAMPLING_RATE_SENSORS}) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 256; // 0x100
    field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_LOCATION}, anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8
    field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff
    field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK = 2; // 0x2
+0 −41
Original line number Diff line number Diff line
@@ -56,7 +56,6 @@ import android.content.pm.ServiceInfo.ForegroundServiceType;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.healthconnect.HealthConnectManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.permission.PermissionCheckerManager;
@@ -73,7 +72,6 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Optional;
import java.util.Set;

/**
 * This class enforces the policies around the foreground service types.
@@ -994,45 +992,6 @@ public abstract class ForegroundServiceTypePolicy {
        }
    }

    static class HealthConnectPermission extends RegularPermission {
        private @Nullable String[] mPermissionNames;

        HealthConnectPermission() {
            super("Health Connect");
        }

        @Override
        @SuppressLint("AndroidFrameworkRequiresPermission")
        @PackageManager.PermissionResult
        public int checkPermission(@NonNull Context context, int callerUid, int callerPid,
                String packageName, boolean allowWhileInUse) {
            final String[] perms = getPermissions(context);
            for (String perm : perms) {
                if (checkPermission(context, perm, callerUid, callerPid,
                        packageName, allowWhileInUse) == PERMISSION_GRANTED) {
                    return PERMISSION_GRANTED;
                }
            }
            return PERMISSION_DENIED;
        }

        @Override
        void addToList(@NonNull Context context, @NonNull ArrayList<String> list) {
            final String[] perms = getPermissions(context);
            for (String perm : perms) {
                list.add(perm);
            }
        }

        private @NonNull String[] getPermissions(@NonNull Context context) {
            if (mPermissionNames != null) {
                return mPermissionNames;
            }
            final Set<String> healthPerms = HealthConnectManager.getHealthPermissions(context);
            return mPermissionNames = healthPerms.toArray(new String[healthPerms.size()]);
        }
    }

    /**
     * The default policy for the foreground service types.
     *
+2 −5
Original line number Diff line number Diff line
@@ -308,9 +308,7 @@ public class ServiceInfo extends ComponentInfo
     * permissions:
     * {@link android.Manifest.permission#ACTIVITY_RECOGNITION},
     * {@link android.Manifest.permission#BODY_SENSORS},
     * {@link android.Manifest.permission#HIGH_SAMPLING_RATE_SENSORS},
     * or one of the {@code "android.permission.health.*"} permissions defined in the
     * {@link android.healthconnect.HealthPermissions}.
     * {@link android.Manifest.permission#HIGH_SAMPLING_RATE_SENSORS}.
     */
    @RequiresPermission(
            allOf = {
@@ -320,8 +318,7 @@ public class ServiceInfo extends ComponentInfo
                Manifest.permission.ACTIVITY_RECOGNITION,
                Manifest.permission.BODY_SENSORS,
                Manifest.permission.HIGH_SAMPLING_RATE_SENSORS,
            },
            conditional = true
            }
    )
    public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 1 << 8;

+0 −74
Original line number Diff line number Diff line
@@ -777,80 +777,6 @@
    <!-- Permission required for CTS test - CtsHardwareTestCases -->
    <uses-permission android:name="android.permission.REMAP_MODIFIER_KEYS" />

    <!-- Permissions required for CTS test - CtsAppFgsTestCases -->
    <uses-permission android:name="android.permission.health.READ_ACTIVE_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.READ_BASAL_BODY_TEMPERATURE" />
    <uses-permission android:name="android.permission.health.READ_BASAL_METABOLIC_RATE" />
    <uses-permission android:name="android.permission.health.READ_BLOOD_GLUCOSE" />
    <uses-permission android:name="android.permission.health.READ_BLOOD_PRESSURE" />
    <uses-permission android:name="android.permission.health.READ_BODY_FAT" />
    <uses-permission android:name="android.permission.health.READ_BODY_TEMPERATURE" />
    <uses-permission android:name="android.permission.health.READ_BODY_WATER_MASS" />
    <uses-permission android:name="android.permission.health.READ_BONE_MASS" />
    <uses-permission android:name="android.permission.health.READ_CERVICAL_MUCUS" />
    <uses-permission android:name="android.permission.health.READ_DISTANCE" />
    <uses-permission android:name="android.permission.health.READ_ELEVATION_GAINED" />
    <uses-permission android:name="android.permission.health.READ_EXERCISE" />
    <uses-permission android:name="android.permission.health.READ_FLOORS_CLIMBED" />
    <uses-permission android:name="android.permission.health.READ_HEART_RATE" />
    <uses-permission android:name="android.permission.health.READ_HEART_RATE_VARIABILITY" />
    <uses-permission android:name="android.permission.health.READ_HEIGHT" />
    <uses-permission android:name="android.permission.health.READ_HIP_CIRCUMFERENCE" />
    <uses-permission android:name="android.permission.health.READ_HYDRATION" />
    <uses-permission android:name="android.permission.health.READ_LEAN_BODY_MASS" />
    <uses-permission android:name="android.permission.health.READ_MENSTRUATION" />
    <uses-permission android:name="android.permission.health.READ_NUTRITION" />
    <uses-permission android:name="android.permission.health.READ_OVULATION_TEST" />
    <uses-permission android:name="android.permission.health.READ_OXYGEN_SATURATION" />
    <uses-permission android:name="android.permission.health.READ_POWER" />
    <uses-permission android:name="android.permission.health.READ_RESPIRATORY_RATE" />
    <uses-permission android:name="android.permission.health.READ_RESTING_HEART_RATE" />
    <uses-permission android:name="android.permission.health.READ_SEXUAL_ACTIVITY" />
    <uses-permission android:name="android.permission.health.READ_SLEEP" />
    <uses-permission android:name="android.permission.health.READ_SPEED" />
    <uses-permission android:name="android.permission.health.READ_STEPS" />
    <uses-permission android:name="android.permission.health.READ_TOTAL_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.READ_VO2_MAX" />
    <uses-permission android:name="android.permission.health.READ_WAIST_CIRCUMFERENCE" />
    <uses-permission android:name="android.permission.health.READ_WEIGHT" />
    <uses-permission android:name="android.permission.health.READ_WHEELCHAIR_PUSHES" />
    <uses-permission android:name="android.permission.health.WRITE_ACTIVE_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.WRITE_BASAL_BODY_TEMPERATURE" />
    <uses-permission android:name="android.permission.health.WRITE_BASAL_METABOLIC_RATE" />
    <uses-permission android:name="android.permission.health.WRITE_BLOOD_GLUCOSE" />
    <uses-permission android:name="android.permission.health.WRITE_BLOOD_PRESSURE" />
    <uses-permission android:name="android.permission.health.WRITE_BODY_FAT" />
    <uses-permission android:name="android.permission.health.WRITE_BODY_TEMPERATURE" />
    <uses-permission android:name="android.permission.health.WRITE_BODY_WATER_MASS" />
    <uses-permission android:name="android.permission.health.WRITE_BONE_MASS" />
    <uses-permission android:name="android.permission.health.WRITE_CERVICAL_MUCUS" />
    <uses-permission android:name="android.permission.health.WRITE_DISTANCE" />
    <uses-permission android:name="android.permission.health.WRITE_ELEVATION_GAINED" />
    <uses-permission android:name="android.permission.health.WRITE_EXERCISE" />
    <uses-permission android:name="android.permission.health.WRITE_FLOORS_CLIMBED" />
    <uses-permission android:name="android.permission.health.WRITE_HEART_RATE" />
    <uses-permission android:name="android.permission.health.WRITE_HEART_RATE_VARIABILITY" />
    <uses-permission android:name="android.permission.health.WRITE_HEIGHT" />
    <uses-permission android:name="android.permission.health.WRITE_HIP_CIRCUMFERENCE" />
    <uses-permission android:name="android.permission.health.WRITE_HYDRATION" />
    <uses-permission android:name="android.permission.health.WRITE_LEAN_BODY_MASS" />
    <uses-permission android:name="android.permission.health.WRITE_MENSTRUATION" />
    <uses-permission android:name="android.permission.health.WRITE_NUTRITION" />
    <uses-permission android:name="android.permission.health.WRITE_OVULATION_TEST" />
    <uses-permission android:name="android.permission.health.WRITE_OXYGEN_SATURATION" />
    <uses-permission android:name="android.permission.health.WRITE_POWER" />
    <uses-permission android:name="android.permission.health.WRITE_RESPIRATORY_RATE" />
    <uses-permission android:name="android.permission.health.WRITE_RESTING_HEART_RATE" />
    <uses-permission android:name="android.permission.health.WRITE_SEXUAL_ACTIVITY" />
    <uses-permission android:name="android.permission.health.WRITE_SLEEP" />
    <uses-permission android:name="android.permission.health.WRITE_SPEED" />
    <uses-permission android:name="android.permission.health.WRITE_STEPS" />
    <uses-permission android:name="android.permission.health.WRITE_TOTAL_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.WRITE_VO2_MAX" />
    <uses-permission android:name="android.permission.health.WRITE_WAIST_CIRCUMFERENCE" />
    <uses-permission android:name="android.permission.health.WRITE_WEIGHT" />
    <uses-permission android:name="android.permission.health.WRITE_WHEELCHAIR_PUSHES" />

    <!-- Permission required for CTS test - ApplicationExemptionsTests -->
    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS" />