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

Commit f8b46c01 authored by YK Hung's avatar YK Hung Committed by Zaiyue Xue
Browse files

AiCore reattribute feature

Bug: 346706894
Bug: 344438848
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Flag: EXEMPT bug fix
Change-Id: Ifb18c2d156d11fcfdc67cff575ba800c4a6cc0fe
Merged-In: Icc9a475a71f189e72bf06f9a0b4c23380a90a603
parent 43d0dfdc
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -94,15 +94,11 @@ android_library {
        "SettingsLibActivityEmbedding",
        "aconfig_settings_flags_lib",
        "accessibility_settings_flags_lib",
        "app-usage-event-protos-lite",
        "battery-event-protos-lite",
        "battery-usage-slot-protos-lite",
        "contextualcards",
        "development_settings_flag_lib",
        "factory_reset_flags_lib",
        "fuelgauge-log-protos-lite",
        "fuelgauge-usage-state-protos-lite",
        "power-anomaly-event-protos-lite",
        "fuelgauge-protos-lite",
        "settings-contextual-card-protos-lite",
        "settings-log-bridge-protos-lite",
        "settings-logtags",
+15 −0
Original line number Diff line number Diff line
@@ -22,11 +22,16 @@ import android.os.Bundle;
import android.util.ArrayMap;
import android.util.SparseIntArray;

import androidx.annotation.NonNull;

import com.android.settings.fuelgauge.batteryusage.BatteryDiffData;
import com.android.settings.fuelgauge.batteryusage.BatteryEvent;
import com.android.settings.fuelgauge.batteryusage.DetectRequestSourceType;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList;
import com.android.settingslib.fuelgauge.Estimate;

import java.util.List;
import java.util.Map;
import java.util.Set;

/** Feature Provider used in power usage */
@@ -146,4 +151,14 @@ public interface PowerUsageFeatureProvider {

    /** Whether the app optimization mode is valid to restore */
    boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap);

    /** Whether the battery usage reattribute is eabled or not. */
    boolean isBatteryUsageReattributeEnabled();

    /** Collect and process battery reattribute data if needed. */
    boolean processBatteryReattributeData(
            @NonNull Context context,
            @NonNull Map<Long, BatteryDiffData> batteryDiffDataMap,
            @NonNull List<BatteryEvent> batteryEventList,
            final boolean isFromPeriodJob);
}
+20 −0
Original line number Diff line number Diff line
@@ -26,13 +26,19 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.SparseIntArray;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.util.ArrayUtils;
import com.android.settings.fuelgauge.batteryusage.BatteryDiffData;
import com.android.settings.fuelgauge.batteryusage.BatteryEvent;
import com.android.settings.fuelgauge.batteryusage.DetectRequestSourceType;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList;
import com.android.settingslib.fuelgauge.Estimate;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/** Implementation of {@code PowerUsageFeatureProvider} */
@@ -228,4 +234,18 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
    public boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap) {
        return false;
    }

    @Override
    public boolean isBatteryUsageReattributeEnabled() {
        return false;
    }

    @Override
    public boolean processBatteryReattributeData(
            @NonNull Context context,
            @NonNull Map<Long, BatteryDiffData> batteryDiffDataMap,
            @NonNull List<BatteryEvent> batteryEventList,
            final boolean isFromPeriodJob) {
        return false;
    }
}
+7 −5
Original line number Diff line number Diff line
@@ -77,11 +77,13 @@ public class BatteryDiffData {
        processAndSortEntries(mSystemEntries);
    }

    long getStartTimestamp() {
    /** Gets the start timestamp. */
    public long getStartTimestamp() {
        return mStartTimestamp;
    }

    long getEndTimestamp() {
    /** Gets the end timestamp. */
    public long getEndTimestamp() {
        return mEndTimestamp;
    }

@@ -97,7 +99,8 @@ public class BatteryDiffData {
        return mScreenOnTime;
    }

    List<BatteryDiffEntry> getAppDiffEntryList() {
    /** Gets the {@link BatteryDiffEntry} list for apps. */
    public List<BatteryDiffEntry> getAppDiffEntryList() {
        return mAppEntries;
    }

@@ -293,8 +296,7 @@ public class BatteryDiffData {
     * Sets total consume power, and adjusts the percentages to ensure the total round percentage
     * could be 100%, and then sorts entries based on the sorting key.
     */
    @VisibleForTesting
    static void processAndSortEntries(final List<BatteryDiffEntry> batteryDiffEntries) {
    public static void processAndSortEntries(final List<BatteryDiffEntry> batteryDiffEntries) {
        if (batteryDiffEntries.isEmpty()) {
            return;
        }
+14 −0
Original line number Diff line number Diff line
@@ -201,6 +201,20 @@ public final class ConvertUtils {
        return defaultInstance;
    }

    /** Gets the encoded string from {@link BatteryReattribute} instance. */
    @NonNull
    public static String encodeBatteryReattribute(
            @NonNull BatteryReattribute batteryReattribute) {
        return Base64.encodeToString(batteryReattribute.toByteArray(), Base64.DEFAULT);
    }

    /** Gets the decoded {@link BatteryReattribute} instance from string. */
    @NonNull
    public static BatteryReattribute decodeBatteryReattribute(@NonNull String content) {
        return BatteryUtils.parseProtoFromString(
                content, BatteryReattribute.getDefaultInstance());
    }

    /** Converts to {@link BatteryHistEntry} */
    public static BatteryHistEntry convertToBatteryHistEntry(
            BatteryEntry entry, BatteryUsageStats batteryUsageStats) {
Loading