Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4f48692 authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN
Browse files

Separate NetworkMonitor/framework portal URL

The framework cannot return URLs used by the updatable NetworkStack,
which may use configurable URLs, changing URLs, or mechanisms not
involving URLs to detect captive portals. NetworkMonitor has already
been using random fallback URLs for a while that do not match the value
returned by ConnectivityManager#getCaptivePortalServerUrl.

With this change, the default value returned by the framework is
configured in framework resources as
config_networkDefaultCaptivePortalServerUrl. NetworkMonitor behavior may
change as it is an updatable component, but the current URL is
configured in NetworkMonitor resources as
config_captive_portal_http_url.

Test: flashed, booted, WiFi and captive portal working
Test: ConnectivityManager#getCaptivePortalServerUrl returns correct
      value.
Bug: 127908503
Change-Id: I371dedc5b22efa909d7fd58e1ebe9b8aaced9780
parent a9451963
Loading
Loading
Loading
Loading

res/values/config.xml

0 → 100644
+5 −0
Original line number Diff line number Diff line
<?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>
 No newline at end of file
+8 −1
Original line number Diff line number Diff line
@@ -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);
        }

        /**