[go: up one dir, main page]

Preconnect to litepages on Chrome startup

This CL will be merged to 76 and replaced with a more robust prober in
77.

(cherry picked from commit c530348dc61d1e396941e930a02942d48bdb36c5)

Bug: 973916
Change-Id: I0661d99769f018c5b2fd93e22e52f6fc675e4fad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1658709
Reviewed-by: Tarun Bansal <tbansal@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#668917}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1658938
Reviewed-by: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/branch-heads/3809@{#305}
Cr-Branched-From: d82dec1a818f378c464ba307ddd9c92133eac355-refs/heads/master@{#665002}
diff --git a/chrome/browser/previews/previews_lite_page_decider.cc b/chrome/browser/previews/previews_lite_page_decider.cc
index 58012c5..2154633 100644
--- a/chrome/browser/previews/previews_lite_page_decider.cc
+++ b/chrome/browser/previews/previews_lite_page_decider.cc
@@ -15,6 +15,8 @@
 #include "build/build_config.h"
 #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h"
 #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h"
+#include "chrome/browser/predictors/loading_predictor.h"
+#include "chrome/browser/predictors/loading_predictor_factory.h"
 #include "chrome/browser/previews/previews_lite_page_infobar_delegate.h"
 #include "chrome/browser/previews/previews_lite_page_navigation_throttle.h"
 #include "chrome/browser/previews/previews_service.h"
@@ -82,6 +84,19 @@
 
   DCHECK_GE(kMaxBlacklistEntries, dict->DictSize());
 }
+
+void PreconnectToLitePagesServer(content::BrowserContext* browser_context) {
+  predictors::LoadingPredictor* loading_predictor =
+      predictors::LoadingPredictorFactory::GetForProfile(
+          Profile::FromBrowserContext(browser_context));
+
+  if (!loading_predictor || !loading_predictor->preconnect_manager())
+    return;
+
+  loading_predictor->preconnect_manager()->StartPreconnectUrl(
+      previews::params::GetLitePagePreviewsDomainURL(), true);
+}
+
 }  // namespace
 
 // This WebContentsObserver watches the rest of the current navigation shows a
@@ -152,6 +167,11 @@
 
   DCHECK(!browser_context->IsOffTheRecord());
 
+  // TODO(crbug.com/971918): Remove once a more robust prober is setup.
+  if (drp_settings->IsDataReductionProxyEnabled()) {
+    PreconnectToLitePagesServer(browser_context);
+  }
+
   pref_service_ = Profile::FromBrowserContext(browser_context)->GetPrefs();
   host_bypass_blacklist_ =
       pref_service_->GetDictionary(kHostBlacklist)->CreateDeepCopy();