Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |