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

Side by Side Diff: chrome/browser/prerender/prerender_local_predictor.h

Issue 441923002: Add a PrefetchList to Prerender Local Predictor, to emulate how effective (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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) 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 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_LOCAL_PREDICTOR_H_ 5 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_LOCAL_PREDICTOR_H_
6 #define CHROME_BROWSER_PRERENDER_PRERENDER_LOCAL_PREDICTOR_H_ 6 #define CHROME_BROWSER_PRERENDER_PRERENDER_LOCAL_PREDICTOR_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 28 matching lines...) Expand all
39 39
40 // PrerenderLocalPredictor maintains local browsing history to make prerender 40 // PrerenderLocalPredictor maintains local browsing history to make prerender
41 // predictions. 41 // predictions.
42 // At this point, the class is not actually creating prerenders, but just 42 // At this point, the class is not actually creating prerenders, but just
43 // recording timing stats about the effect prerendering would have. 43 // recording timing stats about the effect prerendering would have.
44 class PrerenderLocalPredictor : public history::VisitDatabaseObserver, 44 class PrerenderLocalPredictor : public history::VisitDatabaseObserver,
45 public net::URLFetcherDelegate { 45 public net::URLFetcherDelegate {
46 public: 46 public:
47 struct LocalPredictorURLInfo; 47 struct LocalPredictorURLInfo;
48 struct CandidatePrerenderInfo; 48 struct CandidatePrerenderInfo;
49 // A class simulating a set of URLs prefetched, for statistical purposes.
50 class PrefetchList;
49 enum Event { 51 enum Event {
50 EVENT_CONSTRUCTED = 0, 52 EVENT_CONSTRUCTED = 0,
51 EVENT_INIT_SCHEDULED = 1, 53 EVENT_INIT_SCHEDULED = 1,
52 EVENT_INIT_STARTED = 2, 54 EVENT_INIT_STARTED = 2,
53 EVENT_INIT_FAILED_NO_HISTORY = 3, 55 EVENT_INIT_FAILED_NO_HISTORY = 3,
54 EVENT_INIT_SUCCEEDED = 4, 56 EVENT_INIT_SUCCEEDED = 4,
55 EVENT_ADD_VISIT = 5, 57 EVENT_ADD_VISIT = 5,
56 EVENT_ADD_VISIT_INITIALIZED = 6, 58 EVENT_ADD_VISIT_INITIALIZED = 6,
57 EVENT_ADD_VISIT_PRERENDER_IDENTIFIED = 7, 59 EVENT_ADD_VISIT_PRERENDER_IDENTIFIED = 7,
58 EVENT_ADD_VISIT_RELEVANT_TRANSITION = 8, 60 EVENT_ADD_VISIT_RELEVANT_TRANSITION = 8,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_NOT_MERGEABLE = 80, 132 EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_NOT_MERGEABLE = 80,
131 EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_MERGEABLE = 81, 133 EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_MERGEABLE = 81,
132 EVENT_INIT_FAILED_UNENCRYPTED_SYNC_NOT_ENABLED = 82, 134 EVENT_INIT_FAILED_UNENCRYPTED_SYNC_NOT_ENABLED = 82,
133 EVENT_CONTINUE_PRERENDER_CHECK_EXAMINE_NEXT_URL_NOT_SKIPPED = 83, 135 EVENT_CONTINUE_PRERENDER_CHECK_EXAMINE_NEXT_URL_NOT_SKIPPED = 83,
134 EVENT_PRERENDER_SERIVCE_RETURNED_HINTING_CANDIDATES = 84, 136 EVENT_PRERENDER_SERIVCE_RETURNED_HINTING_CANDIDATES = 84,
135 EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_NAMESPACE_NOT_ALIAS = 85, 137 EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_NAMESPACE_NOT_ALIAS = 85,
136 EVENT_TAB_HELPER_URL_SEEN_MATCH_ENTRY = 86, 138 EVENT_TAB_HELPER_URL_SEEN_MATCH_ENTRY = 86,
137 EVENT_TAB_HELPER_URL_SEEN_MATCH_BROWSER_NAVIGATE = 87, 139 EVENT_TAB_HELPER_URL_SEEN_MATCH_BROWSER_NAVIGATE = 87,
138 EVENT_TAB_HELPER_URL_SEEN_NAMESPACE_MATCH_ENTRY = 88, 140 EVENT_TAB_HELPER_URL_SEEN_NAMESPACE_MATCH_ENTRY = 88,
139 EVENT_TAB_HELPER_URL_SEEN_NAMESPACE_MATCH_BROWSER_NAVIGATE = 89, 141 EVENT_TAB_HELPER_URL_SEEN_NAMESPACE_MATCH_BROWSER_NAVIGATE = 89,
142 EVENT_PREFETCH_LIST_ADDED = 90,
143 EVENT_PREFETCH_LIST_SEEN_TABCONTENTS = 91,
144 EVENT_PREFETCH_LIST_SEEN_HISTORY = 92,
140 EVENT_MAX_VALUE 145 EVENT_MAX_VALUE
141 }; 146 };
142 147
143 // A PrerenderLocalPredictor is owned by the PrerenderManager specified 148 // A PrerenderLocalPredictor is owned by the PrerenderManager specified
144 // in the constructor. It will be destoryed at the time its owning 149 // in the constructor. It will be destoryed at the time its owning
145 // PrerenderManager is destroyed. 150 // PrerenderManager is destroyed.
146 explicit PrerenderLocalPredictor(PrerenderManager* prerender_manager); 151 explicit PrerenderLocalPredictor(PrerenderManager* prerender_manager);
147 virtual ~PrerenderLocalPredictor(); 152 virtual ~PrerenderLocalPredictor();
148 153
149 void Shutdown(); 154 void Shutdown();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 186
182 // Returns an element of issued_prerenders_, which should be replaced 187 // Returns an element of issued_prerenders_, which should be replaced
183 // by a new prerender of the priority indicated, or NULL, if the priority 188 // by a new prerender of the priority indicated, or NULL, if the priority
184 // is too low (or if the URL requested is already prerendering). 189 // is too low (or if the URL requested is already prerendering).
185 PrerenderProperties* GetIssuedPrerenderSlotForPriority(const GURL& url, 190 PrerenderProperties* GetIssuedPrerenderSlotForPriority(const GURL& url,
186 double priority); 191 double priority);
187 192
188 void ContinuePrerenderCheck(scoped_ptr<CandidatePrerenderInfo> info); 193 void ContinuePrerenderCheck(scoped_ptr<CandidatePrerenderInfo> info);
189 void LogCandidateURLStats(const GURL& url) const; 194 void LogCandidateURLStats(const GURL& url) const;
190 void IssuePrerender(CandidatePrerenderInfo* info, 195 void IssuePrerender(CandidatePrerenderInfo* info,
191 LocalPredictorURLInfo* url_info, 196 LocalPredictorURLInfo* url_info);
192 PrerenderProperties* prerender_properties);
193 void MaybeCancelURLFetcher(net::URLFetcher* fetcher); 197 void MaybeCancelURLFetcher(net::URLFetcher* fetcher);
194 // Returns true if the parsed response is semantically correct and could 198 // Returns true if the parsed response is semantically correct and could
195 // be fully applied. 199 // be fully applied.
196 bool ApplyParsedPrerenderServiceResponse( 200 bool ApplyParsedPrerenderServiceResponse(
197 base::DictionaryValue* dict, 201 base::DictionaryValue* dict,
198 CandidatePrerenderInfo* info, 202 CandidatePrerenderInfo* info,
199 bool* hinting_timed_out, 203 bool* hinting_timed_out,
200 bool* hinting_url_lookup_timed_out, 204 bool* hinting_url_lookup_timed_out,
201 bool* candidate_url_lookup_timed_out); 205 bool* candidate_url_lookup_timed_out);
202 void ProcessNamespaceMergeResult( 206 void ProcessNamespaceMergeResult(
(...skipping 18 matching lines...) Expand all
221 225
222 scoped_ptr<PrerenderProperties> current_prerender_; 226 scoped_ptr<PrerenderProperties> current_prerender_;
223 scoped_ptr<PrerenderProperties> last_swapped_in_prerender_; 227 scoped_ptr<PrerenderProperties> last_swapped_in_prerender_;
224 228
225 ScopedVector<PrerenderProperties> issued_prerenders_; 229 ScopedVector<PrerenderProperties> issued_prerenders_;
226 230
227 base::hash_set<int64> url_whitelist_; 231 base::hash_set<int64> url_whitelist_;
228 232
229 base::WeakPtrFactory<PrerenderLocalPredictor> weak_factory_; 233 base::WeakPtrFactory<PrerenderLocalPredictor> weak_factory_;
230 234
235 scoped_ptr<PrefetchList> prefetch_list_;
236
231 DISALLOW_COPY_AND_ASSIGN(PrerenderLocalPredictor); 237 DISALLOW_COPY_AND_ASSIGN(PrerenderLocalPredictor);
232 }; 238 };
233 239
234 } // namespace prerender 240 } // namespace prerender
235 241
236 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_LOCAL_PREDICTOR_H_ 242 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_LOCAL_PREDICTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698