#include "base/containers/hash_tables.h"
#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
+#include "base/task/cancelable_task_tracker.h"
#include "base/timer/timer.h"
-#include "chrome/browser/common/cancelable_request.h"
#include "chrome/browser/history/visit_database.h"
#include "content/public/browser/session_storage_namespace.h"
#include "net/url_request/url_fetcher_delegate.h"
public:
struct LocalPredictorURLInfo;
struct CandidatePrerenderInfo;
+ // A class simulating a set of URLs prefetched, for statistical purposes.
+ class PrefetchList;
enum Event {
EVENT_CONSTRUCTED = 0,
EVENT_INIT_SCHEDULED = 1,
EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_MERGEABLE = 81,
EVENT_INIT_FAILED_UNENCRYPTED_SYNC_NOT_ENABLED = 82,
EVENT_CONTINUE_PRERENDER_CHECK_EXAMINE_NEXT_URL_NOT_SKIPPED = 83,
- EVENT_PRERENDER_SERIVCE_RETURNED_HINTING_CANDIDATES = 84,
+ EVENT_PRERENDER_SERVICE_RETURNED_HINTING_CANDIDATES = 84,
EVENT_NAMESPACE_MISMATCH_MERGE_RESULT_NAMESPACE_NOT_ALIAS = 85,
EVENT_TAB_HELPER_URL_SEEN_MATCH_ENTRY = 86,
EVENT_TAB_HELPER_URL_SEEN_MATCH_BROWSER_NAVIGATE = 87,
EVENT_TAB_HELPER_URL_SEEN_NAMESPACE_MATCH_ENTRY = 88,
EVENT_TAB_HELPER_URL_SEEN_NAMESPACE_MATCH_BROWSER_NAVIGATE = 89,
+ EVENT_PREFETCH_LIST_ADDED = 90,
+ EVENT_PREFETCH_LIST_SEEN_TABCONTENTS = 91,
+ EVENT_PREFETCH_LIST_SEEN_HISTORY = 92,
+ EVENT_ISSUE_PRERENDER_CALLED = 93,
+ EVENT_ISSUE_PRERENDER_PREFETCH_ENABLED = 94,
+ EVENT_ISSUE_PRERENDER_PREFETCH_ISSUED = 95,
EVENT_MAX_VALUE
};
// Returns an element of issued_prerenders_, which should be replaced
// by a new prerender of the priority indicated, or NULL, if the priority
- // is too low.
- PrerenderProperties* GetIssuedPrerenderSlotForPriority(double priority);
+ // is too low (or if the URL requested is already prerendering).
+ PrerenderProperties* GetIssuedPrerenderSlotForPriority(const GURL& url,
+ double priority);
void ContinuePrerenderCheck(scoped_ptr<CandidatePrerenderInfo> info);
void LogCandidateURLStats(const GURL& url) const;
- void IssuePrerender(scoped_ptr<CandidatePrerenderInfo> info,
- scoped_ptr<LocalPredictorURLInfo> url_info,
- PrerenderProperties* prerender_properties);
+ void IssuePrerender(CandidatePrerenderInfo* info,
+ LocalPredictorURLInfo* url_info);
void MaybeCancelURLFetcher(net::URLFetcher* fetcher);
// Returns true if the parsed response is semantically correct and could
// be fully applied.
// history::VisitDatabaseObserver.
bool is_visit_database_observer_;
- CancelableRequestConsumer history_db_consumer_;
+ base::CancelableTaskTracker history_db_tracker_;
scoped_ptr<std::vector<history::BriefVisitInfo> > visit_history_;
base::WeakPtrFactory<PrerenderLocalPredictor> weak_factory_;
+ scoped_ptr<PrefetchList> prefetch_list_;
+
DISALLOW_COPY_AND_ASSIGN(PrerenderLocalPredictor);
};