Merge "Add SparseLongArray.incrementValue()"

This commit is contained in:
Dmitri Plotnikov
2022-01-20 22:35:55 +00:00
committed by Android (Google) Code Review
5 changed files with 48 additions and 12 deletions

View File

@@ -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);
}

View File

@@ -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.

View File

@@ -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));
}
}

View File

@@ -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);

View File

@@ -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));
}
}