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

Commit 2a9687ac authored by Hui Yu's avatar Hui Yu Committed by Automerger Merge Worker
Browse files

Merge "Enhance APP_BACKGROUND_RESTRICTIONS_INFO log." into tm-dev am: f884ba39

parents f33ea976 f884ba39
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -73,12 +73,17 @@ message AppBackgroundRestrictionsInfo {
    optional FgsTrackerInfo fgs_tracker_info = 5;

    message BatteryTrackerInfo {
        // total battery usage within last 24h (percentage)
        // total battery usage within last 24h (1/10000th)
        optional int32 battery_24h = 1;
        // background battery usage (percentage)
        // background battery usage (1/10000th)
        optional int32 battery_usage_background = 2;
        // FGS battery usage (percentage)
        // FGS battery usage (1/10000th)
        optional int32 battery_usage_fgs = 3;
        // Foreground battery usage (1/10000th)
        optional int32 battery_usage_foreground = 4;
        // Cached battery usage (1/10000th)
        optional int32 battery_usage_cached = 5;

    }
    optional BatteryTrackerInfo battery_tracker_info = 6;

@@ -197,5 +202,8 @@ message AppBackgroundRestrictionsInfo {

    // indicates if the current device is a low ram device.
    optional bool low_mem_device = 12;

    // indicates previous background restriction level.
    optional RestrictionLevel previous_restriction_level = 13;
}
+14 −2
Original line number Diff line number Diff line
@@ -276,7 +276,9 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
                        AppBackgroundRestrictionsInfo.REASON_UNKNOWN, // ExemptionReason
                        AppBackgroundRestrictionsInfo.UNKNOWN, // OptimizationLevel
                        AppBackgroundRestrictionsInfo.SDK_UNKNOWN, // TargetSdk
                        isLowRamDeviceStatic());
                        isLowRamDeviceStatic(),
                        AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN // previous RestrictionLevel
                );
            }
        }
    }
@@ -304,11 +306,17 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
                bgUsage.mPercentage[BatteryUsage.BATTERY_USAGE_INDEX_BACKGROUND];
        final double usageFgs =
                bgUsage.mPercentage[BatteryUsage.BATTERY_USAGE_INDEX_FOREGROUND_SERVICE];
        final double usageForeground =
                bgUsage.mPercentage[BatteryUsage.BATTERY_USAGE_INDEX_FOREGROUND];
        final double usageCached =
                bgUsage.mPercentage[BatteryUsage.BATTERY_USAGE_INDEX_CACHED];
        if (DEBUG_BACKGROUND_BATTERY_TRACKER_VERBOSE) {
            Slog.d(TAG, "getBatteryTrackerInfoProtoLocked uid:" + uid
                    + " allUsage:" + String.format("%4.2f%%", allUsage)
                    + " usageBackground:" + String.format("%4.2f%%", usageBackground)
                    + " usageFgs:" + String.format("%4.2f%%", usageFgs));
                    + " usageFgs:" + String.format("%4.2f%%", usageFgs)
                    + " usageForeground:" + String.format("%4.2f%%", usageForeground)
                    + " usageCached:" + String.format("%4.2f%%", usageCached));
        }
        final ProtoOutputStream proto = new ProtoOutputStream();
        proto.write(AppBackgroundRestrictionsInfo.BatteryTrackerInfo.BATTERY_24H,
@@ -317,6 +325,10 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
                usageBackground * 10000);
        proto.write(AppBackgroundRestrictionsInfo.BatteryTrackerInfo.BATTERY_USAGE_FGS,
                usageFgs * 10000);
        proto.write(AppBackgroundRestrictionsInfo.BatteryTrackerInfo.BATTERY_USAGE_FOREGROUND,
                usageForeground * 10000);
        proto.write(AppBackgroundRestrictionsInfo.BatteryTrackerInfo.BATTERY_USAGE_CACHED,
                usageCached * 10000);
        proto.flush();
        return proto.getBytes();
    }
+22 −7
Original line number Diff line number Diff line
@@ -2086,6 +2086,9 @@ public final class AppRestrictionController {
        int curLevel;
        int prevReason;
        final AppStandbyInternal appStandbyInternal = mInjector.getAppStandbyInternal();
        if (trackerInfo == null) {
            trackerInfo = mEmptyTrackerInfo;
        }
        synchronized (mSettingsLock) {
            curLevel = getRestrictionLevel(uid, pkgName);
            if (curLevel == level) {
@@ -2138,14 +2141,21 @@ public final class AppRestrictionController {
                        // It's currently active, enqueue it.
                        final int localReason = reason;
                        final int localSubReason = subReason;
                        mActiveUids.add(uid, pkgName, () -> appStandbyInternal.restrictApp(
                                pkgName, UserHandle.getUserId(uid), localReason, localSubReason));
                        final TrackerInfo localTrackerInfo = trackerInfo;
                        mActiveUids.add(uid, pkgName, () -> {
                            appStandbyInternal.restrictApp(pkgName, UserHandle.getUserId(uid),
                                    localReason, localSubReason);
                            logAppBackgroundRestrictionInfo(pkgName, uid, curLevel, level,
                                    localTrackerInfo, localReason);
                        });
                        doIt = false;
                    }
                }
                if (doIt) {
                    appStandbyInternal.restrictApp(pkgName, UserHandle.getUserId(uid),
                            reason, subReason);
                    logAppBackgroundRestrictionInfo(pkgName, uid, curLevel, level, trackerInfo,
                            reason);
                }
            }
        } else if (curLevel >= RESTRICTION_LEVEL_RESTRICTED_BUCKET
@@ -2160,11 +2170,14 @@ public final class AppRestrictionController {
            appStandbyInternal.maybeUnrestrictApp(pkgName, UserHandle.getUserId(uid),
                    prevReason & REASON_MAIN_MASK, prevReason & REASON_SUB_MASK,
                    reason, subReason);
            logAppBackgroundRestrictionInfo(pkgName, uid, curLevel, level, trackerInfo,
                    reason);
        }

        if (trackerInfo == null) {
            trackerInfo = mEmptyTrackerInfo;
    }

    private void logAppBackgroundRestrictionInfo(String pkgName, int uid,
            @RestrictionLevel int prevLevel, @RestrictionLevel int level,
            @NonNull TrackerInfo trackerInfo, int reason) {
        FrameworkStatsLog.write(FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO, uid,
                getRestrictionLevelStatsd(level),
                getThresholdStatsd(reason),
@@ -2176,7 +2189,8 @@ public final class AppRestrictionController {
                getExemptionReasonStatsd(uid, level),
                getOptimizationLevelStatsd(level),
                getTargetSdkStatsd(pkgName),
                ActivityManager.isLowRamDeviceStatic());
                ActivityManager.isLowRamDeviceStatic(),
                getRestrictionLevelStatsd(prevLevel));
    }

    private void handleBackgroundRestrictionChanged(int uid, String pkgName, boolean restricted) {
@@ -2449,7 +2463,8 @@ public final class AppRestrictionController {
                            mBgController.getBackgroundRestrictionExemptionReason(uid)),
                    AppBackgroundRestrictionsInfo.UNKNOWN, // OptimizationLevel
                    AppBackgroundRestrictionsInfo.SDK_UNKNOWN, // TargetSdk
                    ActivityManager.isLowRamDeviceStatic());
                    ActivityManager.isLowRamDeviceStatic(),
                    mBgController.getRestrictionLevel(uid));
            PendingIntent pendingIntent;
            if (!mBgController.mConstantsObserver.mBgPromptFgsWithNotiOnLongRunning
                    && mBgController.hasForegroundServiceNotifications(packageName, uid)) {