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

Commit 4deca3a9 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Turn on foregroundServiceType camera and microphone feature in...

Merge "Turn on foregroundServiceType camera and microphone feature in permissive mode." into rvc-dev am: 4723328c

Change-Id: I17aaf2285792a1479cc1dcd6d90da4031009b504
parents 6958aba1 4723328c
Loading
Loading
Loading
Loading
+18 −4
Original line number Original line Diff line number Diff line
@@ -137,6 +137,10 @@ public final class ActiveServices {


    private static final boolean SHOW_DUNGEON_NOTIFICATION = false;
    private static final boolean SHOW_DUNGEON_NOTIFICATION = false;


    //TODO: remove this when development is done.
    private static final int DEBUG_FGS_ALLOW_WHILE_IN_USE = 0;
    private static final int DEBUG_FGS_ENFORCE_TYPE = 1;

    // How long we wait for a service to finish executing.
    // How long we wait for a service to finish executing.
    static final int SERVICE_TIMEOUT = 20*1000;
    static final int SERVICE_TIMEOUT = 20*1000;


@@ -4915,6 +4919,7 @@ public final class ActiveServices {
                if (!r.isForeground) {
                if (!r.isForeground) {
                    continue;
                    continue;
                }
                }
                if (mode == DEBUG_FGS_ALLOW_WHILE_IN_USE) {
                    if (!r.mAllowWhileInUsePermissionInFgs
                    if (!r.mAllowWhileInUsePermissionInFgs
                            && r.mInfoDenyWhileInUsePermissionInFgs != null) {
                            && r.mInfoDenyWhileInUsePermissionInFgs != null) {
                        final String msg = r.mInfoDenyWhileInUsePermissionInFgs
                        final String msg = r.mInfoDenyWhileInUsePermissionInFgs
@@ -4922,6 +4927,15 @@ public final class ActiveServices {
                                + AppOpsManager.opToPublicName(op);
                                + AppOpsManager.opToPublicName(op);
                        Slog.wtf(TAG, msg);
                        Slog.wtf(TAG, msg);
                    }
                    }
                } else if (mode == DEBUG_FGS_ENFORCE_TYPE) {
                    final String msg =
                            "FGS Missing foregroundServiceType in manifest file [callingPackage: "
                            + r.mRecentCallingPackage
                            + "; intent:" + r.intent.getIntent()
                            + "] affected while-in-use permission:"
                            + AppOpsManager.opToPublicName(op);
                    Slog.wtf(TAG, msg);
                }
            }
            }
        }
        }
    }
    }
+7 −5
Original line number Original line Diff line number Diff line
@@ -75,7 +75,6 @@ import android.app.ActivityManager;
import android.app.ApplicationExitInfo;
import android.app.ApplicationExitInfo;
import android.app.usage.UsageEvents;
import android.app.usage.UsageEvents;
import android.compat.annotation.ChangeId;
import android.compat.annotation.ChangeId;
import android.compat.annotation.Disabled;
import android.compat.annotation.EnabledAfter;
import android.compat.annotation.EnabledAfter;
import android.content.Context;
import android.content.Context;
import android.content.pm.ServiceInfo;
import android.content.pm.ServiceInfo;
@@ -149,12 +148,13 @@ public final class OomAdjuster {
     * capabilities.
     * capabilities.
     */
     */
    @ChangeId
    @ChangeId
    //TODO: change to @EnabledAfter when enforcing the feature.
    @EnabledAfter(targetSdkVersion=android.os.Build.VERSION_CODES.Q)
    @Disabled
    static final long CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID = 136219221L;
    static final long CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID = 136219221L;


    //TODO: remove this when development is done.
    //TODO: remove this when development is done.
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31;
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31;
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA = 1 << 30;
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 1 << 29;


    /**
    /**
     * For some direct access we need to power manager.
     * For some direct access we need to power manager.
@@ -1513,10 +1513,12 @@ public final class OomAdjuster {
                    if (enabled) {
                    if (enabled) {
                        capabilityFromFGS |=
                        capabilityFromFGS |=
                                (fgsType & FOREGROUND_SERVICE_TYPE_CAMERA)
                                (fgsType & FOREGROUND_SERVICE_TYPE_CAMERA)
                                        != 0 ? PROCESS_CAPABILITY_FOREGROUND_CAMERA : 0;
                                        != 0 ? PROCESS_CAPABILITY_FOREGROUND_CAMERA
                                        : TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA;
                        capabilityFromFGS |=
                        capabilityFromFGS |=
                                (fgsType & FOREGROUND_SERVICE_TYPE_MICROPHONE)
                                (fgsType & FOREGROUND_SERVICE_TYPE_MICROPHONE)
                                        != 0 ? PROCESS_CAPABILITY_FOREGROUND_MICROPHONE : 0;
                                        != 0 ? PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
                                        : TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
                    } else {
                    } else {
                        capabilityFromFGS |= PROCESS_CAPABILITY_FOREGROUND_CAMERA
                        capabilityFromFGS |= PROCESS_CAPABILITY_FOREGROUND_CAMERA
                                | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
                                | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
+29 −5
Original line number Original line Diff line number Diff line
@@ -249,6 +249,11 @@ public class AppOpsService extends IAppOpsService.Stub {


    //TODO: remove this when development is done.
    //TODO: remove this when development is done.
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31;
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31;
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA = 1 << 30;
    private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 1 << 29;
    private static final int DEBUG_FGS_ALLOW_WHILE_IN_USE = 0;
    private static final int DEBUG_FGS_ENFORCE_TYPE = 1;



    final Context mContext;
    final Context mContext;
    final AtomicFile mFile;
    final AtomicFile mFile;
@@ -551,7 +556,7 @@ public class AppOpsService extends IAppOpsService.Stub {
                                // The FGS has the location capability, but due to FGS BG start
                                // The FGS has the location capability, but due to FGS BG start
                                // restriction it lost the capability, use temp location capability
                                // restriction it lost the capability, use temp location capability
                                // to mark this case.
                                // to mark this case.
                                maybeShowWhileInUseDebugToast(op, mode);
                                maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE);
                                return MODE_IGNORED;
                                return MODE_IGNORED;
                            } else {
                            } else {
                                return MODE_IGNORED;
                                return MODE_IGNORED;
@@ -559,15 +564,25 @@ public class AppOpsService extends IAppOpsService.Stub {
                        case OP_CAMERA:
                        case OP_CAMERA:
                            if ((capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) {
                            if ((capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) {
                                return MODE_ALLOWED;
                                return MODE_ALLOWED;
                            } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA)
                                    != 0) {
                                // CHANGE TO MODE_IGNORED when enforce this feature.
                                maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE);
                                return MODE_ALLOWED;
                            } else {
                            } else {
                                maybeShowWhileInUseDebugToast(op, mode);
                                maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE);
                                return MODE_IGNORED;
                                return MODE_IGNORED;
                            }
                            }
                        case OP_RECORD_AUDIO:
                        case OP_RECORD_AUDIO:
                            if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) {
                            if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) {
                                return MODE_ALLOWED;
                                return MODE_ALLOWED;
                            } else if  ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE)
                                    != 0) {
                                // CHANGE TO MODE_IGNORED when enforce this feature.
                                maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE);
                                return MODE_ALLOWED;
                            } else {
                            } else {
                                maybeShowWhileInUseDebugToast(op, mode);
                                maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE);
                                return MODE_IGNORED;
                                return MODE_IGNORED;
                            }
                            }
                        default:
                        default:
@@ -582,15 +597,24 @@ public class AppOpsService extends IAppOpsService.Stub {
                    case OP_CAMERA:
                    case OP_CAMERA:
                        if ((capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) {
                        if ((capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) {
                            return MODE_ALLOWED;
                            return MODE_ALLOWED;
                        } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) {
                            // CHANGE TO MODE_IGNORED when enforce this feature.
                            maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE);
                            return MODE_ALLOWED;
                        } else {
                        } else {
                            maybeShowWhileInUseDebugToast(op, mode);
                            maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE);
                            return MODE_IGNORED;
                            return MODE_IGNORED;
                        }
                        }
                    case OP_RECORD_AUDIO:
                    case OP_RECORD_AUDIO:
                        if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) {
                        if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) {
                            return MODE_ALLOWED;
                            return MODE_ALLOWED;
                        } else if ((capability & TEMP_PROCESS_CAPABILITY_FOREGROUND_MICROPHONE)
                                != 0) {
                            // CHANGE TO MODE_IGNORED when enforce this feature.
                            maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ENFORCE_TYPE);
                            return MODE_ALLOWED;
                        } else {
                        } else {
                            maybeShowWhileInUseDebugToast(op, mode);
                            maybeShowWhileInUseDebugToast(op, DEBUG_FGS_ALLOW_WHILE_IN_USE);
                            return MODE_IGNORED;
                            return MODE_IGNORED;
                        }
                        }
                    default:
                    default: