Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1083)

Unified Diff: chrome/browser/predictors/resource_prefetch_predictor_tables.cc

Issue 2478823002: predictors: ResourcePrefetchPredictorTables cleanup. (Closed)
Patch Set: Return definition order. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..2d97124201fbca5347686b3763f6495bbfa3cea3 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();
@@ -359,49 +350,44 @@ float ResourcePrefetchPredictorTables::ComputeResourceScore(
data.average_position();
}
-// static
-bool ResourcePrefetchPredictorTables::DropTablesIfOutdated(
- sql::Connection* db) {
- int version = GetDatabaseVersion(db);
- bool success = true;
+bool ResourcePrefetchPredictorTables::DropTablesIfOutdated() {
+ int version = GetDatabaseVersion();
// Too new is also a problem.
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";
+ bool success = true;
if (incompatible_version) {
for (const char* table_name :
{kMetadataTableName, kUrlResourceTableName, kHostResourceTableName,
kUrlRedirectTableName, kHostRedirectTableName, kUrlMetadataTableName,
kHostMetadataTableName}) {
- success =
- success &&
- db->Execute(base::StringPrintf("DROP TABLE IF EXISTS %s", table_name)
- .c_str());
+ success = success &&
+ DB()->Execute(
+ base::StringPrintf("DROP TABLE IF EXISTS %s", table_name)
+ .c_str());
}
- }
- if (incompatible_version) {
success =
success &&
- db->Execute(base::StringPrintf(kCreateGlobalMetadataStatementTemplate,
- kMetadataTableName)
- .c_str());
- success = success && SetDatabaseVersion(db, kDatabaseVersion);
+ DB()->Execute(base::StringPrintf(kCreateGlobalMetadataStatementTemplate,
+ kMetadataTableName)
+ .c_str());
+ success = success && SetDatabaseVersion(kDatabaseVersion);
}
return success;
}
-// static
-int ResourcePrefetchPredictorTables::GetDatabaseVersion(sql::Connection* db) {
+int ResourcePrefetchPredictorTables::GetDatabaseVersion() {
int version = 0;
- if (db->DoesTableExist(kMetadataTableName)) {
- sql::Statement statement(db->GetUniqueStatement(
+ if (DB()->DoesTableExist(kMetadataTableName)) {
+ sql::Statement statement(DB()->GetUniqueStatement(
base::StringPrintf("SELECT value FROM %s WHERE key='version'",
kMetadataTableName)
.c_str()));
@@ -411,10 +397,8 @@ int ResourcePrefetchPredictorTables::GetDatabaseVersion(sql::Connection* db) {
return version;
}
-// static
-bool ResourcePrefetchPredictorTables::SetDatabaseVersion(sql::Connection* db,
- int version) {
- sql::Statement statement(db->GetUniqueStatement(
+bool ResourcePrefetchPredictorTables::SetDatabaseVersion(int version) {
+ sql::Statement statement(DB()->GetUniqueStatement(
base::StringPrintf(
"INSERT OR REPLACE INTO %s (key,value) VALUES ('version',%d)",
kMetadataTableName, version)
@@ -428,52 +412,50 @@ void ResourcePrefetchPredictorTables::CreateTableIfNonExistent() {
return;
// 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);
+ success = success && DropTablesIfOutdated();
for (const char* table_name :
{kUrlResourceTableName, kHostResourceTableName, kUrlRedirectTableName,
kHostRedirectTableName}) {
success = success &&
- (db->DoesTableExist(table_name) ||
- db->Execute(base::StringPrintf(
- kCreateProtoTableStatementTemplate, table_name)
- .c_str()));
+ (DB()->DoesTableExist(table_name) ||
+ DB()->Execute(base::StringPrintf(
+ kCreateProtoTableStatementTemplate, table_name)
+ .c_str()));
}
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 +466,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()));
}

Powered by Google App Engine
This is Rietveld 408576698