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

Commit aea42c10 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Use FrameworkStatsLog instead of StatsLogInternal" into rvc-dev am:...

Merge "Use FrameworkStatsLog instead of StatsLogInternal" into rvc-dev am: 596a1f6f am: 5486a5cc am: 101a7874 am: d6cbeae4

Change-Id: If0f40ce117c346fcfac07053ff51db9b59704340
parents eeec5243 d6cbeae4
Loading
Loading
Loading
Loading
+21 −8
Original line number Original line Diff line number Diff line
@@ -16,10 +16,6 @@


package android.app;
package android.app;


import static android.util.StatsLogInternal.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__DEFAULT;
import static android.util.StatsLogInternal.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__RARELY_USED;
import static android.util.StatsLogInternal.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__UNIFORM;

import android.Manifest;
import android.Manifest;
import android.annotation.CallbackExecutor;
import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.IntDef;
@@ -74,6 +70,7 @@ import com.android.internal.os.RuntimeInit;
import com.android.internal.os.ZygoteInit;
import com.android.internal.os.ZygoteInit;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DataClass;
import com.android.internal.util.DataClass;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.Parcelling;
import com.android.internal.util.Parcelling;
import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;


@@ -666,15 +663,31 @@ public class AppOpsManager {
        }
        }
    }
    }


    // These constants are redefined here to work around a metalava limitation/bug where
    // @IntDef is not able to see @hide symbols when they are hidden via package hiding:
    // frameworks/base/core/java/com/android/internal/package.html

    /** @hide */
    public static final int SAMPLING_STRATEGY_DEFAULT =
            FrameworkStatsLog.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__DEFAULT;

    /** @hide */
    public static final int SAMPLING_STRATEGY_UNIFORM =
            FrameworkStatsLog.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__UNIFORM;

    /** @hide */
    public static final int SAMPLING_STRATEGY_RARELY_USED =
            FrameworkStatsLog.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__RARELY_USED;

    /**
    /**
     * Strategies used for message sampling
     * Strategies used for message sampling
     * @hide
     * @hide
     */
     */
    @Retention(RetentionPolicy.SOURCE)
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = {"RUNTIME_APP_OPS_ACCESS__SAMPLING_STRATEGY__"}, value = {
    @IntDef(prefix = {"SAMPLING_STRATEGY_"}, value = {
            RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__DEFAULT,
            SAMPLING_STRATEGY_DEFAULT,
            RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__UNIFORM,
            SAMPLING_STRATEGY_UNIFORM,
            RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__RARELY_USED
            SAMPLING_STRATEGY_RARELY_USED
    })
    })
    public @interface SamplingStrategy {}
    public @interface SamplingStrategy {}


+4 −4
Original line number Original line Diff line number Diff line
@@ -40,6 +40,8 @@ import static android.app.AppOpsManager.OP_NONE;
import static android.app.AppOpsManager.OP_PLAY_AUDIO;
import static android.app.AppOpsManager.OP_PLAY_AUDIO;
import static android.app.AppOpsManager.OP_RECORD_AUDIO;
import static android.app.AppOpsManager.OP_RECORD_AUDIO;
import static android.app.AppOpsManager.OpEventProxyInfo;
import static android.app.AppOpsManager.OpEventProxyInfo;
import static android.app.AppOpsManager.SAMPLING_STRATEGY_RARELY_USED;
import static android.app.AppOpsManager.SAMPLING_STRATEGY_UNIFORM;
import static android.app.AppOpsManager.UID_STATE_BACKGROUND;
import static android.app.AppOpsManager.UID_STATE_BACKGROUND;
import static android.app.AppOpsManager.UID_STATE_CACHED;
import static android.app.AppOpsManager.UID_STATE_CACHED;
import static android.app.AppOpsManager.UID_STATE_FOREGROUND;
import static android.app.AppOpsManager.UID_STATE_FOREGROUND;
@@ -60,8 +62,6 @@ import static android.content.Intent.ACTION_PACKAGE_REMOVED;
import static android.content.Intent.EXTRA_REPLACING;
import static android.content.Intent.EXTRA_REPLACING;
import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS;
import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS;
import static android.content.pm.PermissionInfo.PROTECTION_FLAG_APPOP;
import static android.content.pm.PermissionInfo.PROTECTION_FLAG_APPOP;
import static android.util.StatsLogInternal.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__RARELY_USED;
import static android.util.StatsLogInternal.RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__UNIFORM;


import static com.android.server.appop.AppOpsService.ModeCallback.ALL_OPS;
import static com.android.server.appop.AppOpsService.ModeCallback.ALL_OPS;


@@ -5683,7 +5683,7 @@ public class AppOpsService extends IAppOpsService.Stub {
        if (mRarelyUsedPackages.contains(packageName)) {
        if (mRarelyUsedPackages.contains(packageName)) {
            mRarelyUsedPackages.remove(packageName);
            mRarelyUsedPackages.remove(packageName);
            if (ThreadLocalRandom.current().nextFloat() < 0.5f) {
            if (ThreadLocalRandom.current().nextFloat() < 0.5f) {
                mSamplingStrategy = RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__RARELY_USED;
                mSamplingStrategy = SAMPLING_STRATEGY_RARELY_USED;
                resampleAppOpForPackageLocked(packageName);
                resampleAppOpForPackageLocked(packageName);
            }
            }
        }
        }
@@ -5692,7 +5692,7 @@ public class AppOpsService extends IAppOpsService.Stub {
    /** Resamples package and appop to watch from the list provided. */
    /** Resamples package and appop to watch from the list provided. */
    private void resamplePackageAndAppOpLocked(@NonNull List<String> packageNames) {
    private void resamplePackageAndAppOpLocked(@NonNull List<String> packageNames) {
        if (!packageNames.isEmpty()) {
        if (!packageNames.isEmpty()) {
            mSamplingStrategy = RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__UNIFORM;
            mSamplingStrategy = SAMPLING_STRATEGY_UNIFORM;
            resampleAppOpForPackageLocked(packageNames.get(
            resampleAppOpForPackageLocked(packageNames.get(
                    ThreadLocalRandom.current().nextInt(packageNames.size())));
                    ThreadLocalRandom.current().nextInt(packageNames.size())));
        }
        }