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

Commit d40d1fac authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Revert^2 "Fix IllegalStateException in getSupportedPowerMonitors API"

This reverts commit 6aaf75ca.

Reason for revert: Rolling forward the original change with a fixed test

Test: atest PowerStatsTest:PowerStatsServiceTest
Bug: 309070737
Bug: 310083260
Change-Id: I344f5117a50432572dec42cddc43a1a45970acb0
parent 3a4dedd8
Loading
Loading
Loading
Loading
+41 −30
Original line number Diff line number Diff line
@@ -603,9 +603,37 @@ public class PowerStatsService extends SystemService {
    @NonNull
    private String getEnergyConsumerName(EnergyConsumer consumer,
            EnergyConsumer[] energyConsumers) {
        if (consumer.type != EnergyConsumerType.OTHER) {
        StringBuilder sb = new StringBuilder();
            sb.append(energyConsumerTypeToString(consumer.type));
        switch (consumer.type) {
            case EnergyConsumerType.BLUETOOTH:
                sb.append("BLUETOOTH");
                break;
            case EnergyConsumerType.CPU_CLUSTER:
                sb.append("CPU");
                break;
            case EnergyConsumerType.DISPLAY:
                sb.append("DISPLAY");
                break;
            case EnergyConsumerType.GNSS:
                sb.append("GNSS");
                break;
            case EnergyConsumerType.MOBILE_RADIO:
                sb.append("MOBILE_RADIO");
                break;
            case EnergyConsumerType.WIFI:
                sb.append("WIFI");
                break;
            case EnergyConsumerType.CAMERA:
                sb.append("CAMERA");
                break;
            default:
                if (consumer.name != null && !consumer.name.isBlank()) {
                    sb.append(consumer.name.toUpperCase(Locale.ENGLISH));
                } else {
                    sb.append("CONSUMER_").append(consumer.type);
                }
                break;
        }
        boolean hasOrdinal = consumer.ordinal != 0;
        if (!hasOrdinal) {
            // See if any other EnergyConsumer of the same type has an ordinal
@@ -620,23 +648,6 @@ public class PowerStatsService extends SystemService {
            sb.append('/').append(consumer.ordinal);
        }
        return sb.toString();
        } else {
            return consumer.name;
        }
    }

    private static String energyConsumerTypeToString(int type) {
        switch(type) {
            case EnergyConsumerType.BLUETOOTH: return "BLUETOOTH";
            case EnergyConsumerType.CPU_CLUSTER: return "CPU";
            case EnergyConsumerType.DISPLAY: return "DISPLAY";
            case EnergyConsumerType.GNSS: return "GNSS";
            case EnergyConsumerType.MOBILE_RADIO: return "MOBILE_RADIO";
            case EnergyConsumerType.WIFI: return "WIFI";
            case EnergyConsumerType.OTHER: return "";
            default:
                throw new IllegalStateException("Unrecognized EnergyConsumerType: " + type);
        }
    }

    /**
+3 −3
Original line number Diff line number Diff line
@@ -1081,7 +1081,7 @@ public class PowerStatsServiceTest {
        assertThat(result.powerMonitors).isNotNull();
        assertThat(Arrays.stream(result.powerMonitors).map(PowerMonitor::getName).toList())
                .containsAtLeast(
                        "energyconsumer0",
                        "ENERGYCONSUMER0",
                        "BLUETOOTH/1",
                        "[channelname0]:channelsubsystem0",
                        "[channelname1]:channelsubsystem1");
@@ -1131,7 +1131,7 @@ public class PowerStatsServiceTest {
        Map<String, PowerMonitor> map =
                Arrays.stream(supportedPowerMonitorsResult.powerMonitors)
                        .collect(Collectors.toMap(PowerMonitor::getName, pm -> pm));
        PowerMonitor consumer1 = map.get("energyconsumer0");
        PowerMonitor consumer1 = map.get("ENERGYCONSUMER0");
        PowerMonitor consumer2 = map.get("BLUETOOTH/1");
        PowerMonitor measurement1 = map.get("[channelname0]:channelsubsystem0");
        PowerMonitor measurement2 = map.get("[channelname1]:channelsubsystem1");
@@ -1196,6 +1196,6 @@ public class PowerStatsServiceTest {
        supportedPowerMonitorsResult = new GetSupportedPowerMonitorsResult();
        mService.getSupportedPowerMonitorsImpl(supportedPowerMonitorsResult);
        assertThat(Arrays.stream(supportedPowerMonitorsResult.powerMonitors)
                .map(PowerMonitor::getName).toList()).contains("energyconsumer0");
                .map(PowerMonitor::getName).toList()).contains("ENERGYCONSUMER0");
    }
}