| Index: chrome/browser/predictors/resource_prefetch_predictor_tables.cc
|
| diff --git a/chrome/browser/predictors/resource_prefetch_predictor_tables.cc b/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
|
| index c04dc372727ff29f12b9bf4c93f41fa9c9a5a037..f5be8ec63fcd7210c148dca86be03c0cc2616e3c 100644
|
| --- a/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
|
| +++ b/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
|
| @@ -4,30 +4,20 @@
|
|
|
| #include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
|
|
|
| -#include <stdint.h>
|
| -
|
| #include <algorithm>
|
| -#include <memory>
|
| #include <utility>
|
|
|
| -#include "base/logging.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "content/public/browser/browser_thread.h"
|
| -#include "sql/meta_table.h"
|
| #include "sql/statement.h"
|
| -#include "sql/transaction.h"
|
|
|
| -using content::BrowserThread;
|
| -using sql::Statement;
|
| +using google::protobuf::MessageLite;
|
|
|
| namespace {
|
|
|
| -using PrefetchData = predictors::PrefetchData;
|
| -using RedirectData = predictors::RedirectData;
|
| -using ::google::protobuf::MessageLite;
|
| -
|
| const char kMetadataTableName[] = "resource_prefetch_predictor_metadata";
|
| const char kUrlResourceTableName[] = "resource_prefetch_predictor_url";
|
| const char kUrlRedirectTableName[] = "resource_prefetch_predictor_url_redirect";
|
| @@ -50,7 +40,7 @@ const char kDeleteProtoTableStatementTemplate[] = "DELETE FROM %s WHERE key=?";
|
|
|
| void BindProtoDataToStatement(const std::string& key,
|
| const MessageLite& data,
|
| - Statement* statement) {
|
| + sql::Statement* statement) {
|
| int size = data.ByteSize();
|
| DCHECK_GT(size, 0);
|
| std::vector<char> proto_buffer(size);
|
| @@ -60,7 +50,7 @@ void BindProtoDataToStatement(const std::string& key,
|
| statement->BindBlob(1, &proto_buffer[0], size);
|
| }
|
|
|
| -bool StepAndInitializeProtoData(Statement* statement,
|
| +bool StepAndInitializeProtoData(sql::Statement* statement,
|
| std::string* key,
|
| MessageLite* data) {
|
| if (!statement->Step())
|
| @@ -80,6 +70,8 @@ bool StepAndInitializeProtoData(Statement* statement,
|
|
|
| namespace predictors {
|
|
|
| +using content::BrowserThread;
|
| +
|
| // static
|
| void ResourcePrefetchPredictorTables::TrimResources(
|
| PrefetchData* data,
|
| @@ -231,7 +223,7 @@ void ResourcePrefetchPredictorTables::DeleteAllData() {
|
| if (CantAccessDatabase())
|
| return;
|
|
|
| - Statement deleter;
|
| + sql::Statement deleter;
|
| for (const char* table_name :
|
| {kUrlResourceTableName, kUrlRedirectTableName, kHostResourceTableName,
|
| kHostRedirectTableName}) {
|
| @@ -241,8 +233,7 @@ void ResourcePrefetchPredictorTables::DeleteAllData() {
|
| }
|
| }
|
|
|
| -ResourcePrefetchPredictorTables::ResourcePrefetchPredictorTables()
|
| - : PredictorTableBase() {}
|
| +ResourcePrefetchPredictorTables::ResourcePrefetchPredictorTables() {}
|
|
|
| ResourcePrefetchPredictorTables::~ResourcePrefetchPredictorTables() {}
|
|
|
| @@ -251,7 +242,7 @@ void ResourcePrefetchPredictorTables::GetAllResourceDataHelper(
|
| PrefetchDataMap* data_map) {
|
| // Read the resources table and organize it per primary key.
|
| const char* table_name = GetTableName(key_type, PrefetchDataType::RESOURCE);
|
| - Statement resource_reader(DB()->GetUniqueStatement(
|
| + sql::Statement resource_reader(DB()->GetUniqueStatement(
|
| base::StringPrintf("SELECT * FROM %s", table_name).c_str()));
|
|
|
| PrefetchData data;
|
| @@ -272,7 +263,7 @@ void ResourcePrefetchPredictorTables::GetAllRedirectDataHelper(
|
| RedirectDataMap* data_map) {
|
| // Read the redirects table and organize it per primary key.
|
| const char* table_name = GetTableName(key_type, PrefetchDataType::REDIRECT);
|
| - Statement redirect_reader(DB()->GetUniqueStatement(
|
| + sql::Statement redirect_reader(DB()->GetUniqueStatement(
|
| base::StringPrintf("SELECT * FROM %s", table_name).c_str()));
|
|
|
| RedirectData data;
|
| @@ -289,14 +280,14 @@ bool ResourcePrefetchPredictorTables::UpdateDataHelper(
|
| const std::string& key,
|
| const MessageLite& data) {
|
| // Delete the older data from the table.
|
| - std::unique_ptr<Statement> deleter(
|
| + std::unique_ptr<sql::Statement> deleter(
|
| GetTableUpdateStatement(key_type, data_type, TableOperationType::REMOVE));
|
| deleter->BindString(0, key);
|
| if (!deleter->Run())
|
| return false;
|
|
|
| // Add the new data to the table.
|
| - std::unique_ptr<Statement> inserter(
|
| + std::unique_ptr<sql::Statement> inserter(
|
| GetTableUpdateStatement(key_type, data_type, TableOperationType::INSERT));
|
| BindProtoDataToStatement(key, data, inserter.get());
|
| return inserter->Run();
|
| @@ -307,7 +298,7 @@ void ResourcePrefetchPredictorTables::DeleteDataHelper(
|
| PrefetchDataType data_type,
|
| const std::vector<std::string>& keys) {
|
| for (const std::string& key : keys) {
|
| - std::unique_ptr<Statement> deleter(GetTableUpdateStatement(
|
| + std::unique_ptr<sql::Statement> deleter(GetTableUpdateStatement(
|
| key_type, data_type, TableOperationType::REMOVE));
|
| deleter->BindString(0, key);
|
| deleter->Run();
|
| @@ -368,9 +359,9 @@ bool ResourcePrefetchPredictorTables::DropTablesIfOutdated(
|
| bool incompatible_version = version != kDatabaseVersion;
|
|
|
| // These are deprecated tables but they still have to be removed if present.
|
| - const char kUrlMetadataTableName[] =
|
| + static const char kUrlMetadataTableName[] =
|
| "resource_prefetch_predictor_url_metadata";
|
| - const char kHostMetadataTableName[] =
|
| + static const char kHostMetadataTableName[] =
|
| "resource_prefetch_predictor_host_metadata";
|
|
|
| if (incompatible_version) {
|
| @@ -429,9 +420,7 @@ void ResourcePrefetchPredictorTables::CreateTableIfNonExistent() {
|
|
|
| // Database initialization is all-or-nothing.
|
| sql::Connection* db = DB();
|
| - sql::Transaction transaction{db};
|
| - bool success = transaction.Begin();
|
| -
|
| + bool success = db->BeginTransaction();
|
| success = success && DropTablesIfOutdated(db);
|
|
|
| for (const char* table_name :
|
| @@ -445,35 +434,35 @@ void ResourcePrefetchPredictorTables::CreateTableIfNonExistent() {
|
| }
|
|
|
| if (success)
|
| - success = transaction.Commit();
|
| + success = db->CommitTransaction();
|
| else
|
| - transaction.Rollback();
|
| + db->RollbackTransaction();
|
|
|
| if (!success)
|
| ResetDB();
|
| }
|
|
|
| -void ResourcePrefetchPredictorTables::LogDatabaseStats() {
|
| +void ResourcePrefetchPredictorTables::LogDatabaseStats() {
|
| DCHECK_CURRENTLY_ON(BrowserThread::DB);
|
| if (CantAccessDatabase())
|
| return;
|
|
|
| - Statement statement(DB()->GetUniqueStatement(
|
| - base::StringPrintf("SELECT count(*) FROM %s",
|
| - kUrlResourceTableName).c_str()));
|
| + sql::Statement statement(DB()->GetUniqueStatement(
|
| + base::StringPrintf("SELECT count(*) FROM %s", kUrlResourceTableName)
|
| + .c_str()));
|
| if (statement.Step())
|
| UMA_HISTOGRAM_COUNTS("ResourcePrefetchPredictor.UrlTableRowCount",
|
| statement.ColumnInt(0));
|
|
|
| statement.Assign(DB()->GetUniqueStatement(
|
| - base::StringPrintf("SELECT count(*) FROM %s",
|
| - kHostResourceTableName).c_str()));
|
| + base::StringPrintf("SELECT count(*) FROM %s", kHostResourceTableName)
|
| + .c_str()));
|
| if (statement.Step())
|
| UMA_HISTOGRAM_COUNTS("ResourcePrefetchPredictor.HostTableRowCount",
|
| statement.ColumnInt(0));
|
| }
|
|
|
| -std::unique_ptr<Statement>
|
| +std::unique_ptr<sql::Statement>
|
| ResourcePrefetchPredictorTables::GetTableUpdateStatement(
|
| PrefetchKeyType key_type,
|
| PrefetchDataType data_type,
|
| @@ -484,7 +473,7 @@ ResourcePrefetchPredictorTables::GetTableUpdateStatement(
|
| ? kDeleteProtoTableStatementTemplate
|
| : kInsertProtoTableStatementTemplate);
|
| const char* table_name = GetTableName(key_type, data_type);
|
| - return base::MakeUnique<Statement>(DB()->GetCachedStatement(
|
| + return base::MakeUnique<sql::Statement>(DB()->GetCachedStatement(
|
| id, base::StringPrintf(statement_template, table_name).c_str()));
|
| }
|
|
|
|
|