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

Commit af4e6b7c authored by Aaron Huang's avatar Aaron Huang
Browse files

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
parent 558b3177
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -1038,6 +1038,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
        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) {
@@ -6281,13 +6291,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
                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);
                }
+13 −8
Original line number Diff line number Diff line
@@ -7808,7 +7808,8 @@ public class ConnectivityServiceTest {
        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);
@@ -7817,7 +7818,8 @@ public class ConnectivityServiceTest {
        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);
@@ -7828,7 +7830,8 @@ public class ConnectivityServiceTest {
        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();
    }
@@ -7912,7 +7915,8 @@ public class ConnectivityServiceTest {
        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);
@@ -7933,8 +7937,8 @@ public class ConnectivityServiceTest {
        // 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);
@@ -7986,8 +7990,9 @@ public class ConnectivityServiceTest {
        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))