am 9b7b4450
: am 02eab434
: am 4d87d91d
: Merge "If in a mobile captive portal is detected enable fail fast." into jb-mr2-dev
* commit '9b7b4450185e723dc7021f7e8bae4a12d4dd5606': If in a mobile captive portal is detected enable fail fast.
This commit is contained in:
@ -152,6 +152,11 @@ public class BluetoothTetheringDataTracker implements NetworkStateTracker {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(boolean isCaptivePortal) {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-enable connectivity to a network after a {@link #teardown()}.
|
||||
*/
|
||||
|
@ -101,6 +101,11 @@ public abstract class BaseNetworkStateTracker implements NetworkStateTracker {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(boolean isCaptivePortal) {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setRadio(boolean turnOn) {
|
||||
// Base tracker doesn't handle radios
|
||||
|
@ -303,6 +303,7 @@ public class CaptivePortalTracker extends StateMachine {
|
||||
} else {
|
||||
if (DBG) log("Not captive network " + mNetworkInfo);
|
||||
}
|
||||
notifyPortalCheckCompleted(mNetworkInfo, captive);
|
||||
if (mDeviceProvisioned) {
|
||||
if (captive) {
|
||||
// Setup Wizard will assist the user in connecting to a captive
|
||||
@ -333,12 +334,26 @@ public class CaptivePortalTracker extends StateMachine {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (DBG) log("notifyPortalCheckComplete: ni=" + info);
|
||||
mConnService.captivePortalCheckComplete(info);
|
||||
} catch(RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyPortalCheckCompleted(NetworkInfo info, boolean isCaptivePortal) {
|
||||
if (info == null) {
|
||||
loge("notifyPortalCheckComplete on null");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (DBG) log("notifyPortalCheckCompleted: captive=" + isCaptivePortal + " ni=" + info);
|
||||
mConnService.captivePortalCheckCompleted(info, isCaptivePortal);
|
||||
} catch(RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isActiveNetwork(NetworkInfo info) {
|
||||
try {
|
||||
NetworkInfo active = mConnService.getActiveNetworkInfo();
|
||||
|
@ -1323,6 +1323,25 @@ public class ConnectivityManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Signal that the captive portal check on the indicated network
|
||||
* is complete and whether its a captive portal or not.
|
||||
*
|
||||
* @param info the {@link NetworkInfo} object for the networkType
|
||||
* in question.
|
||||
* @param isCaptivePortal true/false.
|
||||
*
|
||||
* <p>This method requires the call to hold the permission
|
||||
* {@link android.Manifest.permission#CONNECTIVITY_INTERNAL}.
|
||||
* {@hide}
|
||||
*/
|
||||
public void captivePortalCheckCompleted(NetworkInfo info, boolean isCaptivePortal) {
|
||||
try {
|
||||
mService.captivePortalCheckCompleted(info, isCaptivePortal);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Supply the backend messenger for a network tracker
|
||||
*
|
||||
|
@ -120,10 +120,16 @@ public class DummyDataStateTracker implements NetworkStateTracker {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckComplete() {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(boolean isCaptivePortal) {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
/**
|
||||
* Record the detailed state of a network, and if it is a
|
||||
* change from the previous state, send a notification to
|
||||
|
@ -280,6 +280,11 @@ public class EthernetDataTracker implements NetworkStateTracker {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(boolean isCaptivePortal) {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn the wireless radio off for a network.
|
||||
* @param turnOn {@code true} to turn the radio on, {@code false}
|
||||
|
@ -134,6 +134,8 @@ interface IConnectivityManager
|
||||
|
||||
void captivePortalCheckComplete(in NetworkInfo info);
|
||||
|
||||
void captivePortalCheckCompleted(in NetworkInfo info, boolean isCaptivePortal);
|
||||
|
||||
void supplyMessenger(int networkType, in Messenger messenger);
|
||||
|
||||
int findConnectionTypeForIface(in String iface);
|
||||
|
@ -40,6 +40,7 @@ import com.android.internal.util.AsyncChannel;
|
||||
|
||||
import java.io.CharArrayWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* Track the state of mobile data connectivity. This is done by
|
||||
@ -75,6 +76,8 @@ public class MobileDataStateTracker implements NetworkStateTracker {
|
||||
private Handler mHandler;
|
||||
private AsyncChannel mDataConnectionTrackerAc;
|
||||
|
||||
private AtomicBoolean mIsCaptivePortal = new AtomicBoolean(false);
|
||||
|
||||
/**
|
||||
* Create a new MobileDataStateTracker
|
||||
* @param netType the ConnectivityManager network type
|
||||
@ -377,6 +380,15 @@ public class MobileDataStateTracker implements NetworkStateTracker {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(boolean isCaptivePortal) {
|
||||
if (mIsCaptivePortal.getAndSet(isCaptivePortal) != isCaptivePortal) {
|
||||
// Captive portal change enable/disable failing fast
|
||||
setEnableFailFastMobileData(
|
||||
isCaptivePortal ? DctConstants.ENABLED : DctConstants.DISABLED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Record the detailed state of a network, and if it is a
|
||||
* change from the previous state, send a notification to
|
||||
|
@ -143,6 +143,11 @@ public interface NetworkStateTracker {
|
||||
*/
|
||||
public void captivePortalCheckComplete();
|
||||
|
||||
/**
|
||||
* Captive portal check has completed
|
||||
*/
|
||||
public void captivePortalCheckCompleted(boolean isCaptive);
|
||||
|
||||
/**
|
||||
* Turn the wireless radio off for a network.
|
||||
* @param turnOn {@code true} to turn the radio on, {@code false}
|
||||
|
@ -2221,15 +2221,26 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
||||
}
|
||||
}
|
||||
|
||||
if (DBG) log("handleCaptivePortalTrackerCheck: call captivePortalCheckComplete ni=" + info);
|
||||
thisNet.captivePortalCheckComplete();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public void captivePortalCheckComplete(NetworkInfo info) {
|
||||
enforceConnectivityInternalPermission();
|
||||
if (DBG) log("captivePortalCheckComplete: ni=" + info);
|
||||
mNetTrackers[info.getType()].captivePortalCheckComplete();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(NetworkInfo info, boolean isCaptivePortal) {
|
||||
enforceConnectivityInternalPermission();
|
||||
if (DBG) log("captivePortalCheckCompleted: ni=" + info + " captive=" + isCaptivePortal);
|
||||
mNetTrackers[info.getType()].captivePortalCheckCompleted(isCaptivePortal);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup data activity tracking for the given network interface.
|
||||
*
|
||||
|
@ -3198,6 +3198,7 @@ public class WifiStateMachine extends StateMachine {
|
||||
class VerifyingLinkState extends State {
|
||||
@Override
|
||||
public void enter() {
|
||||
log(getName() + " enter");
|
||||
setNetworkDetailedState(DetailedState.VERIFYING_POOR_LINK);
|
||||
mWifiConfigStore.updateStatus(mLastNetworkId, DetailedState.VERIFYING_POOR_LINK);
|
||||
sendNetworkStateChangeBroadcast(mLastBssid);
|
||||
@ -3207,11 +3208,14 @@ public class WifiStateMachine extends StateMachine {
|
||||
switch (message.what) {
|
||||
case WifiWatchdogStateMachine.POOR_LINK_DETECTED:
|
||||
//stay here
|
||||
log(getName() + " POOR_LINK_DETECTED: no transition");
|
||||
break;
|
||||
case WifiWatchdogStateMachine.GOOD_LINK_DETECTED:
|
||||
log(getName() + " GOOD_LINK_DETECTED: transition to captive portal check");
|
||||
transitionTo(mCaptivePortalCheckState);
|
||||
break;
|
||||
default:
|
||||
log(getName() + " what=" + message.what + " NOT_HANDLED");
|
||||
return NOT_HANDLED;
|
||||
}
|
||||
return HANDLED;
|
||||
@ -3221,6 +3225,7 @@ public class WifiStateMachine extends StateMachine {
|
||||
class CaptivePortalCheckState extends State {
|
||||
@Override
|
||||
public void enter() {
|
||||
log(getName() + " enter");
|
||||
setNetworkDetailedState(DetailedState.CAPTIVE_PORTAL_CHECK);
|
||||
mWifiConfigStore.updateStatus(mLastNetworkId, DetailedState.CAPTIVE_PORTAL_CHECK);
|
||||
sendNetworkStateChangeBroadcast(mLastBssid);
|
||||
@ -3229,6 +3234,7 @@ public class WifiStateMachine extends StateMachine {
|
||||
public boolean processMessage(Message message) {
|
||||
switch (message.what) {
|
||||
case CMD_CAPTIVE_CHECK_COMPLETE:
|
||||
log(getName() + " CMD_CAPTIVE_CHECK_COMPLETE");
|
||||
try {
|
||||
mNwService.enableIpv6(mInterfaceName);
|
||||
} catch (RemoteException re) {
|
||||
|
@ -120,6 +120,11 @@ public class WifiStateTracker implements NetworkStateTracker {
|
||||
mWifiManager.captivePortalCheckComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void captivePortalCheckCompleted(boolean isCaptivePortal) {
|
||||
// not implemented
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn the wireless radio off for a network.
|
||||
* @param turnOn {@code true} to turn the radio on, {@code false}
|
||||
|
Reference in New Issue
Block a user