Index: chrome/browser/autocomplete/network_action_predictor.h |
diff --git a/chrome/browser/autocomplete/network_action_predictor.h b/chrome/browser/autocomplete/network_action_predictor.h |
deleted file mode 100644 |
index 0cf02a4d8b70079e71c90bedb14fc85c94b91a80..0000000000000000000000000000000000000000 |
--- a/chrome/browser/autocomplete/network_action_predictor.h |
+++ /dev/null |
@@ -1,206 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_AUTOCOMPLETE_NETWORK_ACTION_PREDICTOR_H_ |
-#define CHROME_BROWSER_AUTOCOMPLETE_NETWORK_ACTION_PREDICTOR_H_ |
-#pragma once |
- |
-#include <map> |
- |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/string16.h" |
-#include "chrome/browser/autocomplete/network_action_predictor_database.h" |
-#include "chrome/browser/history/history_types.h" |
-#include "chrome/browser/profiles/profile_keyed_service.h" |
-#include "content/public/browser/notification_observer.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "googleurl/src/gurl.h" |
- |
-struct AutocompleteLog; |
-struct AutocompleteMatch; |
-class AutocompleteResult; |
-class HistoryService; |
-class Profile; |
- |
-namespace history { |
-class URLDatabase; |
-} |
- |
-// This class is responsible for determining the correct predictive network |
-// action to take given for a given AutocompleteMatch and entered text. it uses |
-// a NetworkActionPredictorDatabase accessed asynchronously on the DB thread to |
-// permanently store the data used to make predictions, and keeps local caches |
-// of that data to be able to make predictions synchronously on the UI thread |
-// where it lives. It can be accessed as a weak pointer so that it can safely |
-// use PostTaskAndReply without fear of crashes if it is destroyed before the |
-// reply triggers. This is necessary during initialization. |
-class NetworkActionPredictor |
- : public ProfileKeyedService, |
- public content::NotificationObserver, |
- public base::SupportsWeakPtr<NetworkActionPredictor> { |
- public: |
- enum Action { |
- ACTION_PRERENDER = 0, |
- ACTION_PRECONNECT, |
- ACTION_NONE, |
- LAST_PREDICT_ACTION = ACTION_NONE |
- }; |
- |
- explicit NetworkActionPredictor(Profile* profile); |
- virtual ~NetworkActionPredictor(); |
- |
- static void set_hit_weight(double weight) { hit_weight_ = weight; } |
- static double get_hit_weight() { return hit_weight_; } |
- |
- // Registers an AutocompleteResult for a given |user_text|. This will be used |
- // when the user navigates from the Omnibox to determine early opportunities |
- // to predict their actions. |
- void RegisterTransitionalMatches(const string16& user_text, |
- const AutocompleteResult& result); |
- |
- // Clears any transitional matches that have been registered. Called when, for |
- // example, the AutocompleteEditModel is reverted. |
- void ClearTransitionalMatches(); |
- |
- // Return the recommended action given |user_text|, the text the user has |
- // entered in the Omnibox, and |match|, the suggestion from Autocomplete. |
- // This method uses information from the ShortcutsBackend including how much |
- // of the matching entry the user typed, and how long it's been since the user |
- // visited the matching URL, to calculate a score between 0 and 1. This score |
- // is then mapped to an Action. |
- Action RecommendAction(const string16& user_text, |
- const AutocompleteMatch& match) const; |
- |
- // Return true if the suggestion type warrants a TCP/IP preconnection. |
- // i.e., it is now quite likely that the user will select the related domain. |
- static bool IsPreconnectable(const AutocompleteMatch& match); |
- |
- private: |
- friend class NetworkActionPredictorTest; |
- friend class NetworkActionPredictorDOMHandler; |
- |
- struct TransitionalMatch { |
- TransitionalMatch(); |
- ~TransitionalMatch(); |
- |
- string16 user_text; |
- std::vector<GURL> urls; |
- |
- bool operator==(const string16& other_user_text) const { |
- return user_text == other_user_text; |
- } |
- }; |
- |
- struct DBCacheKey { |
- string16 user_text; |
- GURL url; |
- |
- bool operator<(const DBCacheKey& rhs) const { |
- return (user_text != rhs.user_text) ? |
- (user_text < rhs.user_text) : (url < rhs.url); |
- } |
- |
- bool operator==(const DBCacheKey& rhs) const { |
- return (user_text == rhs.user_text) && (url == rhs.url); |
- } |
- }; |
- |
- struct DBCacheValue { |
- int number_of_hits; |
- int number_of_misses; |
- }; |
- |
- typedef std::map<DBCacheKey, DBCacheValue> DBCacheMap; |
- typedef std::map<DBCacheKey, NetworkActionPredictorDatabase::Row::Id> |
- DBIdCacheMap; |
- |
- static const int kMaximumDaysToKeepEntry; |
- |
- // Multiplying factor applied to the |number_of_hits| for a database entry |
- // when calculating the confidence. It is currently set by a field trial so is |
- // static. Once the field trial ends, this will be a constant value. |
- static double hit_weight_; |
- |
- // ProfileKeyedService |
- virtual void Shutdown() OVERRIDE; |
- |
- // NotificationObserver |
- virtual void Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) OVERRIDE; |
- |
- // Called when NOTIFICATION_OMNIBOX_OPENED_URL is observed. |
- void OnOmniboxOpenedUrl(const AutocompleteLog& log); |
- |
- // Deletes any old or invalid entries from the local caches. |url_db| and |
- // |id_list| must not be NULL. Every row id deleted will be added to id_list. |
- void DeleteOldIdsFromCaches( |
- history::URLDatabase* url_db, |
- std::vector<NetworkActionPredictorDatabase::Row::Id>* id_list); |
- |
- // Called to delete any old or invalid entries from the database. Called after |
- // the local caches are created once the history service is available. |
- void DeleteOldEntries(history::URLDatabase* url_db); |
- |
- // Called to populate the local caches. This also calls DeleteOldEntries |
- // if the history service is available, or registers for the notification of |
- // it becoming available. |
- void CreateCaches( |
- std::vector<NetworkActionPredictorDatabase::Row>* row_buffer); |
- |
- // Attempts to call DeleteOldEntries if the in-memory database has been loaded |
- // by |service|. Returns success as a boolean. |
- bool TryDeleteOldEntries(HistoryService* service); |
- |
- // Uses local caches to calculate an exact percentage prediction that the user |
- // will take a particular match given what they have typed. |is_in_db| is set |
- // to differentiate trivial zero results resulting from a match not being |
- // found from actual zero results where the calculation returns 0.0. |
- double CalculateConfidence(const string16& user_text, |
- const AutocompleteMatch& match, |
- bool* is_in_db) const; |
- |
- // Calculates the confidence for an entry in the DBCacheMap. |
- double CalculateConfidenceForDbEntry(DBCacheMap::const_iterator iter) const; |
- |
- // Adds a row to the database and caches. |
- void AddRow(const DBCacheKey& key, |
- const NetworkActionPredictorDatabase::Row& row); |
- |
- // Updates a row in the database and the caches. |
- void UpdateRow(DBCacheMap::iterator it, |
- const NetworkActionPredictorDatabase::Row& row); |
- |
- // Removes all rows from the database and caches. |
- void DeleteAllRows(); |
- |
- // Removes rows from the database and caches that contain a URL in |rows|. |
- void DeleteRowsWithURLs(const history::URLRows& rows); |
- |
- // Used to batch operations on the database. |
- void BeginTransaction(); |
- void CommitTransaction(); |
- |
- Profile* profile_; |
- scoped_refptr<NetworkActionPredictorDatabase> db_; |
- content::NotificationRegistrar notification_registrar_; |
- |
- // This is cleared after every Omnibox navigation. |
- std::vector<TransitionalMatch> transitional_matches_; |
- |
- // This allows us to predict the effect of confidence threshold changes on |
- // accuracy. |
- mutable std::vector<std::pair<GURL, double> > tracked_urls_; |
- |
- DBCacheMap db_cache_; |
- DBIdCacheMap db_id_cache_; |
- |
- bool initialized_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NetworkActionPredictor); |
-}; |
- |
-#endif // CHROME_BROWSER_AUTOCOMPLETE_NETWORK_ACTION_PREDICTOR_H_ |