Merge changes I1d1f0d2d,Ifbd4a978

* changes:
  Communicate with BatteryStatsService through BatteryStatsManager
  Add a new API in BatteryStatsManager for connectivity service
This commit is contained in:
Aaron Huang
2021-03-09 10:33:56 +00:00
committed by Gerrit Code Review
2 changed files with 25 additions and 10 deletions

View File

@@ -1038,6 +1038,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
public IBatteryStats getBatteryStatsService() { public IBatteryStats getBatteryStatsService() {
return BatteryStatsService.getService(); 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) { public ConnectivityService(Context context) {
@@ -6281,13 +6291,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
oldLp != null ? oldLp.getAllInterfaceNames() : null, oldLp != null ? oldLp.getAllInterfaceNames() : null,
newLp != null ? newLp.getAllInterfaceNames() : null); newLp != null ? newLp.getAllInterfaceNames() : null);
if (!interfaceDiff.added.isEmpty()) { if (!interfaceDiff.added.isEmpty()) {
final IBatteryStats bs = mDeps.getBatteryStatsService();
for (final String iface : interfaceDiff.added) { for (final String iface : interfaceDiff.added) {
try { try {
if (DBG) log("Adding iface " + iface + " to network " + netId); if (DBG) log("Adding iface " + iface + " to network " + netId);
mNetd.networkAddInterface(netId, iface); mNetd.networkAddInterface(netId, iface);
wakeupModifyInterface(iface, caps, true); wakeupModifyInterface(iface, caps, true);
bs.noteNetworkInterfaceForTransports(iface, caps.getTransportTypes()); mDeps.reportNetworkInterfaceForTransports(mContext, iface,
caps.getTransportTypes());
} catch (Exception e) { } catch (Exception e) {
loge("Exception adding interface: " + e); loge("Exception adding interface: " + e);
} }

View File

@@ -7808,7 +7808,8 @@ public class ConnectivityServiceTest {
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp); mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
mCellNetworkAgent.connect(true); mCellNetworkAgent.connect(true);
waitForIdle(); waitForIdle();
verify(mBatteryStatsService).noteNetworkInterfaceForTransports(cellLp.getInterfaceName(), verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
cellLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR }); new int[] { TRANSPORT_CELLULAR });
reset(mBatteryStatsService); reset(mBatteryStatsService);
@@ -7817,7 +7818,8 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI, wifiLp); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI, wifiLp);
mWiFiNetworkAgent.connect(true); mWiFiNetworkAgent.connect(true);
waitForIdle(); waitForIdle();
verify(mBatteryStatsService).noteNetworkInterfaceForTransports(wifiLp.getInterfaceName(), verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
wifiLp.getInterfaceName(),
new int[] { TRANSPORT_WIFI }); new int[] { TRANSPORT_WIFI });
reset(mBatteryStatsService); reset(mBatteryStatsService);
@@ -7828,7 +7830,8 @@ public class ConnectivityServiceTest {
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp); mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
mCellNetworkAgent.connect(true); mCellNetworkAgent.connect(true);
waitForIdle(); waitForIdle();
verify(mBatteryStatsService).noteNetworkInterfaceForTransports(cellLp.getInterfaceName(), verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
cellLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR }); new int[] { TRANSPORT_CELLULAR });
mCellNetworkAgent.disconnect(); mCellNetworkAgent.disconnect();
} }
@@ -7912,7 +7915,8 @@ public class ConnectivityServiceTest {
assertRoutesAdded(cellNetId, ipv6Subnet, defaultRoute); assertRoutesAdded(cellNetId, ipv6Subnet, defaultRoute);
verify(mMockDnsResolver, times(1)).createNetworkCache(eq(cellNetId)); verify(mMockDnsResolver, times(1)).createNetworkCache(eq(cellNetId));
verify(mMockNetd, times(1)).networkAddInterface(cellNetId, MOBILE_IFNAME); verify(mMockNetd, times(1)).networkAddInterface(cellNetId, MOBILE_IFNAME);
verify(mBatteryStatsService).noteNetworkInterfaceForTransports(cellLp.getInterfaceName(), verify(mDeps).reportNetworkInterfaceForTransports(mServiceContext,
cellLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR }); new int[] { TRANSPORT_CELLULAR });
networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent); networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
@@ -7933,8 +7937,8 @@ public class ConnectivityServiceTest {
// Make sure BatteryStats was not told about any v4- interfaces, as none should have // Make sure BatteryStats was not told about any v4- interfaces, as none should have
// come online yet. // come online yet.
waitForIdle(); waitForIdle();
verify(mBatteryStatsService, never()).noteNetworkInterfaceForTransports(startsWith("v4-"), verify(mDeps, never())
any()); .reportNetworkInterfaceForTransports(eq(mServiceContext), startsWith("v4-"), any());
verifyNoMoreInteractions(mMockNetd); verifyNoMoreInteractions(mMockNetd);
verifyNoMoreInteractions(mMockDnsResolver); verifyNoMoreInteractions(mMockDnsResolver);
@@ -7986,8 +7990,9 @@ public class ConnectivityServiceTest {
assertTrue(ArrayUtils.contains(resolvrParams.servers, "8.8.8.8")); assertTrue(ArrayUtils.contains(resolvrParams.servers, "8.8.8.8"));
for (final LinkProperties stackedLp : stackedLpsAfterChange) { for (final LinkProperties stackedLp : stackedLpsAfterChange) {
verify(mBatteryStatsService).noteNetworkInterfaceForTransports( verify(mDeps).reportNetworkInterfaceForTransports(
stackedLp.getInterfaceName(), new int[] { TRANSPORT_CELLULAR }); mServiceContext, stackedLp.getInterfaceName(),
new int[] { TRANSPORT_CELLULAR });
} }
reset(mMockNetd); reset(mMockNetd);
when(mMockNetd.interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME)) when(mMockNetd.interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME))