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

Side by Side Diff: chrome/browser/prerender/prerender_manager.cc

Issue 8801012: Add support for content::Referrer to prerender (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/prerender/prerender_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 void PrerenderManager::Shutdown() { 310 void PrerenderManager::Shutdown() {
311 DoShutdown(); 311 DoShutdown();
312 } 312 }
313 313
314 void PrerenderManager::SetPrerenderContentsFactory( 314 void PrerenderManager::SetPrerenderContentsFactory(
315 PrerenderContents::Factory* prerender_contents_factory) { 315 PrerenderContents::Factory* prerender_contents_factory) {
316 DCHECK(CalledOnValidThread()); 316 DCHECK(CalledOnValidThread());
317 prerender_contents_factory_.reset(prerender_contents_factory); 317 prerender_contents_factory_.reset(prerender_contents_factory);
318 } 318 }
319 319
320 bool PrerenderManager::AddPrerenderFromLinkRelPrerender(int process_id, 320 bool PrerenderManager::AddPrerenderFromLinkRelPrerender(
321 int route_id, 321 int process_id,
322 const GURL& url, 322 int route_id,
323 const GURL& referrer) { 323 const GURL& url,
324 const content::Referrer& referrer) {
324 std::pair<int, int> child_route_id_pair = std::make_pair(process_id, 325 std::pair<int, int> child_route_id_pair = std::make_pair(process_id,
325 route_id); 326 route_id);
326 327
327 return AddPrerender(ORIGIN_LINK_REL_PRERENDER, child_route_id_pair, 328 return AddPrerender(ORIGIN_LINK_REL_PRERENDER, child_route_id_pair,
328 url, referrer, NULL); 329 url, referrer, NULL);
329 } 330 }
330 331
331 bool PrerenderManager::AddPrerenderFromOmnibox( 332 bool PrerenderManager::AddPrerenderFromOmnibox(
332 const GURL& url, 333 const GURL& url,
333 SessionStorageNamespace* session_storage_namespace) { 334 SessionStorageNamespace* session_storage_namespace) {
334 DCHECK(session_storage_namespace); 335 DCHECK(session_storage_namespace);
335 if (!IsOmniboxEnabled(profile_)) 336 if (!IsOmniboxEnabled(profile_))
336 return false; 337 return false;
337 338
338 Origin origin = ORIGIN_MAX; 339 Origin origin = ORIGIN_MAX;
339 switch (GetOmniboxHeuristicToUse()) { 340 switch (GetOmniboxHeuristicToUse()) {
340 case OMNIBOX_HEURISTIC_EXACT: 341 case OMNIBOX_HEURISTIC_EXACT:
341 origin = ORIGIN_OMNIBOX_EXACT; 342 origin = ORIGIN_OMNIBOX_EXACT;
342 break; 343 break;
343 344
344 case OMNIBOX_HEURISTIC_EXACT_FULL: 345 case OMNIBOX_HEURISTIC_EXACT_FULL:
345 origin = ORIGIN_OMNIBOX_EXACT_FULL; 346 origin = ORIGIN_OMNIBOX_EXACT_FULL;
346 break; 347 break;
347 348
348 default: 349 default:
349 NOTREACHED(); 350 NOTREACHED();
350 break; 351 break;
351 }; 352 };
352 return AddPrerender(origin, std::make_pair(-1, -1), url, GURL(), 353 return AddPrerender(origin, std::make_pair(-1, -1), url, content::Referrer(),
353 session_storage_namespace); 354 session_storage_namespace);
354 } 355 }
355 356
356 bool PrerenderManager::AddPrerender( 357 bool PrerenderManager::AddPrerender(
357 Origin origin, 358 Origin origin,
358 const std::pair<int, int>& child_route_id_pair, 359 const std::pair<int, int>& child_route_id_pair,
359 const GURL& url_arg, 360 const GURL& url_arg,
360 const GURL& referrer, 361 const content::Referrer& referrer,
361 SessionStorageNamespace* session_storage_namespace) { 362 SessionStorageNamespace* session_storage_namespace) {
362 DCHECK(CalledOnValidThread()); 363 DCHECK(CalledOnValidThread());
363 364
364 if (origin == ORIGIN_LINK_REL_PRERENDER && IsGoogleSearchResultURL(referrer)) 365 if (origin == ORIGIN_LINK_REL_PRERENDER &&
366 IsGoogleSearchResultURL(referrer.url)) {
365 origin = ORIGIN_GWS_PRERENDER; 367 origin = ORIGIN_GWS_PRERENDER;
368 }
366 369
367 // If the referring page is prerendering, defer the prerender. 370 // If the referring page is prerendering, defer the prerender.
368 std::list<PrerenderContentsData>::iterator source_prerender = 371 std::list<PrerenderContentsData>::iterator source_prerender =
369 FindPrerenderContentsForChildRouteIdPair(child_route_id_pair); 372 FindPrerenderContentsForChildRouteIdPair(child_route_id_pair);
370 if (source_prerender != prerender_list_.end()) { 373 if (source_prerender != prerender_list_.end()) {
371 source_prerender->contents_->AddPendingPrerender( 374 source_prerender->contents_->AddPendingPrerender(
372 origin, url_arg, referrer); 375 origin, url_arg, referrer);
373 return true; 376 return true;
374 } 377 }
375 378
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 } 766 }
764 767
765 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const { 768 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const {
766 DCHECK(CalledOnValidThread()); 769 DCHECK(CalledOnValidThread());
767 base::Time now = GetCurrentTime(); 770 base::Time now = GetCurrentTime();
768 return (now - start < config_.max_age); 771 return (now - start < config_.max_age);
769 } 772 }
770 773
771 PrerenderContents* PrerenderManager::CreatePrerenderContents( 774 PrerenderContents* PrerenderManager::CreatePrerenderContents(
772 const GURL& url, 775 const GURL& url,
773 const GURL& referrer, 776 const content::Refeerrer& referrer,
cbentzel 2011/12/05 18:03:29 BUG: Referrer
jochen (gone - plz use gerrit) 2011/12/05 20:46:35 Done.
774 Origin origin, 777 Origin origin,
775 uint8 experiment_id) { 778 uint8 experiment_id) {
776 DCHECK(CalledOnValidThread()); 779 DCHECK(CalledOnValidThread());
777 return prerender_contents_factory_->CreatePrerenderContents( 780 return prerender_contents_factory_->CreatePrerenderContents(
778 this, prerender_tracker_, profile_, url, 781 this, prerender_tracker_, profile_, url,
779 referrer, origin, experiment_id); 782 referrer, origin, experiment_id);
780 } 783 }
781 784
782 bool PrerenderManager::IsPendingDelete(PrerenderContents* entry) const { 785 bool PrerenderManager::IsPendingDelete(PrerenderContents* entry) const {
783 DCHECK(CalledOnValidThread()); 786 DCHECK(CalledOnValidThread());
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 if (!render_process_host || !render_process_host->GetBrowserContext()) 1145 if (!render_process_host || !render_process_host->GetBrowserContext())
1143 return NULL; 1146 return NULL;
1144 Profile* profile = Profile::FromBrowserContext( 1147 Profile* profile = Profile::FromBrowserContext(
1145 render_process_host->GetBrowserContext()); 1148 render_process_host->GetBrowserContext());
1146 if (!profile) 1149 if (!profile)
1147 return NULL; 1150 return NULL;
1148 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); 1151 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile);
1149 } 1152 }
1150 1153
1151 } // namespace prerender 1154 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698