Chromium Code Reviews| Index: chrome/browser/predictors/resource_prefetch_predictor_tables.h |
| diff --git a/chrome/browser/predictors/resource_prefetch_predictor_tables.h b/chrome/browser/predictors/resource_prefetch_predictor_tables.h |
| index 6588b546c69e8eae8536ff60e4c4b840c5e3b7f8..545ad4a51a0510147817514943db33b67587923b 100644 |
| --- a/chrome/browser/predictors/resource_prefetch_predictor_tables.h |
| +++ b/chrome/browser/predictors/resource_prefetch_predictor_tables.h |
| @@ -8,13 +8,13 @@ |
| #include <stddef.h> |
| #include <map> |
| +#include <memory> |
| #include <string> |
| #include <vector> |
| #include "base/gtest_prod_util.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| -#include "base/time/time.h" |
| #include "chrome/browser/predictors/predictor_table_base.h" |
| #include "chrome/browser/predictors/resource_prefetch_common.h" |
| #include "chrome/browser/predictors/resource_prefetch_predictor.pb.h" |
| @@ -37,30 +37,11 @@ using RedirectStat = RedirectData_RedirectStat; |
| // |
| // Currently manages: |
| // - UrlResourceTable - resources per Urls. |
| -// - UrlMetadataTable - misc data for Urls (like last visit time). |
| // - UrlRedirectTable - redirects per Urls. |
| // - HostResourceTable - resources per host. |
| -// - HostMetadataTable - misc data for hosts. |
| // - HostRedirectTable - redirects per host. |
| class ResourcePrefetchPredictorTables : public PredictorTableBase { |
| public: |
| - // Aggregated data for a Url or Host. Although the data differs slightly, we |
| - // store them in the same structure, because most of the fields are common and |
| - // it allows us to use the same functions. |
| - struct PrefetchData { |
| - PrefetchData(PrefetchKeyType key_type, const std::string& primary_key); |
| - PrefetchData(const PrefetchData& other); |
| - ~PrefetchData(); |
| - |
| - bool is_host() const { return key_type == PREFETCH_KEY_TYPE_HOST; } |
| - |
| - // Is the data a host as opposed to a Url? |
| - PrefetchKeyType key_type; // Not const to be able to assign. |
| - std::string primary_key; // is_host() ? host : main frame url. |
| - |
| - base::Time last_visit; |
| - std::vector<ResourceData> resources; |
| - }; |
| // Map from primary key to PrefetchData for the key. |
| typedef std::map<std::string, PrefetchData> PrefetchDataMap; |
| @@ -103,18 +84,24 @@ class ResourcePrefetchPredictorTables : public PredictorTableBase { |
| // Deletes all data in all the tables. |
| virtual void DeleteAllData(); |
| + // Removes too stale resources from |data|. |
|
Benoit L
2016/10/04 15:43:57
Stale is a bit overloaded.
// Removes the resourc
alexilin
2016/10/04 17:25:46
Done.
|
| + static void TrimResources(PrefetchData* data, size_t max_consecutive_misses); |
| + |
| // Sorts the resources by score, decreasing. |
| - static void SortResources(std::vector<ResourceData>* resources); |
| + static void SortResources(PrefetchData* data); |
| + |
| + // Removes too stale redirects from |data|. |
|
Benoit L
2016/10/04 15:43:57
Ditto.
alexilin
2016/10/04 17:25:46
Done.
|
| + static void TrimRedirects(RedirectData* data, size_t max_consecutive_misses); |
| // Sorts the redirects by score, decreasing. |
| - static void SortRedirects(std::vector<RedirectStat>* redirects); |
| + static void SortRedirects(RedirectData* data); |
| // The maximum length of the string that can be stored in the DB. |
| static constexpr size_t kMaxStringLength = 1024; |
| private: |
| // Represents the type of information that is stored in prefetch database. |
| - enum class PrefetchDataType { RESOURCE, REDIRECT, METADATA }; |
| + enum class PrefetchDataType { RESOURCE, REDIRECT }; |
| enum class TableOperationType { INSERT, REMOVE }; |
| @@ -133,23 +120,17 @@ class ResourcePrefetchPredictorTables : public PredictorTableBase { |
| // Helper functions below help perform functions on the Url and host table |
| // using the same code. |
| void GetAllResourceDataHelper(PrefetchKeyType key_type, |
| - PrefetchDataMap* data_map, |
| - std::vector<std::string>* to_delete); |
| + PrefetchDataMap* data_map); |
| void GetAllRedirectDataHelper(PrefetchKeyType key_type, |
| RedirectDataMap* redirect_map); |
| - bool UpdateResourceDataHelper(PrefetchKeyType key_type, |
| - const PrefetchData& data); |
| - bool UpdateRedirectDataHelper(PrefetchKeyType key_type, |
| - const RedirectData& data); |
| + bool UpdateDataHelper(PrefetchKeyType key_type, |
| + PrefetchDataType data_type, |
| + const std::string& key, |
| + const google::protobuf::MessageLite& data); |
| void DeleteDataHelper(PrefetchKeyType key_type, |
| PrefetchDataType data_type, |
| const std::vector<std::string>& keys); |
| - // Returns true if the strings in the |data| are less than |kMaxStringLength| |
| - // in length. |
| - static bool StringsAreSmallerThanDBLimit(const PrefetchData& data); |
| - static bool StringsAreSmallerThanDBLimit(const RedirectData& data); |
| - |
| // Computes score of |data|. |
| static float ComputeResourceScore(const ResourceData& data); |
| static float ComputeRedirectScore(const RedirectStat& data); |
| @@ -160,7 +141,7 @@ class ResourcePrefetchPredictorTables : public PredictorTableBase { |
| // Database version. Always increment it when any change is made to the data |
| // schema (including the .proto). |
| - static constexpr int kDatabaseVersion = 3; |
| + static constexpr int kDatabaseVersion = 4; |
| static bool DropTablesIfOutdated(sql::Connection* db); |
| static int GetDatabaseVersion(sql::Connection* db); |
| @@ -172,12 +153,8 @@ class ResourcePrefetchPredictorTables : public PredictorTableBase { |
| PrefetchDataType data_type, |
| TableOperationType op_type); |
| - static const char* GetTableUpdateStatementTemplate( |
| - TableOperationType op_type, |
| - PrefetchDataType data_type); |
| - static const char* GetTableUpdateStatementTableName( |
| - PrefetchKeyType key_type, |
| - PrefetchDataType data_type); |
| + static const char* GetTableName(PrefetchKeyType key_type, |
| + PrefetchDataType data_type); |
| DISALLOW_COPY_AND_ASSIGN(ResourcePrefetchPredictorTables); |
| }; |