diff --git a/api/current.txt b/api/current.txt
index eacc45261261b..82a2d8b8fd0b6 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -17054,15 +17054,10 @@ package android.net {
method public void unregisterDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
method public void unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback);
field public static final deprecated java.lang.String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
- field public static final java.lang.String ACTION_CAPTIVE_PORTAL_DETECTED = "android.net.conn.CAPTIVE_PORTAL_DETECTED";
- field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL_SIGN_IN";
- field public static final int CAPTIVE_PORTAL_DISCONNECT = 2; // 0x2
- field public static final int CAPTIVE_PORTAL_SIGNED_IN = 1; // 0x1
field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo";
field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover";
- field public static final java.lang.String EXTRA_NETWORK = "network";
field public static final deprecated java.lang.String EXTRA_NETWORK_INFO = "networkInfo";
field public static final java.lang.String EXTRA_NETWORK_TYPE = "networkType";
field public static final java.lang.String EXTRA_NO_CONNECTIVITY = "noConnectivity";
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 30be4da5191fd..4bfef410dbefd 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -283,98 +283,6 @@ public class ConnectivityManager {
*/
public static final String EXTRA_IS_CAPTIVE_PORTAL = "captivePortal";
- /**
- * Broadcast Action: A connection has been established to a new network
- * but a captive portal has been detected preventing internet connectivity.
- * This broadcast is sent out prior to providing the user with a
- * notification allowing them to sign into the network, as such it should
- * only be used by apps that can automatically and silently (without user
- * interaction) log into specific captive portals. It should not be used
- * by apps that prompt the user to sign in, as the user has not yet
- * indicated they want to proceed with signing in.
- * The new network is not the default network so it can only be accessed via
- * the {@link Network} extra {@link #EXTRA_NETWORK}.
- * This is an ordered broadcast and so it is perfectly acceptable for
- * multiple receivers to in turn consider whether they are best suited to
- * address the captive portal.
- * A receiver should abort the broadcast if they are sure they are the
- * appropriate handler of the captive portal. If the broadcast is aborted,
- * the result code must be set to one of the following:
- *
- * - {@link #CAPTIVE_PORTAL_SIGNED_IN} The receiver has signed into the
- * captive portal. After being verified to provide internet
- * connectivity, this network will be made the default (assuming
- * it is preferred over all other active networks).
- *
- * - {@link #CAPTIVE_PORTAL_DISCONNECT} The receiver is familiar with
- * this captive portal and knows sign-in is impossible or the user
- * has indicated they do not want to pursue sign-in. No other apps
- * will be given the option of signing in to the network.
- *
- *
- */
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_CAPTIVE_PORTAL_DETECTED =
- "android.net.conn.CAPTIVE_PORTAL_DETECTED";
-
- /**
- * Broadcast Action: A connection has been established to a new network,
- * a captive portal has been detected preventing internet connectivity,
- * the user was notified, and elected to sign into the captive portal.
- * It may be used by apps that prompt the user to sign in.
- * The new network is not the default network so it can only be accessed via
- * the {@link Network} extra {@link #EXTRA_NETWORK}.
- * This is an ordered broadcast and so it is perfectly acceptable for
- * multiple receivers to in turn consider whether they are best suited to
- * address the captive portal.
- * A receiver should abort the broadcast if they are sure they are the
- * appropriate handler of the captive portal. If the broadcast is aborted,
- * the result code must be set to one of the following:
- *
- * - {@link #CAPTIVE_PORTAL_SIGNED_IN} The receiver has signed into the
- * captive portal. After being verified to provide internet
- * connectivity, this network will be made the default (assuming
- * it is preferred over all other active networks).
- *
- * - {@link #CAPTIVE_PORTAL_DISCONNECT} The user has indicated they do
- * not want to pursue sign-in. No other apps will be given the
- * option of signing in to the network.
- *
- *
- */
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN =
- "android.net.conn.CAPTIVE_PORTAL_SIGN_IN";
-
- /**
- * The lookup key for a {@link Network} object passed along with a
- * {@link #ACTION_CAPTIVE_PORTAL_DETECTED} or
- * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} intent. This network is not the
- * default network and must be accessed using this {@link Network} object.
- * Retrieve with {@link android.content.Intent#getParcelableExtra(String)}.
- */
- public static final String EXTRA_NETWORK = "network";
-
- /**
- * Specified as a result code of a {@link #ACTION_CAPTIVE_PORTAL_DETECTED} or
- * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} receiver to indicate
- * the receiver has signed into the
- * captive portal. After being verified to provide internet
- * connectivity, this network will be made the default (assuming
- * it is preferred over all other active networks).
- */
- public static final int CAPTIVE_PORTAL_SIGNED_IN = 1;
-
- /**
- * Specified as a result code of a {@link #ACTION_CAPTIVE_PORTAL_DETECTED} or
- * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} receiver to indicate
- * the receiver is familiar with
- * this captive portal and knows sign-in is impossible or the user
- * has indicated they do not want to pursue sign-in. No other apps will
- * be given the option of signing in to the network.
- */
- public static final int CAPTIVE_PORTAL_DISCONNECT = 2;
-
/**
* The absence of a connection type.
* @hide
diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
index 9f4ed890900f5..cedf5739a60ef 100644
--- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -223,9 +223,7 @@ public class NetworkMonitor extends StateMachine {
private State mOfflineState = new OfflineState();
private State mValidatedState = new ValidatedState();
private State mEvaluatingState = new EvaluatingState();
- private State mUninteractiveAppsPromptedState = new UninteractiveAppsPromptedState();
private State mUserPromptedState = new UserPromptedState();
- private State mInteractiveAppsPromptedState = new InteractiveAppsPromptedState();
private State mCaptivePortalState = new CaptivePortalState();
private State mLingeringState = new LingeringState();
@@ -243,9 +241,7 @@ public class NetworkMonitor extends StateMachine {
addState(mOfflineState, mDefaultState);
addState(mValidatedState, mDefaultState);
addState(mEvaluatingState, mDefaultState);
- addState(mUninteractiveAppsPromptedState, mDefaultState);
addState(mUserPromptedState, mDefaultState);
- addState(mInteractiveAppsPromptedState, mDefaultState);
addState(mCaptivePortalState, mDefaultState);
addState(mLingeringState, mDefaultState);
setInitialState(mOfflineState);
@@ -368,7 +364,7 @@ public class NetworkMonitor extends StateMachine {
if (httpResponseCode == 204) {
transitionTo(mValidatedState);
} else if (httpResponseCode >= 200 && httpResponseCode <= 399) {
- transitionTo(mUninteractiveAppsPromptedState);
+ transitionTo(mUserPromptedState);
} else if (++mRetries > MAX_RETRIES) {
transitionTo(mOfflineState);
} else if (mReevaluateDelayMs >= 0) {
@@ -382,71 +378,6 @@ public class NetworkMonitor extends StateMachine {
}
}
- private class AppRespondedBroadcastReceiver extends BroadcastReceiver {
- private static final int CAPTIVE_PORTAL_UNINITIALIZED_RETURN_CODE = 0;
- private boolean mCanceled;
- AppRespondedBroadcastReceiver() {
- mCanceled = false;
- }
- public void send(String action) {
- Intent intent = new Intent(action);
- intent.putExtra(ConnectivityManager.EXTRA_NETWORK, mNetworkAgentInfo.network);
- mContext.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, null, this, getHandler(),
- CAPTIVE_PORTAL_UNINITIALIZED_RETURN_CODE, null, null);
- }
- public void cancel() {
- mCanceled = true;
- }
- @Override
- public void onReceive(Context context, Intent intent) {
- if (!mCanceled) {
- cancel();
- switch (getResultCode()) {
- case ConnectivityManager.CAPTIVE_PORTAL_SIGNED_IN:
- sendMessage(EVENT_APP_BYPASSED_CAPTIVE_PORTAL);
- break;
- case ConnectivityManager.CAPTIVE_PORTAL_DISCONNECT:
- sendMessage(EVENT_APP_INDICATES_SIGN_IN_IMPOSSIBLE);
- break;
- // NOTE: This case label makes compiler enforce no overlap between result codes.
- case CAPTIVE_PORTAL_UNINITIALIZED_RETURN_CODE:
- default:
- sendMessage(EVENT_NO_APP_RESPONSE);
- break;
- }
- }
- }
- }
-
- private class UninteractiveAppsPromptedState extends State {
- private AppRespondedBroadcastReceiver mReceiver;
- @Override
- public void enter() {
- mReceiver = new AppRespondedBroadcastReceiver();
- mReceiver.send(ConnectivityManager.ACTION_CAPTIVE_PORTAL_DETECTED);
- }
- @Override
- public boolean processMessage(Message message) {
- if (DBG) log(getName() + message.toString());
- switch (message.what) {
- case EVENT_APP_BYPASSED_CAPTIVE_PORTAL:
- transitionTo(mValidatedState);
- return HANDLED;
- case EVENT_APP_INDICATES_SIGN_IN_IMPOSSIBLE:
- transitionTo(mOfflineState);
- return HANDLED;
- case EVENT_NO_APP_RESPONSE:
- transitionTo(mUserPromptedState);
- return HANDLED;
- default:
- return NOT_HANDLED;
- }
- }
- public void exit() {
- mReceiver.cancel();
- }
- }
-
private class UserPromptedState extends State {
private class UserRespondedBroadcastReceiver extends BroadcastReceiver {
private final int mToken;
@@ -487,7 +418,7 @@ public class NetworkMonitor extends StateMachine {
case CMD_USER_WANTS_SIGN_IN:
if (message.arg1 != mUserPromptedToken)
return HANDLED;
- transitionTo(mInteractiveAppsPromptedState);
+ transitionTo(mCaptivePortalState);
return HANDLED;
default:
return NOT_HANDLED;
@@ -504,35 +435,6 @@ public class NetworkMonitor extends StateMachine {
}
}
- private class InteractiveAppsPromptedState extends State {
- private AppRespondedBroadcastReceiver mReceiver;
- @Override
- public void enter() {
- mReceiver = new AppRespondedBroadcastReceiver();
- mReceiver.send(ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN);
- }
- @Override
- public boolean processMessage(Message message) {
- if (DBG) log(getName() + message.toString());
- switch (message.what) {
- case EVENT_APP_BYPASSED_CAPTIVE_PORTAL:
- transitionTo(mValidatedState);
- return HANDLED;
- case EVENT_APP_INDICATES_SIGN_IN_IMPOSSIBLE:
- transitionTo(mOfflineState);
- return HANDLED;
- case EVENT_NO_APP_RESPONSE:
- transitionTo(mCaptivePortalState);
- return HANDLED;
- default:
- return NOT_HANDLED;
- }
- }
- public void exit() {
- mReceiver.cancel();
- }
- }
-
private class CaptivePortalState extends State {
private class CaptivePortalLoggedInBroadcastReceiver extends BroadcastReceiver {
private final int mToken;