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

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

Add SparseLongArray.incrementValue()

This method is used for accumulation of long values: if
the key does not exist, one is created.  If one already exists,
the passed value is added to the previous value.

This method is similar to the existing
SparseDoubleArray.incrementValue() method

Bug: 215427055
Test: atest FrameworksCoreTests:SparseLongArrayTest
Change-Id: I771d9bc2bdd12ca4260b20186ced70f5862b6f56
parent 2f473a97
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ public class SparseDoubleArray implements Cloneable {
     * <p>This differs from {@link #put} because instead of replacing any previous value, it adds
     * (in the numerical sense) to it.
     */
    public void add(int key, double summand) {
    public void incrementValue(int key, double summand) {
        final double oldValue = get(key);
        put(key, oldValue + summand);
    }
+24 −0
Original line number Diff line number Diff line
@@ -163,6 +163,30 @@ public class SparseLongArray implements Cloneable {
        }
    }

    /**
     * Adds a mapping from the specified key to the specified value,
     * <b>adding</b> its value to the previous mapping from the specified key if there
     * was one.
     *
     * <p>This differs from {@link #put} because instead of replacing any previous value, it adds
     * (in the numerical sense) to it.
     *
     * @hide
     */
    public void incrementValue(int key, long summand) {
        int i = ContainerHelpers.binarySearch(mKeys, mSize, key);

        if (i >= 0) {
            mValues[i] += summand;
        } else {
            i = ~i;

            mKeys = GrowingArrayUtils.insert(mKeys, mSize, i, key);
            mValues = GrowingArrayUtils.insert(mValues, mSize, i, summand);
            mSize++;
        }
    }

    /**
     * Returns the number of key-value mappings that this SparseLongArray
     * currently stores.
+8 −8
Original line number Diff line number Diff line
@@ -12828,7 +12828,7 @@ public class BatteryStatsImpl extends BatteryStats {
                            }
                        }
                        uidEstimatedConsumptionMah.add(u.getUid(),
                        uidEstimatedConsumptionMah.incrementValue(u.getUid(),
                                mWifiPowerCalculator.calcPowerWithoutControllerDataMah(
                                        entry.rxPackets, entry.txPackets,
                                        uidRunningMs, uidScanMs, uidBatchScanMs));
@@ -12955,7 +12955,7 @@ public class BatteryStatsImpl extends BatteryStats {
                    if (uidEstimatedConsumptionMah != null) {
                        double uidEstMah = mWifiPowerCalculator.calcPowerFromControllerDataMah(
                                scanRxTimeSinceMarkMs, scanTxTimeSinceMarkMs, myIdleTimeMs);
                        uidEstimatedConsumptionMah.add(uid.getUid(), uidEstMah);
                        uidEstimatedConsumptionMah.incrementValue(uid.getUid(), uidEstMah);
                    }
                }
@@ -12977,7 +12977,7 @@ public class BatteryStatsImpl extends BatteryStats {
                    uid.getOrCreateWifiControllerActivityLocked().getOrCreateTxTimeCounters()[0]
                            .increment(myTxTimeMs, elapsedRealtimeMs);
                    if (uidEstimatedConsumptionMah != null) {
                        uidEstimatedConsumptionMah.add(uid.getUid(),
                        uidEstimatedConsumptionMah.incrementValue(uid.getUid(),
                                mWifiPowerCalculator.calcPowerFromControllerDataMah(
                                        0, myTxTimeMs, 0));
                    }
@@ -12996,7 +12996,7 @@ public class BatteryStatsImpl extends BatteryStats {
                    uid.getOrCreateWifiControllerActivityLocked().getOrCreateRxTimeCounter()
                            .increment(myRxTimeMs, elapsedRealtimeMs);
                    if (uidEstimatedConsumptionMah != null) {
                        uidEstimatedConsumptionMah.add(uid.getUid(),
                        uidEstimatedConsumptionMah.incrementValue(uid.getUid(),
                                mWifiPowerCalculator.calcPowerFromControllerDataMah(
                                        myRxTimeMs, 0, 0));
                    }
@@ -13224,7 +13224,7 @@ public class BatteryStatsImpl extends BatteryStats {
                        // Distribute measured mobile radio charge consumption based on app radio
                        // active time
                        if (uidEstimatedConsumptionMah != null) {
                            uidEstimatedConsumptionMah.add(u.getUid(),
                            uidEstimatedConsumptionMah.incrementValue(u.getUid(),
                                    mMobileRadioPowerCalculator.calcPowerFromRadioActiveDurationMah(
                                            appRadioTimeUs / 1000));
                        }
@@ -13479,7 +13479,7 @@ public class BatteryStatsImpl extends BatteryStats {
                        .increment(scanTimeTxSinceMarkMs, elapsedRealtimeMs);
                if (uidEstimatedConsumptionMah != null) {
                    uidEstimatedConsumptionMah.add(u.getUid(),
                    uidEstimatedConsumptionMah.incrementValue(u.getUid(),
                            mBluetoothPowerCalculator.calculatePowerMah(
                                    scanTimeRxSinceMarkMs, scanTimeTxSinceMarkMs, 0));
                }
@@ -13546,7 +13546,7 @@ public class BatteryStatsImpl extends BatteryStats {
                    counter.getOrCreateRxTimeCounter().increment(timeRxMs, elapsedRealtimeMs);
                    if (uidEstimatedConsumptionMah != null) {
                        uidEstimatedConsumptionMah.add(u.getUid(),
                        uidEstimatedConsumptionMah.incrementValue(u.getUid(),
                                mBluetoothPowerCalculator.calculatePowerMah(timeRxMs, 0, 0));
                    }
                }
@@ -13560,7 +13560,7 @@ public class BatteryStatsImpl extends BatteryStats {
                            .increment(timeTxMs, elapsedRealtimeMs);
                    if (uidEstimatedConsumptionMah != null) {
                        uidEstimatedConsumptionMah.add(u.getUid(),
                        uidEstimatedConsumptionMah.incrementValue(u.getUid(),
                                mBluetoothPowerCalculator.calculatePowerMah(0, timeTxMs, 0));
                    }
                }
+3 −3
Original line number Diff line number Diff line
@@ -64,12 +64,12 @@ public class SparseDoubleArrayTest {
    }

    @Test
    public void testAdd() {
    public void testIncrementValue() {
        final SparseDoubleArray sda = new SparseDoubleArray();

        sda.put(4, 6.1);
        sda.add(4, -1.2);
        sda.add(2, -1.2);
        sda.incrementValue(4, -1.2);
        sda.incrementValue(2, -1.2);

        assertEquals(6.1 - 1.2, sda.get(4), PRECISION);
        assertEquals(-1.2, sda.get(2), PRECISION);
+12 −0
Original line number Diff line number Diff line
@@ -154,4 +154,16 @@ public class SparseLongArrayTest {
        assertRemoved(startIndex, endIndex);
        assertTrue(isSame(sparseLongArray2, mSparseLongArray));
    }

    @Test
    public void testIncrementValue() {
        final SparseLongArray sla = new SparseLongArray();

        sla.put(4, 6);
        sla.incrementValue(4, 4);
        sla.incrementValue(2, 5);

        assertEquals(6 + 4, sla.get(4));
        assertEquals(5, sla.get(2));
    }
}