Communicate with BatteryStatsService through BatteryStatsManager
Mainline connectivity service is only allowed to use formal
APIs. Use new system API in BatteryStatsManager instead of
calling BatteryStatsService directly.
Bug: 171686421
Test: FrameworksNetTests
Change-Id: I1d1f0d2d456003e842ad77519667c0532995610d
Merged-In: I1d1f0d2d456003e842ad77519667c0532995610d
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 0b7dbde..3adb177 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -1038,6 +1038,16 @@
public IBatteryStats getBatteryStatsService() {
return BatteryStatsService.getService();
}
+
+ /**
+ * @see BatteryStatsManager
+ */
+ public void reportNetworkInterfaceForTransports(Context context, String iface,
+ int[] transportTypes) {
+ final BatteryStatsManager batteryStats =
+ context.getSystemService(BatteryStatsManager.class);
+ batteryStats.reportNetworkInterfaceForTransports(iface, transportTypes);
+ }
}
public ConnectivityService(Context context) {
@@ -6275,13 +6285,13 @@
oldLp != null ? oldLp.getAllInterfaceNames() : null,
newLp != null ? newLp.getAllInterfaceNames() : null);
if (!interfaceDiff.added.isEmpty()) {
- final IBatteryStats bs = mDeps.getBatteryStatsService();
for (final String iface : interfaceDiff.added) {
try {
if (DBG) log("Adding iface " + iface + " to network " + netId);
mNetd.networkAddInterface(netId, iface);
wakeupModifyInterface(iface, caps, true);
- bs.noteNetworkInterfaceForTransports(iface, caps.getTransportTypes());
+ mDeps.reportNetworkInterfaceForTransports(mContext, iface,
+ caps.getTransportTypes());
} catch (Exception e) {
loge("Exception adding interface: " + e);
}
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index d5580e0..86adf5d 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -7803,7 +7803,8 @@
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
mCellNetworkAgent.connect(true);
waitForIdle();
- verify(mBatteryStatsService).noteNetworkInterfaceForTransports(cellLp.getInterfaceName(),
+ verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
+ cellLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR });
reset(mBatteryStatsService);
@@ -7812,7 +7813,8 @@
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI, wifiLp);
mWiFiNetworkAgent.connect(true);
waitForIdle();
- verify(mBatteryStatsService).noteNetworkInterfaceForTransports(wifiLp.getInterfaceName(),
+ verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
+ wifiLp.getInterfaceName(),
new int[] { TRANSPORT_WIFI });
reset(mBatteryStatsService);
@@ -7823,7 +7825,8 @@
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
mCellNetworkAgent.connect(true);
waitForIdle();
- verify(mBatteryStatsService).noteNetworkInterfaceForTransports(cellLp.getInterfaceName(),
+ verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
+ cellLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR });
mCellNetworkAgent.disconnect();
}
@@ -7907,7 +7910,8 @@
assertRoutesAdded(cellNetId, ipv6Subnet, defaultRoute);
verify(mMockDnsResolver, times(1)).createNetworkCache(eq(cellNetId));
verify(mMockNetd, times(1)).networkAddInterface(cellNetId, MOBILE_IFNAME);
- verify(mBatteryStatsService).noteNetworkInterfaceForTransports(cellLp.getInterfaceName(),
+ verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
+ cellLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR });
networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
@@ -7928,8 +7932,8 @@
// Make sure BatteryStats was not told about any v4- interfaces, as none should have
// come online yet.
waitForIdle();
- verify(mBatteryStatsService, never()).noteNetworkInterfaceForTransports(startsWith("v4-"),
- any());
+ verify(mDeps, never())
+ .reportNetworkInterfaceForTransports(eq(mServiceContext), startsWith("v4-"), any());
verifyNoMoreInteractions(mMockNetd);
verifyNoMoreInteractions(mMockDnsResolver);
@@ -7981,8 +7985,9 @@
assertTrue(ArrayUtils.contains(resolvrParams.servers, "8.8.8.8"));
for (final LinkProperties stackedLp : stackedLpsAfterChange) {
- verify(mBatteryStatsService).noteNetworkInterfaceForTransports(
- stackedLp.getInterfaceName(), new int[] { TRANSPORT_CELLULAR });
+ verify(mDeps).reportNetworkInterfaceForTransports(
+ mServiceContext, stackedLp.getInterfaceName(),
+ new int[] { TRANSPORT_CELLULAR });
}
reset(mMockNetd);
when(mMockNetd.interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME))