summaryrefslogtreecommitdiffstats
path: root/core/java/android/net
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2015-06-24 13:23:42 -0700
committerRobert Greenwalt <rgreenwalt@google.com>2015-07-08 20:42:55 -0700
commit8d48252b80cdb261cd2fa7372a01e6197f95efa6 (patch)
tree8c1f1f2af7cafbad567cfaa76d334d4c85441775 /core/java/android/net
parent748bc36f2eebfdc67520c5025b48fefdfd8d7c01 (diff)
downloadframeworks_base-8d48252b80cdb261cd2fa7372a01e6197f95efa6.zip
frameworks_base-8d48252b80cdb261cd2fa7372a01e6197f95efa6.tar.gz
frameworks_base-8d48252b80cdb261cd2fa7372a01e6197f95efa6.tar.bz2
Revive NetworkInfo's SUSPENDED state.
This got lost in the multinetwork work for L. It means that if telephony stops having the ability to pass packets for a while the rest of the platform doesn't know. Telephony enters the suspended state if it enters a telephony call while using certain radio access technologies, or if it switches to one of those RATs while in a call. It also can enter this state if it temporarily loses contact with the network - the modem will not report the loss of the data call for an indeterminant time in the hope that regaining the network will restore the connection without harm to any ongoing ip layer interactions. For example passing through a tunnel or taking an elevator trip may use this mechanism. bug: 19637156 Change-Id: If9fde68175e8561c19323c81fbfcb02a6e5a00fb
Diffstat (limited to 'core/java/android/net')
-rw-r--r--core/java/android/net/ConnectivityManager.java91
1 files changed, 56 insertions, 35 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 12cd5f1..01334c3 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -2081,23 +2081,6 @@ public class ConnectivityManager {
* changes. Should be extended by applications wanting notifications.
*/
public static class NetworkCallback {
- /** @hide */
- public static final int PRECHECK = 1;
- /** @hide */
- public static final int AVAILABLE = 2;
- /** @hide */
- public static final int LOSING = 3;
- /** @hide */
- public static final int LOST = 4;
- /** @hide */
- public static final int UNAVAIL = 5;
- /** @hide */
- public static final int CAP_CHANGED = 6;
- /** @hide */
- public static final int PROP_CHANGED = 7;
- /** @hide */
- public static final int CANCELED = 8;
-
/**
* Called when the framework connects to a new network to evaluate whether it satisfies this
* request. If evaluation succeeds, this callback may be followed by an {@link #onAvailable}
@@ -2174,30 +2157,54 @@ public class ConnectivityManager {
*/
public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {}
+ /**
+ * Called when the network the framework connected to for this request
+ * goes into {@link NetworkInfo.DetailedState.SUSPENDED}.
+ * This generally means that while the TCP connections are still live,
+ * temporarily network data fails to transfer. Specifically this is used
+ * on cellular networks to mask temporary outages when driving through
+ * a tunnel, etc.
+ * @hide
+ */
+ public void onNetworkSuspended(Network network) {}
+
+ /**
+ * Called when the network the framework connected to for this request
+ * returns from a {@link NetworkInfo.DetailedState.SUSPENDED} state.
+ * This should always be preceeded by a matching {@code onNetworkSuspended}
+ * call.
+ * @hide
+ */
+ public void onNetworkResumed(Network network) {}
+
private NetworkRequest networkRequest;
}
private static final int BASE = Protocol.BASE_CONNECTIVITY_MANAGER;
- /** @hide obj = pair(NetworkRequest, Network) */
- public static final int CALLBACK_PRECHECK = BASE + 1;
- /** @hide obj = pair(NetworkRequest, Network) */
- public static final int CALLBACK_AVAILABLE = BASE + 2;
- /** @hide obj = pair(NetworkRequest, Network), arg1 = ttl */
- public static final int CALLBACK_LOSING = BASE + 3;
- /** @hide obj = pair(NetworkRequest, Network) */
- public static final int CALLBACK_LOST = BASE + 4;
- /** @hide obj = NetworkRequest */
- public static final int CALLBACK_UNAVAIL = BASE + 5;
- /** @hide obj = pair(NetworkRequest, Network) */
- public static final int CALLBACK_CAP_CHANGED = BASE + 6;
- /** @hide obj = pair(NetworkRequest, Network) */
- public static final int CALLBACK_IP_CHANGED = BASE + 7;
- /** @hide obj = NetworkRequest */
- public static final int CALLBACK_RELEASED = BASE + 8;
/** @hide */
- public static final int CALLBACK_EXIT = BASE + 9;
+ public static final int CALLBACK_PRECHECK = BASE + 1;
+ /** @hide */
+ public static final int CALLBACK_AVAILABLE = BASE + 2;
+ /** @hide arg1 = TTL */
+ public static final int CALLBACK_LOSING = BASE + 3;
+ /** @hide */
+ public static final int CALLBACK_LOST = BASE + 4;
+ /** @hide */
+ public static final int CALLBACK_UNAVAIL = BASE + 5;
+ /** @hide */
+ public static final int CALLBACK_CAP_CHANGED = BASE + 6;
+ /** @hide */
+ public static final int CALLBACK_IP_CHANGED = BASE + 7;
+ /** @hide */
+ public static final int CALLBACK_RELEASED = BASE + 8;
+ /** @hide */
+ public static final int CALLBACK_EXIT = BASE + 9;
/** @hide obj = NetworkCapabilities, arg1 = seq number */
- private static final int EXPIRE_LEGACY_REQUEST = BASE + 10;
+ private static final int EXPIRE_LEGACY_REQUEST = BASE + 10;
+ /** @hide */
+ public static final int CALLBACK_SUSPENDED = BASE + 11;
+ /** @hide */
+ public static final int CALLBACK_RESUMED = BASE + 12;
private class CallbackHandler extends Handler {
private final HashMap<NetworkRequest, NetworkCallback>mCallbackMap;
@@ -2274,6 +2281,20 @@ public class ConnectivityManager {
}
break;
}
+ case CALLBACK_SUSPENDED: {
+ NetworkCallback callback = getCallback(request, "SUSPENDED");
+ if (callback != null) {
+ callback.onNetworkSuspended(network);
+ }
+ break;
+ }
+ case CALLBACK_RESUMED: {
+ NetworkCallback callback = getCallback(request, "RESUMED");
+ if (callback != null) {
+ callback.onNetworkResumed(network);
+ }
+ break;
+ }
case CALLBACK_RELEASED: {
NetworkCallback callback = null;
synchronized(mCallbackMap) {