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

Commit fcfec6bf authored by Lucas Lin's avatar Lucas Lin Committed by Gerrit Code Review
Browse files

Merge "Replace BaseNetworkObserver with BaseNetdUnsolicitedEventListener"

parents a10e9ca5 b32fabce
Loading
Loading
Loading
Loading
+36 −36
Original line number Original line Diff line number Diff line
@@ -91,7 +91,6 @@ import android.net.IConnectivityManager;
import android.net.IDnsResolver;
import android.net.IDnsResolver;
import android.net.INetd;
import android.net.INetd;
import android.net.INetworkActivityListener;
import android.net.INetworkActivityListener;
import android.net.INetworkManagementEventObserver;
import android.net.INetworkMonitor;
import android.net.INetworkMonitor;
import android.net.INetworkMonitorCallbacks;
import android.net.INetworkMonitorCallbacks;
import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyListener;
@@ -194,6 +193,7 @@ import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.LocationPermissionChecker;
import com.android.internal.util.LocationPermissionChecker;
import com.android.internal.util.MessageUtils;
import com.android.internal.util.MessageUtils;
import com.android.modules.utils.BasicShellCommandHandler;
import com.android.modules.utils.BasicShellCommandHandler;
import com.android.net.module.util.BaseNetdUnsolicitedEventListener;
import com.android.net.module.util.CollectionUtils;
import com.android.net.module.util.CollectionUtils;
import com.android.net.module.util.LinkPropertiesUtils.CompareOrUpdateResult;
import com.android.net.module.util.LinkPropertiesUtils.CompareOrUpdateResult;
import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
@@ -214,7 +214,6 @@ import com.android.server.connectivity.NetworkRanker;
import com.android.server.connectivity.PermissionMonitor;
import com.android.server.connectivity.PermissionMonitor;
import com.android.server.connectivity.ProxyTracker;
import com.android.server.connectivity.ProxyTracker;
import com.android.server.connectivity.QosCallbackTracker;
import com.android.server.connectivity.QosCallbackTracker;
import com.android.server.net.BaseNetworkObserver;
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.utils.PriorityDump;
import com.android.server.utils.PriorityDump;


@@ -332,6 +331,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
    private INetworkStatsService mStatsService;
    private INetworkStatsService mStatsService;
    private NetworkPolicyManager mPolicyManager;
    private NetworkPolicyManager mPolicyManager;
    private NetworkPolicyManagerInternal mPolicyManagerInternal;
    private NetworkPolicyManagerInternal mPolicyManagerInternal;
    private final NetdCallback mNetdCallback;


    /**
    /**
     * TestNetworkService (lazily) created upon first usage. Locked to prevent creation of multiple
     * TestNetworkService (lazily) created upon first usage. Locked to prevent creation of multiple
@@ -1204,6 +1204,13 @@ public class ConnectivityService extends IConnectivityManager.Stub


        mNetworkActivityTracker = new LegacyNetworkActivityTracker(mContext, mHandler, mNMS, mNetd);
        mNetworkActivityTracker = new LegacyNetworkActivityTracker(mContext, mHandler, mNMS, mNetd);


        mNetdCallback = new NetdCallback();
        try {
            mNetd.registerUnsolicitedEventListener(mNetdCallback);
        } catch (RemoteException | ServiceSpecificException e) {
            loge("Error registering event listener :" + e);
        }

        mSettingsObserver = new SettingsObserver(mContext, mHandler);
        mSettingsObserver = new SettingsObserver(mContext, mHandler);
        registerSettingsCallbacks();
        registerSettingsCallbacks();


@@ -8649,6 +8656,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
        notifyDataStallSuspected(p, network.getNetId());
        notifyDataStallSuspected(p, network.getNetId());
    }
    }


    private class NetdCallback extends BaseNetdUnsolicitedEventListener {
        @Override
        public void onInterfaceClassActivityChanged(boolean isActive, int timerLabel,
                long timestampNs, int uid) {
            mNetworkActivityTracker.setAndReportNetworkActive(isActive, timerLabel, timestampNs);
        }
    }

    private final LegacyNetworkActivityTracker mNetworkActivityTracker;
    private final LegacyNetworkActivityTracker mNetworkActivityTracker;


    /**
    /**
@@ -8659,7 +8674,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
        private static final int NO_UID = -1;
        private static final int NO_UID = -1;
        private final Context mContext;
        private final Context mContext;
        private final INetd mNetd;
        private final INetd mNetd;
        private final INetworkManagementService mNMS;
        private final RemoteCallbackList<INetworkActivityListener> mNetworkActivityListeners =
        private final RemoteCallbackList<INetworkActivityListener> mNetworkActivityListeners =
                new RemoteCallbackList<>();
                new RemoteCallbackList<>();
        // Indicate the current system default network activity is active or not.
        // Indicate the current system default network activity is active or not.
@@ -8682,24 +8696,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
        LegacyNetworkActivityTracker(@NonNull Context context, @NonNull Handler handler,
        LegacyNetworkActivityTracker(@NonNull Context context, @NonNull Handler handler,
                @NonNull INetworkManagementService nms, @NonNull INetd netd) {
                @NonNull INetworkManagementService nms, @NonNull INetd netd) {
            mContext = context;
            mContext = context;
            mNMS = nms;
            mNetd = netd;
            mNetd = netd;
            mHandler = handler;
            mHandler = handler;
            try {
                mNMS.registerObserver(mDataActivityObserver);
            } catch (RemoteException e) {
                loge("Error registering observer :" + e);
            }
        }
        }


        // TODO: Migrate away the dependency with INetworkManagementEventObserver.
        public void setAndReportNetworkActive(boolean active, int transportType, long tsNanos) {
        private final INetworkManagementEventObserver mDataActivityObserver =
            sendDataActivityBroadcast(transportTypeToLegacyType(transportType), active, tsNanos);
                new BaseNetworkObserver() {
                    @Override
                    public void interfaceClassDataActivityChanged(int transportType, boolean active,
                            long tsNanos, int uid) {
                        sendDataActivityBroadcast(transportTypeToLegacyType(transportType), active,
                                tsNanos);
            synchronized (mActiveIdleTimers) {
            synchronized (mActiveIdleTimers) {
                mNetworkActive = active;
                mNetworkActive = active;
                // If there are no idle timers, it means that system is not monitoring
                // If there are no idle timers, it means that system is not monitoring
@@ -8711,12 +8713,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
                // the mActiveIdleTimers should be always not empty. The legacy behavior
                // the mActiveIdleTimers should be always not empty. The legacy behavior
                // is no-op. Remove to refer to mNetworkActive only.
                // is no-op. Remove to refer to mNetworkActive only.
                if (mNetworkActive || mActiveIdleTimers.isEmpty()) {
                if (mNetworkActive || mActiveIdleTimers.isEmpty()) {
                                mHandler.sendMessage(
                    mHandler.sendMessage(mHandler.obtainMessage(EVENT_REPORT_NETWORK_ACTIVITY));
                                        mHandler.obtainMessage(EVENT_REPORT_NETWORK_ACTIVITY));
                }
                }
            }
            }
        }
        }
                };


        // The network activity should only be updated from ConnectivityService handler thread
        // The network activity should only be updated from ConnectivityService handler thread
        // when mActiveIdleTimers lock is held.
        // when mActiveIdleTimers lock is held.