Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: chrome/browser/net/predictor.cc

Issue 1131293004: Add cross origin to Blink-driven preconnect (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added test and switch to a boolean Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/predictor.h" 5 #include "chrome/browser/net/predictor.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <set> 9 #include <set>
10 #include <sstream> 10 #include <sstream>
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 // pool. Currently, we just do a connect, which MAY be reset if we 255 // pool. Currently, we just do a connect, which MAY be reset if we
256 // don't use it in 10 secondes!!! As a result, we may do more 256 // don't use it in 10 secondes!!! As a result, we may do more
257 // connections, and actually cost the server more than if we did a real 257 // connections, and actually cost the server more than if we did a real
258 // get with a fake request (/gen_204 might be the good path on Google). 258 // get with a fake request (/gen_204 might be the good path on Google).
259 const int kMaxSearchKeepaliveSeconds(10); 259 const int kMaxSearchKeepaliveSeconds(10);
260 if ((now - last_omnibox_preconnect_).InSeconds() < 260 if ((now - last_omnibox_preconnect_).InSeconds() <
261 kMaxSearchKeepaliveSeconds) 261 kMaxSearchKeepaliveSeconds)
262 return; // We've done a preconnect recently. 262 return; // We've done a preconnect recently.
263 last_omnibox_preconnect_ = now; 263 last_omnibox_preconnect_ = now;
264 const int kConnectionsNeeded = 1; 264 const int kConnectionsNeeded = 1;
265 PreconnectUrl( 265 PreconnectUrl(CanonicalizeUrl(url),
266 CanonicalizeUrl(url), GURL(), motivation, kConnectionsNeeded); 266 GURL(),
267 motivation,
268 kConnectionsNeeded);
267 return; // Skip pre-resolution, since we'll open a connection. 269 return; // Skip pre-resolution, since we'll open a connection.
268 } 270 }
269 } else { 271 } else {
270 consecutive_omnibox_preconnect_count_ = 0; 272 consecutive_omnibox_preconnect_count_ = 0;
271 } 273 }
272 } 274 }
273 275
274 // Fall through and consider pre-resolution. 276 // Fall through and consider pre-resolution.
275 277
276 // Omnibox tends to call in pairs (just a few milliseconds apart), and we 278 // Omnibox tends to call in pairs (just a few milliseconds apart), and we
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 // a frequent occurrence on Android. 832 // a frequent occurrence on Android.
831 TrimReferrersNow(); 833 TrimReferrersNow();
832 SerializeReferrers(referral_list); 834 SerializeReferrers(referral_list);
833 835
834 completion->Signal(); 836 completion->Signal();
835 } 837 }
836 838
837 void Predictor::PreconnectUrl(const GURL& url, 839 void Predictor::PreconnectUrl(const GURL& url,
838 const GURL& first_party_for_cookies, 840 const GURL& first_party_for_cookies,
839 UrlInfo::ResolutionMotivation motivation, 841 UrlInfo::ResolutionMotivation motivation,
840 int count) { 842 int count,
843 bool isAnonymous) {
841 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || 844 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
842 BrowserThread::CurrentlyOn(BrowserThread::IO)); 845 BrowserThread::CurrentlyOn(BrowserThread::IO));
843 846
844 if (BrowserThread::CurrentlyOn(BrowserThread::IO)) { 847 if (BrowserThread::CurrentlyOn(BrowserThread::IO)) {
845 PreconnectUrlOnIOThread(url, first_party_for_cookies, motivation, count); 848 PreconnectUrlOnIOThread(url,
849 first_party_for_cookies,
850 motivation,
851 count,
852 isAnonymous);
846 } else { 853 } else {
847 BrowserThread::PostTask( 854 BrowserThread::PostTask(
848 BrowserThread::IO, 855 BrowserThread::IO,
849 FROM_HERE, 856 FROM_HERE,
850 base::Bind(&Predictor::PreconnectUrlOnIOThread, 857 base::Bind(&Predictor::PreconnectUrlOnIOThread,
851 base::Unretained(this), url, first_party_for_cookies, 858 base::Unretained(this), url, first_party_for_cookies,
852 motivation, count)); 859 motivation, count, isAnonymous));
853 } 860 }
854 } 861 }
855 862
856 void Predictor::PreconnectUrlOnIOThread( 863 void Predictor::PreconnectUrlOnIOThread(
857 const GURL& original_url, 864 const GURL& original_url,
858 const GURL& first_party_for_cookies, 865 const GURL& first_party_for_cookies,
859 UrlInfo::ResolutionMotivation motivation, 866 UrlInfo::ResolutionMotivation motivation,
860 int count) { 867 int count,
868 bool isAnonymous) {
861 // Skip the HSTS redirect. 869 // Skip the HSTS redirect.
862 GURL url = GetHSTSRedirectOnIOThread(original_url); 870 GURL url = GetHSTSRedirectOnIOThread(original_url);
863 871
864 if (observer_) { 872 if (observer_) {
865 observer_->OnPreconnectUrl( 873 observer_->OnPreconnectUrl(
866 url, first_party_for_cookies, motivation, count); 874 url, first_party_for_cookies, motivation, count);
867 } 875 }
868 876
869 PreconnectOnIOThread(url, 877 PreconnectOnIOThread(url,
870 first_party_for_cookies, 878 first_party_for_cookies,
871 motivation, 879 motivation,
872 count, 880 count,
873 url_request_context_getter_.get()); 881 url_request_context_getter_.get(),
882 isAnonymous);
874 } 883 }
875 884
876 void Predictor::PredictFrameSubresources(const GURL& url, 885 void Predictor::PredictFrameSubresources(const GURL& url,
877 const GURL& first_party_for_cookies) { 886 const GURL& first_party_for_cookies) {
878 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || 887 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
879 BrowserThread::CurrentlyOn(BrowserThread::IO)); 888 BrowserThread::CurrentlyOn(BrowserThread::IO));
880 if (!predictor_enabled_) 889 if (!predictor_enabled_)
881 return; 890 return;
882 if (!CanPreresolveAndPreconnect()) 891 if (!CanPreresolveAndPreconnect())
883 return; 892 return;
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
1316 } 1325 }
1317 1326
1318 void SimplePredictor::ShutdownOnUIThread() { 1327 void SimplePredictor::ShutdownOnUIThread() {
1319 SetShutdown(true); 1328 SetShutdown(true);
1320 } 1329 }
1321 1330
1322 bool SimplePredictor::CanPrefetchAndPrerender() const { return true; } 1331 bool SimplePredictor::CanPrefetchAndPrerender() const { return true; }
1323 bool SimplePredictor::CanPreresolveAndPreconnect() const { return true; } 1332 bool SimplePredictor::CanPreresolveAndPreconnect() const { return true; }
1324 1333
1325 } // namespace chrome_browser_net 1334 } // namespace chrome_browser_net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698