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

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

Issue 7517016: Add prerender to ChromeOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add prerender_condition.h and OVERRIDE Created 9 years, 5 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 | 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/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/metrics/field_trial.h" 11 #include "base/metrics/field_trial.h"
12 #include "base/metrics/histogram.h" 12 #include "base/metrics/histogram.h"
13 #include "base/stl_util.h"
13 #include "base/time.h" 14 #include "base/time.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "base/utf_string_conversions.h" 16 #include "base/utf_string_conversions.h"
16 #include "chrome/browser/browser_process.h" 17 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/favicon/favicon_tab_helper.h" 18 #include "chrome/browser/favicon/favicon_tab_helper.h"
19 #include "chrome/browser/prerender/prerender_condition.h"
18 #include "chrome/browser/prerender/prerender_contents.h" 20 #include "chrome/browser/prerender/prerender_contents.h"
19 #include "chrome/browser/prerender/prerender_final_status.h" 21 #include "chrome/browser/prerender/prerender_final_status.h"
20 #include "chrome/browser/prerender/prerender_history.h" 22 #include "chrome/browser/prerender/prerender_history.h"
21 #include "chrome/browser/prerender/prerender_observer.h" 23 #include "chrome/browser/prerender/prerender_observer.h"
22 #include "chrome/browser/prerender/prerender_tracker.h" 24 #include "chrome/browser/prerender/prerender_tracker.h"
23 #include "chrome/browser/prerender/prerender_util.h" 25 #include "chrome/browser/prerender/prerender_util.h"
24 #include "chrome/browser/profiles/profile.h" 26 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 27 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
26 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper_delegate.h" 28 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper_delegate.h"
27 #include "chrome/common/chrome_switches.h" 29 #include "chrome/common/chrome_switches.h"
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 runnable_method_factory_(this), 211 runnable_method_factory_(this),
210 prerender_history_(new PrerenderHistory(kHistoryLength)) { 212 prerender_history_(new PrerenderHistory(kHistoryLength)) {
211 // There are some assumptions that the PrerenderManager is on the UI thread. 213 // There are some assumptions that the PrerenderManager is on the UI thread.
212 // Any other checks simply make sure that the PrerenderManager is accessed on 214 // Any other checks simply make sure that the PrerenderManager is accessed on
213 // the same thread that it was created on. 215 // the same thread that it was created on.
214 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 216 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
215 } 217 }
216 218
217 PrerenderManager::~PrerenderManager() { 219 PrerenderManager::~PrerenderManager() {
218 DestroyAllContents(FINAL_STATUS_MANAGER_SHUTDOWN); 220 DestroyAllContents(FINAL_STATUS_MANAGER_SHUTDOWN);
221 STLDeleteElements(&prerender_conditions_);
219 } 222 }
220 223
221 void PrerenderManager::SetPrerenderContentsFactory( 224 void PrerenderManager::SetPrerenderContentsFactory(
222 PrerenderContents::Factory* prerender_contents_factory) { 225 PrerenderContents::Factory* prerender_contents_factory) {
223 DCHECK(CalledOnValidThread()); 226 DCHECK(CalledOnValidThread());
224 prerender_contents_factory_.reset(prerender_contents_factory); 227 prerender_contents_factory_.reset(prerender_contents_factory);
225 } 228 }
226 229
227 bool PrerenderManager::AddPrerenderFromLinkRelPrerender(int process_id, 230 bool PrerenderManager::AddPrerenderFromLinkRelPrerender(int process_id,
228 int route_id, 231 int route_id,
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 prerender_manager->IsTabContentsPrerendered(tab_contents)))) { 690 prerender_manager->IsTabContentsPrerendered(tab_contents)))) {
688 RECORD_PLT("PerceivedPLTMatched", perceived_page_load_time); 691 RECORD_PLT("PerceivedPLTMatched", perceived_page_load_time);
689 } else { 692 } else {
690 if (within_window) 693 if (within_window)
691 RECORD_PLT("PerceivedPLTWindowNotMatched", perceived_page_load_time); 694 RECORD_PLT("PerceivedPLTWindowNotMatched", perceived_page_load_time);
692 } 695 }
693 } 696 }
694 697
695 bool PrerenderManager::is_enabled() const { 698 bool PrerenderManager::is_enabled() const {
696 DCHECK(CalledOnValidThread()); 699 DCHECK(CalledOnValidThread());
697 return enabled_; 700 if (!enabled_)
701 return false;
702 for (std::list<const PrerenderCondition*>::const_iterator it =
703 prerender_conditions_.begin();
704 it != prerender_conditions_.end();
705 ++it) {
706 const PrerenderCondition* condition = *it;
707 if (!condition->CanPrerender())
708 return false;
709 }
710 return true;
698 } 711 }
699 712
700 void PrerenderManager::set_enabled(bool enabled) { 713 void PrerenderManager::set_enabled(bool enabled) {
701 DCHECK(CalledOnValidThread()); 714 DCHECK(CalledOnValidThread());
702 enabled_ = enabled; 715 enabled_ = enabled;
703 } 716 }
704 717
718 void PrerenderManager::AddCondition(const PrerenderCondition* condition) {
719 prerender_conditions_.push_back(condition);
720 }
721
705 PrerenderContents* PrerenderManager::FindEntry(const GURL& url) { 722 PrerenderContents* PrerenderManager::FindEntry(const GURL& url) {
706 DCHECK(CalledOnValidThread()); 723 DCHECK(CalledOnValidThread());
707 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); 724 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin();
708 it != prerender_list_.end(); 725 it != prerender_list_.end();
709 ++it) { 726 ++it) {
710 if (it->contents_->MatchesURL(url, NULL)) 727 if (it->contents_->MatchesURL(url, NULL))
711 return it->contents_; 728 return it->contents_;
712 } 729 }
713 // Entry not found. 730 // Entry not found.
714 return NULL; 731 return NULL;
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 return last_origin_; 1099 return last_origin_;
1083 } 1100 }
1084 1101
1085 bool PrerenderManager::IsOriginExperimentWash() const { 1102 bool PrerenderManager::IsOriginExperimentWash() const {
1086 if (!WithinWindow()) 1103 if (!WithinWindow())
1087 return false; 1104 return false;
1088 return origin_experiment_wash_; 1105 return origin_experiment_wash_;
1089 } 1106 }
1090 1107
1091 } // namespace prerender 1108 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698