Merge "Separate NetworkMonitor/framework portal URL"
am: bcd3bed561
Change-Id: I1926527f7875e459b4d3c84bfcd8b3aac9562cae
This commit is contained in:
@@ -1345,12 +1345,15 @@ public class ConnectivityManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the URL that should be used for resolving whether a captive portal is present.
|
||||
* Gets a URL that can be used for resolving whether a captive portal is present.
|
||||
* 1. This URL should respond with a 204 response to a GET request to indicate no captive
|
||||
* portal is present.
|
||||
* 2. This URL must be HTTP as redirect responses are used to find captive portal
|
||||
* sign-in pages. Captive portals cannot respond to HTTPS requests with redirects.
|
||||
*
|
||||
* The system network validation may be using different strategies to detect captive portals,
|
||||
* so this method does not necessarily return a URL used by the system. It only returns a URL
|
||||
* that may be relevant for other components trying to detect captive portals.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
|
||||
@@ -302,6 +302,15 @@
|
||||
Settings.Global.NETWORK_AVOID_BAD_WIFI. This is the default value of that setting. -->
|
||||
<integer translatable="false" name="config_networkAvoidBadWifi">1</integer>
|
||||
|
||||
<!-- The URL returned by ConnectivityManager#getCaptivePortalServerUrl. The actual returned
|
||||
value is controlled by Settings.Global.CAPTIVE_PORTAL_HTTP_URL. This is the default value
|
||||
used if that setting is unset.
|
||||
This is *NOT* a URL that will always be used by the system network validation to detect
|
||||
captive portals: NetworkMonitor may use different strategies and will not necessarily use
|
||||
this URL. NetworkMonitor behaviour should be configured with NetworkStack resource overlays
|
||||
instead. -->
|
||||
<string translatable="false" name="config_networkDefaultCaptivePortalServerUrl">http://connectivitycheck.gstatic.com/generate_204</string>
|
||||
|
||||
<!-- If the hardware supports specially marking packets that caused a wakeup of the
|
||||
main CPU, set this value to the mark used. -->
|
||||
<integer name="config_networkWakeupPacketMark">0</integer>
|
||||
|
||||
@@ -1945,6 +1945,7 @@
|
||||
<java-symbol type="integer" name="config_networkNotifySwitchType" />
|
||||
<java-symbol type="array" name="config_networkNotifySwitches" />
|
||||
<java-symbol type="integer" name="config_networkAvoidBadWifi" />
|
||||
<java-symbol type="string" name="config_networkDefaultCaptivePortalServerUrl" />
|
||||
<java-symbol type="integer" name="config_networkWakeupPacketMark" />
|
||||
<java-symbol type="integer" name="config_networkWakeupPacketMask" />
|
||||
<java-symbol type="bool" name="config_apfDrop802_3Frames" />
|
||||
|
||||
5
packages/NetworkStack/res/values/config.xml
Normal file
5
packages/NetworkStack/res/values/config.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Captive portal http url -->
|
||||
<string name="config_captive_portal_http_url" translatable="false">http://connectivitycheck.gstatic.com/generate_204</string>
|
||||
</resources>
|
||||
@@ -83,6 +83,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.RingBufferIndices;
|
||||
import com.android.internal.util.State;
|
||||
import com.android.internal.util.StateMachine;
|
||||
import com.android.networkstack.R;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
@@ -1710,9 +1711,15 @@ public class NetworkMonitor extends StateMachine {
|
||||
|
||||
/**
|
||||
* Get the captive portal server HTTP URL that is configured on the device.
|
||||
*
|
||||
* NetworkMonitor does not use {@link ConnectivityManager#getCaptivePortalServerUrl()} as
|
||||
* it has its own updatable strategies to detect captive portals. The framework only advises
|
||||
* on one URL that can be used, while NetworkMonitor may implement more complex logic.
|
||||
*/
|
||||
public String getCaptivePortalServerHttpUrl(Context context) {
|
||||
return NetworkMonitorUtils.getCaptivePortalServerHttpUrl(context);
|
||||
final String defaultUrl =
|
||||
context.getResources().getString(R.string.config_captive_portal_http_url);
|
||||
return NetworkMonitorUtils.getCaptivePortalServerHttpUrl(context, defaultUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6692,7 +6692,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
@Override
|
||||
public String getCaptivePortalServerUrl() {
|
||||
enforceConnectivityInternalPermission();
|
||||
return NetworkMonitorUtils.getCaptivePortalServerHttpUrl(mContext);
|
||||
final String defaultUrl = mContext.getResources().getString(
|
||||
R.string.config_networkDefaultCaptivePortalServerUrl);
|
||||
return NetworkMonitorUtils.getCaptivePortalServerHttpUrl(mContext, defaultUrl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -44,18 +44,14 @@ public class NetworkMonitorUtils {
|
||||
public static final String PERMISSION_ACCESS_NETWORK_CONDITIONS =
|
||||
"android.permission.ACCESS_NETWORK_CONDITIONS";
|
||||
|
||||
// TODO: once the URL is a resource overlay, remove and have the resource define the default
|
||||
private static final String DEFAULT_HTTP_URL =
|
||||
"http://connectivitycheck.gstatic.com/generate_204";
|
||||
|
||||
/**
|
||||
* Get the captive portal server HTTP URL that is configured on the device.
|
||||
*/
|
||||
public static String getCaptivePortalServerHttpUrl(Context context) {
|
||||
public static String getCaptivePortalServerHttpUrl(Context context, String defaultUrl) {
|
||||
final String settingUrl = Settings.Global.getString(
|
||||
context.getContentResolver(),
|
||||
Settings.Global.CAPTIVE_PORTAL_HTTP_URL);
|
||||
return settingUrl != null ? settingUrl : DEFAULT_HTTP_URL;
|
||||
return settingUrl != null ? settingUrl : defaultUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user