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

Commit f074f499 authored by Aaron Huang's avatar Aaron Huang Committed by Automerger Merge Worker
Browse files

Merge "Use NetworkCallback in BatteryStatsService to get connectivity change"...

Merge "Use NetworkCallback in BatteryStatsService to get connectivity change" into sc-dev am: 70738d3c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13749983

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I8a3122699940f9b20b4eb09a23310717290bd5f7
parents 0676346e 70738d3c
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -2384,13 +2384,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
                final BroadcastOptions opts = BroadcastOptions.makeBasic();
                opts.setMaxManifestReceiverApiLevel(Build.VERSION_CODES.M);
                options = opts.toBundle();
                final IBatteryStats bs = mDeps.getBatteryStatsService();
                try {
                    bs.noteConnectivityChanged(intent.getIntExtra(
                            ConnectivityManager.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_NONE),
                            ni.getState().toString());
                } catch (RemoteException e) {
                }
                intent.addFlags(Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS);
            }
            try {
+25 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.server.am;

import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;

import android.annotation.NonNull;
import android.bluetooth.BluetoothActivityEnergyInfo;
import android.content.ContentResolver;
import android.content.Context;
@@ -25,7 +28,9 @@ import android.hardware.power.stats.PowerEntity;
import android.hardware.power.stats.State;
import android.hardware.power.stats.StateResidency;
import android.hardware.power.stats.StateResidencyResult;
import android.net.ConnectivityManager;
import android.net.INetworkManagementEventObserver;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.os.BatteryStats;
import android.os.BatteryStatsInternal;
@@ -77,6 +82,7 @@ import com.android.internal.util.DumpUtils;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.ParseUtils;
import com.android.internal.util.function.pooled.PooledLambda;
import com.android.net.module.util.NetworkCapabilitiesUtils;
import com.android.server.LocalServices;
import com.android.server.Watchdog;
import com.android.server.connectivity.DataConnectionStats;
@@ -292,6 +298,23 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        return builder.toString();
    }

    private ConnectivityManager.NetworkCallback mNetworkCallback =
            new ConnectivityManager.NetworkCallback() {
        @Override
        public void onCapabilitiesChanged(@NonNull Network network,
                @NonNull NetworkCapabilities networkCapabilities) {
            final String state = networkCapabilities.hasCapability(NET_CAPABILITY_NOT_SUSPENDED)
                    ? "CONNECTED" : "SUSPENDED";
            noteConnectivityChanged(NetworkCapabilitiesUtils.getDisplayTransport(
                    networkCapabilities.getTransportTypes()), state);
        }

        @Override
        public void onLost(Network network) {
            noteConnectivityChanged(-1, "DISCONNECTED");
        }
    };

    BatteryStatsService(Context context, File systemDir, Handler handler) {
        // BatteryStatsImpl expects the ActivityManagerService handler, so pass that one through.
        mContext = context;
@@ -331,8 +354,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        mWorker.systemServicesReady();
        final INetworkManagementService nms = INetworkManagementService.Stub.asInterface(
                ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
        final ConnectivityManager cm = mContext.getSystemService(ConnectivityManager.class);
        try {
            nms.registerObserver(mActivityChangeObserver);
            cm.registerDefaultNetworkCallback(mNetworkCallback);
        } catch (RemoteException e) {
            Slog.e(TAG, "Could not register INetworkManagement event observer " + e);
        }