Chromium Code Reviews| Index: chrome/browser/prerender/prerender_local_predictor.h |
| =================================================================== |
| --- chrome/browser/prerender/prerender_local_predictor.h (revision 198752) |
| +++ chrome/browser/prerender/prerender_local_predictor.h (working copy) |
| @@ -8,6 +8,7 @@ |
| #include <vector> |
| #include "base/hash_tables.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/timer.h" |
| #include "chrome/browser/common/cancelable_request.h" |
| #include "chrome/browser/history/visit_database.h" |
| @@ -15,8 +16,17 @@ |
| class HistoryService; |
| +namespace content { |
| +class SessionStorageNamespace; |
| +} |
| + |
| +namespace gfx { |
| +class Size; |
| +} |
| + |
| namespace prerender { |
| +class PrerenderHandle; |
| class PrerenderManager; |
| // PrerenderLocalPredictor maintains local browsing history to make prerender |
| @@ -25,6 +35,8 @@ |
| // recording timing stats about the effect prerendering would have. |
| class PrerenderLocalPredictor : public history::VisitDatabaseObserver { |
| public: |
| + struct LocalPredictorURLInfo; |
|
Shishir
2013/05/08 20:19:20
Can you make these structs private? Looks like onl
tburkard
2013/05/08 20:35:47
can't be made private, used by anonymous helper ro
|
| + struct LocalPredictorURLLookupInfo; |
| enum Event { |
| EVENT_CONSTRUCTED = 0, |
| EVENT_INIT_SCHEDULED = 1, |
| @@ -54,6 +66,24 @@ |
| EVENT_PRERENDER_URL_LOOKUP_RESULT_ON_WHITELIST_ROOT_PAGE = 25, |
| EVENT_PRERENDER_URL_LOOKUP_RESULT_EXTENDED_ROOT_PAGE = 26, |
| EVENT_PRERENDER_URL_LOOKUP_RESULT_ROOT_PAGE_HTTP = 27, |
| + EVENT_PRERENDER_URL_LOOKUP_FAILED = 28, |
| + EVENT_PRERENDER_URL_LOOKUP_NO_SOURCE_WEBCONTENTS_FOUND = 29, |
| + EVENT_PRERENDER_URL_LOOKUP_NO_LOGGED_IN_TABLE_FOUND = 30, |
| + EVENT_PRERENDER_URL_LOOKUP_ISSUING_LOGGED_IN_LOOKUP = 31, |
| + EVENT_CONTINUE_PRERENDER_CHECK_STARTED = 32, |
| + EVENT_CONTINUE_PRERENDER_CHECK_NO_URL = 33, |
| + EVENT_CONTINUE_PRERENDER_CHECK_PRIORITY_TOO_LOW = 34, |
| + EVENT_CONTINUE_PRERENDER_CHECK_URLS_IDENTICAL_BUT_FRAGMENT = 35, |
| + EVENT_CONTINUE_PRERENDER_CHECK_HTTPS = 36, |
| + EVENT_CONTINUE_PRERENDER_CHECK_ROOT_PAGE = 37, |
| + EVENT_CONTINUE_PRERENDER_CHECK_LOGOUT_URL = 38, |
| + EVENT_CONTINUE_PRERENDER_CHECK_LOGIN_URL = 39, |
| + EVENT_CONTINUE_PRERENDER_CHECK_NOT_LOGGED_IN = 40, |
| + EVENT_CONTINUE_PRERENDER_CHECK_FALLTHROUGH_NOT_PRERENDERING = 41, |
| + EVENT_CONTINUE_PRERENDER_CHECK_ISSUING_PRERENDER = 42, |
| + EVENT_ISSUING_PRERENDER = 43, |
| + EVENT_NO_PRERENDER_CANDIDATES = 44, |
| + EVENT_GOT_HISTORY_ISSUING_LOOKUP = 45, |
| EVENT_MAX_VALUE |
| }; |
| @@ -68,7 +98,7 @@ |
| // history::VisitDatabaseObserver implementation |
| virtual void OnAddVisit(const history::BriefVisitInfo& info) OVERRIDE; |
| - void OnLookupURL(history::URLID url_id, double priority, const GURL& url); |
| + void OnLookupURL(scoped_ptr<LocalPredictorURLLookupInfo> info); |
|
Shishir
2013/05/08 20:19:20
make private.
tburkard
2013/05/08 20:35:47
Done.
|
| void OnGetInitialVisitHistory( |
| scoped_ptr<std::vector<history::BriefVisitInfo> > visit_history); |
| @@ -76,11 +106,11 @@ |
| void OnPLTEventForURL(const GURL& url, base::TimeDelta page_load_time); |
| private: |
| - struct PrerenderData; |
| + struct PrerenderProperties; |
| HistoryService* GetHistoryIfExists() const; |
| void Init(); |
| - bool IsPrerenderStillValid(PrerenderData* prerender) const; |
| - bool DoesPrerenderMatchPLTRecord(PrerenderData* prerender, |
| + bool IsPrerenderStillValid(PrerenderProperties* prerender) const; |
| + bool DoesPrerenderMatchPLTRecord(PrerenderProperties* prerender, |
| const GURL& url, |
| base::TimeDelta plt) const; |
| void RecordEvent(Event event) const; |
| @@ -90,6 +120,16 @@ |
| // and based on what its priority is). |
| bool ShouldReplaceCurrentPrerender(double priority) const; |
| + void ContinuePrerenderCheck( |
| + scoped_refptr<content::SessionStorageNamespace> session_storage_namespace, |
| + scoped_ptr<gfx::Size> size, |
| + scoped_ptr<LocalPredictorURLLookupInfo> info); |
| + void LogCandidateURLStats(const GURL& url) const; |
| + void IssuePrerender(scoped_refptr<content::SessionStorageNamespace> |
| + session_storage_namespace, |
| + scoped_ptr<gfx::Size> size, |
| + scoped_ptr<LocalPredictorURLInfo> info); |
| + |
| PrerenderManager* prerender_manager_; |
| base::OneShotTimer<PrerenderLocalPredictor> timer_; |
| @@ -105,11 +145,16 @@ |
| scoped_ptr<std::vector<history::BriefVisitInfo> > visit_history_; |
| - scoped_ptr<PrerenderData> current_prerender_; |
| - scoped_ptr<PrerenderData> last_swapped_in_prerender_; |
| + scoped_ptr<PrerenderProperties> current_prerender_; |
| + scoped_ptr<PrerenderProperties> last_swapped_in_prerender_; |
| + scoped_ptr<PrerenderHandle> prerender_handle_; |
| + double current_prerender_priority_; |
| + |
| base::hash_set<int64> url_whitelist_; |
| + base::WeakPtrFactory<PrerenderLocalPredictor> weak_factory_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(PrerenderLocalPredictor); |
| }; |