diff options
| author | 2018-04-26 12:04:40 +0900 | |
|---|---|---|
| committer | 2018-04-27 11:51:43 +0900 | |
| commit | c820cb83bb031ad1d438fe7c92f19c69ebe87097 (patch) | |
| tree | d2ba66815871fc55273ef5996f6c899638bd2900 | |
| parent | 640d4d5f43e17d66f4800a02d3e5706bb4a1ca8a (diff) | |
Fix carrier app CaptivePortalLoginActivity probes to bypass Private DNS
Test: as follows
- built
- flashed
- booted
- runtest frameworks-net passes
Bug: 64133961
Bug: 77140445
Bug: 78548486
Merged-In: Ibf958d9f4cba30e1900e209698fbe2ecccd5d7ac
Merged-In: Id8d1d882e056156c4b3dbf252fa1a231a4f87fdc
Change-Id: I48c60fd6711dcf5406fba62a3f88aea12183ff87
(cherry picked from commit 6a1707a0e7ccb52e012bb62f8c3aa76b8ffda52f)
| -rw-r--r-- | packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java index 7479d9aa773b..b1933373a8e6 100644 --- a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java +++ b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java @@ -111,13 +111,11 @@ public class CaptivePortalLoginActivity extends Activity { mWebView.setWebViewClient(mWebViewClient); mWebView.setWebChromeClient(new MyWebChromeClient()); - mNetwork = getNetworkForCaptivePortal(); - if (mNetwork == null) { + final Network network = getNetworkForCaptivePortal(); + if (network == null) { requestNetworkForCaptivePortal(); } else { - mCm.bindProcessToNetwork(mNetwork); - mCm.setProcessDefaultNetworkForHostResolution( - ResolvUtil.getNetworkWithUseLocalNameserversFlag(mNetwork)); + setNetwork(network); // Start initial page load so WebView finishes loading proxy settings. // Actual load of mUrl is initiated by MyWebViewClient. mWebView.loadData("", "text/html", null); @@ -159,6 +157,15 @@ public class CaptivePortalLoginActivity extends Activity { super.onDestroy(); } + private void setNetwork(Network network) { + if (network != null) { + mCm.bindProcessToNetwork(network); + mCm.setProcessDefaultNetworkForHostResolution( + ResolvUtil.getNetworkWithUseLocalNameserversFlag(network)); + } + mNetwork = network; + } + // Find WebView's proxy BroadcastReceiver and prompt it to read proxy system properties. private void setWebViewProxy() { LoadedApk loadedApk = getApplication().mLoadedApk; @@ -235,6 +242,7 @@ public class CaptivePortalLoginActivity extends Activity { private void testForCaptivePortal() { mTestingThread = new Thread(new Runnable() { public void run() { + final Network network = ResolvUtil.makeNetworkWithPrivateDnsBypass(mNetwork); // Give time for captive portal to open. try { Thread.sleep(1000); @@ -245,7 +253,7 @@ public class CaptivePortalLoginActivity extends Activity { int httpResponseCode = 500; int oldTag = TrafficStats.getAndSetThreadStatsTag(TrafficStats.TAG_SYSTEM_PROBE); try { - urlConnection = (HttpURLConnection) mNetwork.openConnection( + urlConnection = (HttpURLConnection) network.openConnection( new URL(mCm.getCaptivePortalServerUrl())); urlConnection.setInstanceFollowRedirects(false); urlConnection.setConnectTimeout(SOCKET_TIMEOUT_MS); @@ -292,8 +300,7 @@ public class CaptivePortalLoginActivity extends Activity { @Override public void onAvailable(Network network) { if (DBG) logd("Network available: " + network); - mCm.bindProcessToNetwork(network); - mNetwork = network; + setNetwork(network); runOnUiThreadIfNotFinishing(() -> { if (mReload) { mWebView.reload(); |