Commit b67aa0b3 authored by Joshua Bell's avatar Joshua Bell Committed by Commit Bot

Mechanical modernization of some storage/*/database code

* Use range-based for loops
* Use auto (sparingly) to replace ugly iterator naming
* Trust return value optimization to handle vectors

Change-Id: I14ef9fd8d9904b943b0e2d64188d3be5f63ef23d
Reviewed-on: https://chromium-review.googlesource.com/930163
Commit-Queue: Joshua Bell <jsbell@chromium.org>
Reviewed-by: default avatarVictor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543865}
parent 8d50a442
...@@ -43,10 +43,8 @@ void GetOriginsOnDBThread(DatabaseTracker* db_tracker, ...@@ -43,10 +43,8 @@ void GetOriginsOnDBThread(DatabaseTracker* db_tracker,
std::set<url::Origin>* origins_ptr) { std::set<url::Origin>* origins_ptr) {
std::vector<std::string> origin_identifiers; std::vector<std::string> origin_identifiers;
if (db_tracker->GetAllOriginIdentifiers(&origin_identifiers)) { if (db_tracker->GetAllOriginIdentifiers(&origin_identifiers)) {
for (std::vector<std::string>::const_iterator iter = for (const auto& identifier : origin_identifiers) {
origin_identifiers.begin(); origins_ptr->insert(storage::GetOriginFromIdentifier(identifier));
iter != origin_identifiers.end(); ++iter) {
origins_ptr->insert(storage::GetOriginFromIdentifier(*iter));
} }
} }
} }
...@@ -56,12 +54,10 @@ void GetOriginsForHostOnDBThread(DatabaseTracker* db_tracker, ...@@ -56,12 +54,10 @@ void GetOriginsForHostOnDBThread(DatabaseTracker* db_tracker,
const std::string& host) { const std::string& host) {
std::vector<std::string> origin_identifiers; std::vector<std::string> origin_identifiers;
if (db_tracker->GetAllOriginIdentifiers(&origin_identifiers)) { if (db_tracker->GetAllOriginIdentifiers(&origin_identifiers)) {
for (std::vector<std::string>::const_iterator iter = for (const auto& identifier : origin_identifiers) {
origin_identifiers.begin(); url::Origin origin = storage::GetOriginFromIdentifier(identifier);
iter != origin_identifiers.end(); ++iter) { if (host == net::GetHostOrSpecFromURL(origin.GetURL()))
if (host == origins_ptr->insert(origin);
net::GetHostOrSpecFromURL(storage::GetOriginURLFromIdentifier(*iter)))
origins_ptr->insert(storage::GetOriginFromIdentifier(*iter));
} }
} }
} }
......
...@@ -58,14 +58,14 @@ class MockDatabaseTracker : public DatabaseTracker { ...@@ -58,14 +58,14 @@ class MockDatabaseTracker : public DatabaseTracker {
bool GetAllOriginIdentifiers( bool GetAllOriginIdentifiers(
std::vector<std::string>* origins_identifiers) override { std::vector<std::string>* origins_identifiers) override {
for (auto& iter : mock_origin_infos_) for (const auto& origin_info : mock_origin_infos_)
origins_identifiers->push_back(iter.second.GetOriginIdentifier()); origins_identifiers->push_back(origin_info.second.GetOriginIdentifier());
return true; return true;
} }
bool GetAllOriginsInfo(std::vector<OriginInfo>* origins_info) override { bool GetAllOriginsInfo(std::vector<OriginInfo>* origins_info) override {
for (auto& iter : mock_origin_infos_) for (const auto& origin_info : mock_origin_infos_)
origins_info->push_back(OriginInfo(iter.second)); origins_info->push_back(OriginInfo(origin_info.second));
return true; return true;
} }
......
...@@ -54,10 +54,8 @@ OriginInfo::~OriginInfo() = default; ...@@ -54,10 +54,8 @@ OriginInfo::~OriginInfo() = default;
void OriginInfo::GetAllDatabaseNames( void OriginInfo::GetAllDatabaseNames(
std::vector<base::string16>* databases) const { std::vector<base::string16>* databases) const {
for (DatabaseInfoMap::const_iterator it = database_info_.begin(); for (const auto& pair : database_info_)
it != database_info_.end(); it++) { databases->push_back(pair.first);
databases->push_back(it->first);
}
} }
int64_t OriginInfo::GetDatabaseSize(const base::string16& database_name) const { int64_t OriginInfo::GetDatabaseSize(const base::string16& database_name) const {
...@@ -190,23 +188,16 @@ void DatabaseTracker::CloseDatabases(const DatabaseConnections& connections) { ...@@ -190,23 +188,16 @@ void DatabaseTracker::CloseDatabases(const DatabaseConnections& connections) {
} }
// When being closed by this route, there's a chance that // When being closed by this route, there's a chance that
// the tracker missed some DatabseModified calls. This method is used // the tracker missed some DatabaseModified calls. This method is used
// when a renderer crashes to cleanup its open resources. // when a renderer crashes to cleanup its open resources.
// We need to examine what we have in connections for the // We need to examine what we have in connections for the
// size of each open databases and notify any differences between the // size of each open databases and notify any differences between the
// actual file sizes now. // actual file sizes now.
std::vector<std::pair<std::string, base::string16> > open_dbs; for (auto& pair : connections.ListConnections())
connections.ListConnections(&open_dbs); UpdateOpenDatabaseSizeAndNotify(pair.first, pair.second);
for (std::vector<std::pair<std::string, base::string16> >::iterator it =
open_dbs.begin(); it != open_dbs.end(); ++it) for (auto& pair : database_connections_.RemoveConnections(connections))
UpdateOpenDatabaseSizeAndNotify(it->first, it->second); DeleteDatabaseIfNeeded(pair.first, pair.second);
std::vector<std::pair<std::string, base::string16> > closed_dbs;
database_connections_.RemoveConnections(connections, &closed_dbs);
for (std::vector<std::pair<std::string, base::string16> >::iterator it =
closed_dbs.begin(); it != closed_dbs.end(); ++it) {
DeleteDatabaseIfNeeded(it->first, it->second);
}
} }
void DatabaseTracker::DeleteDatabaseIfNeeded( void DatabaseTracker::DeleteDatabaseIfNeeded(
...@@ -336,9 +327,8 @@ bool DatabaseTracker::GetAllOriginsInfo( ...@@ -336,9 +327,8 @@ bool DatabaseTracker::GetAllOriginsInfo(
if (!GetAllOriginIdentifiers(&origins)) if (!GetAllOriginIdentifiers(&origins))
return false; return false;
for (std::vector<std::string>::const_iterator it = origins.begin(); for (const auto& origin : origins) {
it != origins.end(); it++) { CachedOriginInfo* origin_info = GetCachedOriginInfo(origin);
CachedOriginInfo* origin_info = GetCachedOriginInfo(*it);
if (!origin_info) { if (!origin_info) {
// Restore 'origins_info' to its initial state. // Restore 'origins_info' to its initial state.
origins_info->clear(); origins_info->clear();
...@@ -567,18 +557,17 @@ DatabaseTracker::CachedOriginInfo* DatabaseTracker::MaybeGetCachedOriginInfo( ...@@ -567,18 +557,17 @@ DatabaseTracker::CachedOriginInfo* DatabaseTracker::MaybeGetCachedOriginInfo(
CachedOriginInfo& origin_info = origins_info_map_[origin_identifier]; CachedOriginInfo& origin_info = origins_info_map_[origin_identifier];
origin_info.SetOriginIdentifier(origin_identifier); origin_info.SetOriginIdentifier(origin_identifier);
for (std::vector<DatabaseDetails>::const_iterator it = details.begin(); for (const auto& db : details) {
it != details.end(); it++) {
int64_t db_file_size; int64_t db_file_size;
if (database_connections_.IsDatabaseOpened( if (database_connections_.IsDatabaseOpened(origin_identifier,
origin_identifier, it->database_name)) { db.database_name)) {
db_file_size = database_connections_.GetOpenDatabaseSize( db_file_size = database_connections_.GetOpenDatabaseSize(
origin_identifier, it->database_name); origin_identifier, db.database_name);
} else { } else {
db_file_size = GetDBFileSize(origin_identifier, it->database_name); db_file_size = GetDBFileSize(origin_identifier, db.database_name);
} }
origin_info.SetDatabaseSize(it->database_name, db_file_size); origin_info.SetDatabaseSize(db.database_name, db_file_size);
origin_info.SetDatabaseDescription(it->database_name, it->description); origin_info.SetDatabaseDescription(db.database_name, db.description);
} }
} }
...@@ -656,11 +645,9 @@ void DatabaseTracker::ScheduleDatabasesForDeletion( ...@@ -656,11 +645,9 @@ void DatabaseTracker::ScheduleDatabasesForDeletion(
if (!callback.is_null()) if (!callback.is_null())
deletion_callbacks_.push_back(std::make_pair(callback, databases)); deletion_callbacks_.push_back(std::make_pair(callback, databases));
for (DatabaseSet::const_iterator origin = databases.begin(); for (const auto& origin_dbs : databases) {
origin != databases.end(); ++origin) { for (const base::string16& db : origin_dbs.second)
for (std::set<base::string16>::const_iterator db = origin->second.begin(); ScheduleDatabaseForDeletion(origin_dbs.first, db);
db != origin->second.end(); ++db)
ScheduleDatabaseForDeletion(origin->first, *db);
} }
} }
...@@ -676,7 +663,7 @@ int DatabaseTracker::DeleteDatabase(const std::string& origin_identifier, ...@@ -676,7 +663,7 @@ int DatabaseTracker::DeleteDatabase(const std::string& origin_identifier,
if (!callback.is_null()) { if (!callback.is_null()) {
DatabaseSet set; DatabaseSet set;
set[origin_identifier].insert(database_name); set[origin_identifier].insert(database_name);
deletion_callbacks_.push_back(std::make_pair(callback, set)); deletion_callbacks_.emplace_back(callback, set);
} }
ScheduleDatabaseForDeletion(origin_identifier, database_name); ScheduleDatabaseForDeletion(origin_identifier, database_name);
return net::ERR_IO_PENDING; return net::ERR_IO_PENDING;
...@@ -698,32 +685,29 @@ int DatabaseTracker::DeleteDataModifiedSince( ...@@ -698,32 +685,29 @@ int DatabaseTracker::DeleteDataModifiedSince(
if (!databases_table_->GetAllOriginIdentifiers(&origins_identifiers)) if (!databases_table_->GetAllOriginIdentifiers(&origins_identifiers))
return net::ERR_FAILED; return net::ERR_FAILED;
int rv = net::OK; int rv = net::OK;
for (std::vector<std::string>::const_iterator origin = for (const auto& origin : origins_identifiers) {
origins_identifiers.begin();
origin != origins_identifiers.end(); ++origin) {
if (special_storage_policy_.get() && if (special_storage_policy_.get() &&
special_storage_policy_->IsStorageProtected( special_storage_policy_->IsStorageProtected(
storage::GetOriginURLFromIdentifier(*origin))) { storage::GetOriginURLFromIdentifier(origin))) {
continue; continue;
} }
std::vector<DatabaseDetails> details; std::vector<DatabaseDetails> details;
if (!databases_table_->GetAllDatabaseDetailsForOriginIdentifier(*origin, if (!databases_table_->GetAllDatabaseDetailsForOriginIdentifier(origin,
&details)) &details))
rv = net::ERR_FAILED; rv = net::ERR_FAILED;
for (std::vector<DatabaseDetails>::const_iterator db = details.begin(); for (const DatabaseDetails& db : details) {
db != details.end(); ++db) { base::FilePath db_file = GetFullDBFilePath(origin, db.database_name);
base::FilePath db_file = GetFullDBFilePath(*origin, db->database_name);
base::File::Info file_info; base::File::Info file_info;
base::GetFileInfo(db_file, &file_info); base::GetFileInfo(db_file, &file_info);
if (file_info.last_modified < cutoff) if (file_info.last_modified < cutoff)
continue; continue;
// Check if the database is opened by any renderer. // Check if the database is opened by any renderer.
if (database_connections_.IsDatabaseOpened(*origin, db->database_name)) if (database_connections_.IsDatabaseOpened(origin, db.database_name))
to_be_deleted[*origin].insert(db->database_name); to_be_deleted[origin].insert(db.database_name);
else else
DeleteClosedDatabase(*origin, db->database_name); DeleteClosedDatabase(origin, db.database_name);
} }
} }
...@@ -749,13 +733,12 @@ int DatabaseTracker::DeleteDataForOrigin( ...@@ -749,13 +733,12 @@ int DatabaseTracker::DeleteDataForOrigin(
if (!databases_table_-> if (!databases_table_->
GetAllDatabaseDetailsForOriginIdentifier(origin, &details)) GetAllDatabaseDetailsForOriginIdentifier(origin, &details))
return net::ERR_FAILED; return net::ERR_FAILED;
for (std::vector<DatabaseDetails>::const_iterator db = details.begin(); for (const auto& db : details) {
db != details.end(); ++db) {
// Check if the database is opened by any renderer. // Check if the database is opened by any renderer.
if (database_connections_.IsDatabaseOpened(origin, db->database_name)) if (database_connections_.IsDatabaseOpened(origin, db.database_name))
to_be_deleted[origin].insert(db->database_name); to_be_deleted[origin].insert(db.database_name);
else else
DeleteClosedDatabase(origin, db->database_name); DeleteClosedDatabase(origin, db.database_name);
} }
if (!to_be_deleted.empty()) { if (!to_be_deleted.empty()) {
...@@ -817,10 +800,8 @@ void DatabaseTracker::DeleteIncognitoDBDirectory() { ...@@ -817,10 +800,8 @@ void DatabaseTracker::DeleteIncognitoDBDirectory() {
DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK(task_runner_->RunsTasksInCurrentSequence());
is_initialized_ = false; is_initialized_ = false;
for (FileHandlesMap::iterator it = incognito_file_handles_.begin(); for (auto& pair : incognito_file_handles_)
it != incognito_file_handles_.end(); it++) { delete pair.second;
delete it->second;
}
base::FilePath incognito_db_dir = base::FilePath incognito_db_dir =
profile_path_.Append(kIncognitoDatabaseDirectoryName); profile_path_.Append(kIncognitoDatabaseDirectoryName);
...@@ -844,28 +825,24 @@ void DatabaseTracker::ClearSessionOnlyOrigins() { ...@@ -844,28 +825,24 @@ void DatabaseTracker::ClearSessionOnlyOrigins() {
std::vector<std::string> origin_identifiers; std::vector<std::string> origin_identifiers;
GetAllOriginIdentifiers(&origin_identifiers); GetAllOriginIdentifiers(&origin_identifiers);
for (std::vector<std::string>::iterator origin = for (const auto& origin : origin_identifiers) {
origin_identifiers.begin(); GURL origin_url = storage::GetOriginURLFromIdentifier(origin);
origin != origin_identifiers.end(); ++origin) {
GURL origin_url = storage::GetOriginURLFromIdentifier(*origin);
if (!special_storage_policy_->IsStorageSessionOnly(origin_url)) if (!special_storage_policy_->IsStorageSessionOnly(origin_url))
continue; continue;
if (special_storage_policy_->IsStorageProtected(origin_url)) if (special_storage_policy_->IsStorageProtected(origin_url))
continue; continue;
storage::OriginInfo origin_info; storage::OriginInfo origin_info;
std::vector<base::string16> databases; std::vector<base::string16> databases;
GetOriginInfo(*origin, &origin_info); GetOriginInfo(origin, &origin_info);
origin_info.GetAllDatabaseNames(&databases); origin_info.GetAllDatabaseNames(&databases);
for (std::vector<base::string16>::iterator database = databases.begin(); for (const auto& database : databases) {
database != databases.end(); ++database) { base::File file(
base::File file(GetFullDBFilePath(*origin, *database), GetFullDBFilePath(origin, database),
base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_SHARE_DELETE |
base::File::FLAG_SHARE_DELETE | base::File::FLAG_DELETE_ON_CLOSE | base::File::FLAG_READ);
base::File::FLAG_DELETE_ON_CLOSE |
base::File::FLAG_READ);
} }
DeleteOrigin(*origin, true); DeleteOrigin(origin, true);
} }
} }
......
...@@ -17,11 +17,9 @@ namespace { ...@@ -17,11 +17,9 @@ namespace {
bool IsSafeSuffix(const base::string16& suffix) { bool IsSafeSuffix(const base::string16& suffix) {
base::char16 prev_c = 0; base::char16 prev_c = 0;
for (base::string16::const_iterator it = suffix.begin(); for (const base::char16 c : suffix) {
it < suffix.end(); ++it) { if (!(base::IsAsciiAlpha(c) || base::IsAsciiDigit(c) || c == '-' ||
base::char16 c = *it; c == '.' || c == '_')) {
if (!(base::IsAsciiAlpha(c) || base::IsAsciiDigit(c) ||
c == '-' || c == '.' || c == '_')) {
return false; return false;
} }
if (c == '.' && prev_c == '.') if (c == '.' && prev_c == '.')
......
...@@ -58,21 +58,21 @@ void DatabaseConnections::RemoveAllConnections() { ...@@ -58,21 +58,21 @@ void DatabaseConnections::RemoveAllConnections() {
connections_.clear(); connections_.clear();
} }
void DatabaseConnections::RemoveConnections( std::vector<std::pair<std::string, base::string16>>
const DatabaseConnections& connections, DatabaseConnections::RemoveConnections(const DatabaseConnections& connections) {
std::vector<std::pair<std::string, base::string16> >* closed_dbs) { std::vector<std::pair<std::string, base::string16>> closed_dbs;
for (OriginConnections::const_iterator origin_it = for (const auto& origin_connections_pair : connections.connections_) {
connections.connections_.begin(); const DBConnections& db_connections = origin_connections_pair.second;
origin_it != connections.connections_.end(); for (const auto& count_size_pair : db_connections) {
origin_it++) { if (RemoveConnectionsHelper(origin_connections_pair.first,
const DBConnections& db_connections = origin_it->second; count_size_pair.first,
for (DBConnections::const_iterator db_it = db_connections.begin(); count_size_pair.second.first)) {
db_it != db_connections.end(); db_it++) { closed_dbs.emplace_back(origin_connections_pair.first,
if (RemoveConnectionsHelper(origin_it->first, db_it->first, count_size_pair.first);
db_it->second.first)) }
closed_dbs->push_back(std::make_pair(origin_it->first, db_it->first));
} }
} }
return closed_dbs;
} }
int64_t DatabaseConnections::GetOpenDatabaseSize( int64_t DatabaseConnections::GetOpenDatabaseSize(
...@@ -90,18 +90,15 @@ void DatabaseConnections::SetOpenDatabaseSize( ...@@ -90,18 +90,15 @@ void DatabaseConnections::SetOpenDatabaseSize(
connections_[origin_identifier][database_name].second = size; connections_[origin_identifier][database_name].second = size;
} }
void DatabaseConnections::ListConnections( std::vector<std::pair<std::string, base::string16>>
std::vector<std::pair<std::string, base::string16> > *list) const { DatabaseConnections::ListConnections() const {
for (OriginConnections::const_iterator origin_it = std::vector<std::pair<std::string, base::string16>> list;
connections_.begin(); for (const auto& origin_connections_pair : connections_) {
origin_it != connections_.end(); const DBConnections& db_connections = origin_connections_pair.second;
origin_it++) { for (const auto& count_size_pair : db_connections)
const DBConnections& db_connections = origin_it->second; list.emplace_back(origin_connections_pair.first, count_size_pair.first);
for (DBConnections::const_iterator db_it = db_connections.begin();
db_it != db_connections.end(); db_it++) {
list->push_back(std::make_pair(origin_it->first, db_it->first));
}
} }
return list;
} }
bool DatabaseConnections::RemoveConnectionsHelper( bool DatabaseConnections::RemoveConnectionsHelper(
......
...@@ -42,9 +42,8 @@ class STORAGE_COMMON_EXPORT DatabaseConnections { ...@@ -42,9 +42,8 @@ class STORAGE_COMMON_EXPORT DatabaseConnections {
const base::string16& database_name); const base::string16& database_name);
void RemoveAllConnections(); void RemoveAllConnections();
void RemoveConnections( std::vector<std::pair<std::string, base::string16>> RemoveConnections(
const DatabaseConnections& connections, const DatabaseConnections& connections);
std::vector<std::pair<std::string, base::string16> >* closed_dbs);
// Database sizes can be kept only if IsDatabaseOpened returns true. // Database sizes can be kept only if IsDatabaseOpened returns true.
int64_t GetOpenDatabaseSize(const std::string& origin_identifier, int64_t GetOpenDatabaseSize(const std::string& origin_identifier,
...@@ -54,8 +53,7 @@ class STORAGE_COMMON_EXPORT DatabaseConnections { ...@@ -54,8 +53,7 @@ class STORAGE_COMMON_EXPORT DatabaseConnections {
int64_t size); int64_t size);
// Returns a list of the connections, <origin_id, name>. // Returns a list of the connections, <origin_id, name>.
void ListConnections( std::vector<std::pair<std::string, base::string16>> ListConnections() const;
std::vector<std::pair<std::string, base::string16> > *list) const;
private: private:
// Mapping from name to <openCount, size> // Mapping from name to <openCount, size>
......
...@@ -70,8 +70,8 @@ TEST(DatabaseConnectionsTest, DatabaseConnectionsTest) { ...@@ -70,8 +70,8 @@ TEST(DatabaseConnectionsTest, DatabaseConnectionsTest) {
another.AddConnection(kOriginId, kName); another.AddConnection(kOriginId, kName);
another.AddConnection(kOriginId, kName2); another.AddConnection(kOriginId, kName2);
std::vector<std::pair<std::string, base::string16> > closed_dbs; std::vector<std::pair<std::string, base::string16>> closed_dbs =
connections.RemoveConnections(another, &closed_dbs); connections.RemoveConnections(another);
EXPECT_EQ(1u, closed_dbs.size()); EXPECT_EQ(1u, closed_dbs.size());
EXPECT_EQ(kOriginId, closed_dbs[0].first); EXPECT_EQ(kOriginId, closed_dbs[0].first);
EXPECT_EQ(kName2, closed_dbs[0].second); EXPECT_EQ(kName2, closed_dbs[0].second);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment