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

Commit 4ac05f8c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add a mechanism to log battery usage periodic job events" into udc-qpr-dev

parents d3f8caa5 ef66549e
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -5,13 +5,12 @@ option java_multiple_files = true;
option java_package = "com.android.settings.fuelgauge";
option java_outer_classname = "FuelgaugeLogProto";

// Stores history of setting optimize mode
// Store history of setting optimize mode
message BatteryOptimizeHistoricalLog {
  repeated BatteryOptimizeHistoricalLogEntry log_entry = 1;
}

message BatteryOptimizeHistoricalLogEntry {

  // The action to set optimize mode
  enum Action {
    UNKNOWN = 0;
@@ -28,3 +27,25 @@ message BatteryOptimizeHistoricalLogEntry {
  optional string action_description = 3;
  optional int64 timestamp = 4;
}


// Store history of battery usage periodic job
message BatteryUsageHistoricalLog {
  repeated BatteryUsageHistoricalLogEntry log_entry = 1;
}

message BatteryUsageHistoricalLogEntry {
  // The action to record battery usage job event
  enum Action {
    UNKNOWN = 0;
    SCHEDULE_JOB = 1;
    EXECUTE_JOB = 2;
    RECHECK_JOB = 3;
    FETCH_USAGE_DATA = 4;
    INSERT_USAGE_DATA = 5;
  }

  optional int64 timestamp = 1;
  optional Action action = 2;
  optional string action_description = 3;
}
+8 −6
Original line number Diff line number Diff line
@@ -289,12 +289,14 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        mLogStringBuilder.append(", onPause mode = ").append(selectedPreference);
        logMetricCategory(selectedPreference);

        BatteryHistoricalLogUtil.writeLog(
        mExecutor.execute(() -> {
            BatteryOptimizeLogUtils.writeLog(
                    getContext().getApplicationContext(),
                    Action.LEAVE,
                BatteryHistoricalLogUtil.getPackageNameWithUserId(
                    BatteryOptimizeLogUtils.getPackageNameWithUserId(
                            mBatteryOptimizeUtils.getPackageName(), UserHandle.myUserId()),
                    mLogStringBuilder.toString());
        });
        Log.d(TAG, "Leave with mode: " + selectedPreference);
    }

+2 −2
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ public final class BatteryBackupHelper implements BackupHelper {
                    info.packageName + DELIMITER_MODE + optimizationMode;
            builder.append(packageOptimizeMode + DELIMITER);
            Log.d(TAG, "backupOptimizationMode: " + packageOptimizeMode);
            BatteryHistoricalLogUtil.writeLog(
            BatteryOptimizeLogUtils.writeLog(
                    sharedPreferences, Action.BACKUP, info.packageName,
                    /* actionDescription */ "mode: " + optimizationMode);
            backupCount++;
@@ -275,7 +275,7 @@ public final class BatteryBackupHelper implements BackupHelper {

    /** Dump the app optimization mode backup history data. */
    public static void dumpHistoricalData(Context context, PrintWriter writer) {
        BatteryHistoricalLogUtil.printBatteryOptimizeHistoricalLog(
        BatteryOptimizeLogUtils.printBatteryOptimizeHistoricalLog(
                getSharedPreferences(context), writer);
    }

+10 −7
Original line number Diff line number Diff line
@@ -20,23 +20,25 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.util.Base64;

import androidx.annotation.VisibleForTesting;

import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settings.fuelgauge.batteryusage.ConvertUtils;

import com.google.common.annotations.VisibleForTesting;

import java.io.PrintWriter;
import java.util.List;

/** Writes and reads a historical log of battery related state change events. */
public final class BatteryHistoricalLogUtil {
public final class BatteryOptimizeLogUtils {
    private static final String TAG = "BatteryOptimizeLogUtils";
    private static final String BATTERY_OPTIMIZE_FILE_NAME = "battery_optimize_historical_logs";
    private static final String LOGS_KEY = "battery_optimize_logs_key";
    private static final String TAG = "BatteryHistoricalLogUtil";

    @VisibleForTesting
    static final int MAX_ENTRIES = 40;

    private BatteryOptimizeLogUtils() {}

    /** Writes a log entry for battery optimization mode. */
    static void writeLog(
            Context context, Action action, String packageName, String actionDescription) {
@@ -113,6 +115,7 @@ public final class BatteryHistoricalLogUtil {

    @VisibleForTesting
    static SharedPreferences getSharedPreferences(Context context) {
        return context.getSharedPreferences(BATTERY_OPTIMIZE_FILE_NAME, Context.MODE_PRIVATE);
        return context.getApplicationContext()
                .getSharedPreferences(BATTERY_OPTIMIZE_FILE_NAME, Context.MODE_PRIVATE);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -245,7 +245,7 @@ public class BatteryOptimizeUtils {
            Context context, int appStandbyMode, boolean allowListed, int uid, String packageName,
            BatteryUtils batteryUtils, PowerAllowlistBackend powerAllowlistBackend,
            Action action) {
        final String packageNameKey = BatteryHistoricalLogUtil
        final String packageNameKey = BatteryOptimizeLogUtils
                .getPackageNameWithUserId(packageName, UserHandle.myUserId());
        try {
            batteryUtils.setForceAppStandby(uid, packageName, appStandbyMode);
@@ -259,7 +259,7 @@ public class BatteryOptimizeUtils {
            appStandbyMode = -1;
            Log.e(TAG, "set OPTIMIZATION MODE failed for " + packageName, e);
        }
        BatteryHistoricalLogUtil.writeLog(
        BatteryOptimizeLogUtils.writeLog(
                context,
                action,
                packageNameKey,
Loading