diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index a550f34ce9a38..ad63424493872 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -83,6 +83,7 @@ import com.android.internal.telephony.PhoneConstants; import com.android.server.am.BatteryStatsService; import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Vpn; +import com.android.server.net.BaseNetworkObserver; import com.google.android.collect.Lists; import com.google.android.collect.Sets; import dalvik.system.DexClassLoader; @@ -524,6 +525,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { try { nmService.registerObserver(mTethering); nmService.registerObserver(mVpn); + nmService.registerObserver(mDataActivityObserver); } catch (RemoteException e) { loge("Error registering observer :" + e); } @@ -535,13 +537,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { mSettingsObserver = new SettingsObserver(mHandler, EVENT_APPLY_GLOBAL_HTTP_PROXY); mSettingsObserver.observe(mContext); - INetworkManagementEventObserver netdObserver = new NetdObserver(); - try { - mNetd.registerObserver(netdObserver); - } catch (RemoteException e) { - loge("Error registering observer :" + e); - } - loadGlobalProxy(); } @@ -922,18 +917,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { return tracker != null && tracker.setRadio(turnOn); } - private class NetdObserver extends INetworkManagementEventObserver.Stub { + private INetworkManagementEventObserver mDataActivityObserver = new BaseNetworkObserver() { + @Override public void interfaceClassDataActivityChanged(String label, boolean active) { int deviceType = Integer.parseInt(label); sendDataActivityBroadcast(deviceType, active); } - - public void interfaceStatusChanged(String iface, boolean up) {} - public void interfaceLinkStateChanged(String iface, boolean up) {} - public void interfaceAdded(String iface) {} - public void interfaceRemoved(String iface) {} - public void limitReached(String limitName, String iface) {} - } + }; /** * Used to notice when the calling process dies so we can self-expire diff --git a/services/java/com/android/server/net/NetworkAlertObserver.java b/services/java/com/android/server/net/BaseNetworkObserver.java similarity index 71% rename from services/java/com/android/server/net/NetworkAlertObserver.java rename to services/java/com/android/server/net/BaseNetworkObserver.java index 9e181c57484ab..8b2aa5db81a0f 100644 --- a/services/java/com/android/server/net/NetworkAlertObserver.java +++ b/services/java/com/android/server/net/BaseNetworkObserver.java @@ -19,29 +19,39 @@ package com.android.server.net; import android.net.INetworkManagementEventObserver; /** + * Base {@link INetworkManagementEventObserver} that provides no-op + * implementations which can be overridden. + * * @hide */ -public abstract class NetworkAlertObserver extends INetworkManagementEventObserver.Stub { +public class BaseNetworkObserver extends INetworkManagementEventObserver.Stub { @Override public void interfaceStatusChanged(String iface, boolean up) { - // ignored; interface changes come through ConnectivityService + // default no-op } @Override public void interfaceRemoved(String iface) { - // ignored; interface changes come through ConnectivityService + // default no-op } @Override public void interfaceLinkStateChanged(String iface, boolean up) { - // ignored; interface changes come through ConnectivityService + // default no-op } @Override public void interfaceAdded(String iface) { - // ignored; interface changes come through ConnectivityService + // default no-op } + + @Override public void interfaceClassDataActivityChanged(String label, boolean active) { - // ignored; interface changes come through ConnectivityService + // default no-op + } + + @Override + public void limitReached(String limitName, String iface) { + // default no-op } } diff --git a/services/java/com/android/server/net/NetworkPolicyManagerService.java b/services/java/com/android/server/net/NetworkPolicyManagerService.java index 3eb29db230f3c..7e5f8cff71822 100644 --- a/services/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/java/com/android/server/net/NetworkPolicyManagerService.java @@ -570,7 +570,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Observer that watches for {@link INetworkManagementService} alerts. */ - private INetworkManagementEventObserver mAlertObserver = new NetworkAlertObserver() { + private INetworkManagementEventObserver mAlertObserver = new BaseNetworkObserver() { @Override public void limitReached(String limitName, String iface) { // only someone like NMS should be calling us diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java index ba122ecdf2317..ffe2a3d4a170a 100644 --- a/services/java/com/android/server/net/NetworkStatsService.java +++ b/services/java/com/android/server/net/NetworkStatsService.java @@ -763,7 +763,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { /** * Observer that watches for {@link INetworkManagementService} alerts. */ - private INetworkManagementEventObserver mAlertObserver = new NetworkAlertObserver() { + private INetworkManagementEventObserver mAlertObserver = new BaseNetworkObserver() { @Override public void limitReached(String limitName, String iface) { // only someone like NMS should be calling us