Index: chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java |
index a0b751553e38a4e22ce2639a2539a909f8fbdf56..702ebedd9a0a4780208e253a6a5351d06894d910 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java |
@@ -5,6 +5,7 @@ |
package org.chromium.chrome.browser; |
import android.content.Context; |
+import android.os.AsyncTask; |
import android.view.ContextThemeWrapper; |
import android.view.LayoutInflater; |
import android.view.View; |
@@ -12,10 +13,16 @@ import android.view.ViewGroup; |
import android.widget.FrameLayout; |
import org.chromium.base.ThreadUtils; |
+import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler; |
import org.chromium.chrome.browser.profiles.Profile; |
import org.chromium.content_public.browser.WebContents; |
+import java.net.InetAddress; |
+import java.net.MalformedURLException; |
+import java.net.URL; |
+import java.net.UnknownHostException; |
+ |
/** |
* This class is a singleton that holds utilities for warming up Chrome and prerendering urls |
* without creating the Activity. |
@@ -155,4 +162,39 @@ public final class WarmupManager { |
mMainView = null; |
return mainView; |
} |
+ |
+ /** |
+ * Launches a background DNS query for a given URL. |
+ * |
+ * @param urlString URL from which the domain to query is extracted. |
+ */ |
+ private static void prefetchDnsForUrlInBackground(String urlString) { |
+ new AsyncTask<String, Void, Void>() { |
+ @Override |
+ protected Void doInBackground(String... params) { |
+ try { |
+ URL url = new URL(params[0]); |
+ InetAddress.getByName(url.getHost()); |
+ } catch (MalformedURLException e) { |
+ // We don't do anything with the result of the resolution, |
+ // it is only here to warm the DNS cache. So ignoring all |
+ // exceptions is fine. |
+ } catch (UnknownHostException e) { |
+ // Idem |
+ } |
+ return null; |
+ } |
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, urlString); |
+ } |
+ |
+ /** Launches a background DNS query for a given URL if the data reduction proxy is not in use. |
+ * |
+ * @param context The Application context. |
+ * @param url URL from which the domain to query is extracted. |
+ */ |
+ public static void maybePrefetchDnsForUrlInBackground(Context context, String url) { |
+ if (!DataReductionProxySettings.isEnabledBeforeNativeLoad(context)) { |
+ prefetchDnsForUrlInBackground(url); |
+ } |
+ } |
} |