Loading services/core/java/com/android/server/ConnectivityService.java +36 −36 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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(); Loading Loading @@ -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; /** /** Loading @@ -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. Loading @@ -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 Loading @@ -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. Loading Loading
services/core/java/com/android/server/ConnectivityService.java +36 −36 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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(); Loading Loading @@ -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; /** /** Loading @@ -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. Loading @@ -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 Loading @@ -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. Loading