Index: storage/browser/database/database_tracker.cc |
diff --git a/webkit/browser/database/database_tracker.cc b/storage/browser/database/database_tracker.cc |
similarity index 85% |
rename from webkit/browser/database/database_tracker.cc |
rename to storage/browser/database/database_tracker.cc |
index ab1f6fd2806cd78607c89c435fac92cb26d56712..8d72e227d8c2efa053b760c5c06ba2a36b201e9f 100644 |
--- a/webkit/browser/database/database_tracker.cc |
+++ b/storage/browser/database/database_tracker.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "webkit/browser/database/database_tracker.h" |
+#include "storage/browser/database/database_tracker.h" |
#include <algorithm> |
#include <vector> |
@@ -20,12 +20,12 @@ |
#include "sql/meta_table.h" |
#include "sql/transaction.h" |
#include "third_party/sqlite/sqlite3.h" |
-#include "webkit/browser/database/database_quota_client.h" |
-#include "webkit/browser/database/database_util.h" |
-#include "webkit/browser/database/databases_table.h" |
-#include "webkit/browser/quota/quota_manager_proxy.h" |
-#include "webkit/browser/quota/special_storage_policy.h" |
-#include "webkit/common/database/database_identifier.h" |
+#include "storage/browser/database/database_quota_client.h" |
+#include "storage/browser/database/database_util.h" |
+#include "storage/browser/database/databases_table.h" |
+#include "storage/browser/quota/quota_manager_proxy.h" |
+#include "storage/browser/quota/special_storage_policy.h" |
+#include "storage/common/database/database_identifier.h" |
namespace webkit_database { |
@@ -43,20 +43,23 @@ const base::FilePath::CharType kTemporaryDirectoryPrefix[] = |
const base::FilePath::CharType kTemporaryDirectoryPattern[] = |
FILE_PATH_LITERAL("DeleteMe*"); |
-OriginInfo::OriginInfo() |
- : total_size_(0) {} |
+OriginInfo::OriginInfo() : total_size_(0) { |
+} |
OriginInfo::OriginInfo(const OriginInfo& origin_info) |
: origin_identifier_(origin_info.origin_identifier_), |
total_size_(origin_info.total_size_), |
- database_info_(origin_info.database_info_) {} |
+ database_info_(origin_info.database_info_) { |
+} |
-OriginInfo::~OriginInfo() {} |
+OriginInfo::~OriginInfo() { |
+} |
void OriginInfo::GetAllDatabaseNames( |
std::vector<base::string16>* databases) const { |
for (DatabaseInfoMap::const_iterator it = database_info_.begin(); |
- it != database_info_.end(); it++) { |
+ it != database_info_.end(); |
+ it++) { |
databases->push_back(it->first); |
} |
} |
@@ -77,7 +80,8 @@ base::string16 OriginInfo::GetDatabaseDescription( |
} |
OriginInfo::OriginInfo(const std::string& origin_identifier, int64 total_size) |
- : origin_identifier_(origin_identifier), total_size_(total_size) {} |
+ : origin_identifier_(origin_identifier), total_size_(total_size) { |
+} |
DatabaseTracker::DatabaseTracker( |
const base::FilePath& profile_path, |
@@ -125,17 +129,15 @@ void DatabaseTracker::DatabaseOpened(const std::string& origin_identifier, |
webkit_database::GetOriginFromIdentifier(origin_identifier), |
quota::kStorageTypeTemporary); |
- InsertOrUpdateDatabaseDetails(origin_identifier, database_name, |
- database_description, estimated_size); |
+ InsertOrUpdateDatabaseDetails( |
+ origin_identifier, database_name, database_description, estimated_size); |
if (database_connections_.AddConnection(origin_identifier, database_name)) { |
- *database_size = SeedOpenDatabaseInfo(origin_identifier, |
- database_name, |
- database_description); |
+ *database_size = SeedOpenDatabaseInfo( |
+ origin_identifier, database_name, database_description); |
return; |
} |
- *database_size = UpdateOpenDatabaseInfoAndNotify(origin_identifier, |
- database_name, |
- &database_description); |
+ *database_size = UpdateOpenDatabaseInfoAndNotify( |
+ origin_identifier, database_name, &database_description); |
} |
void DatabaseTracker::DatabaseModified(const std::string& origin_identifier, |
@@ -165,10 +167,9 @@ void DatabaseTracker::DatabaseClosed(const std::string& origin_identifier, |
DeleteDatabaseIfNeeded(origin_identifier, database_name); |
} |
-void DatabaseTracker::HandleSqliteError( |
- const std::string& origin_identifier, |
- const base::string16& database_name, |
- int error) { |
+void DatabaseTracker::HandleSqliteError(const std::string& origin_identifier, |
+ const base::string16& database_name, |
+ int error) { |
// We only handle errors that indicate corruption and we |
// do so with a heavy hand, we delete it. Any renderers/workers |
// with this database open will receive a message to close it |
@@ -178,8 +179,7 @@ void DatabaseTracker::HandleSqliteError( |
// Note: the client-side filters out all but these two errors as |
// a small optimization, see WebDatabaseObserverImpl::HandleSqliteError. |
if (error == SQLITE_CORRUPT || error == SQLITE_NOTADB) { |
- DeleteDatabase(origin_identifier, database_name, |
- net::CompletionCallback()); |
+ DeleteDatabase(origin_identifier, database_name, net::CompletionCallback()); |
} |
} |
@@ -198,13 +198,17 @@ void DatabaseTracker::CloseDatabases(const DatabaseConnections& connections) { |
std::vector<std::pair<std::string, base::string16> > open_dbs; |
connections.ListConnections(&open_dbs); |
for (std::vector<std::pair<std::string, base::string16> >::iterator it = |
- open_dbs.begin(); it != open_dbs.end(); ++it) |
+ open_dbs.begin(); |
+ it != open_dbs.end(); |
+ ++it) |
UpdateOpenDatabaseSizeAndNotify(it->first, it->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) { |
+ closed_dbs.begin(); |
+ it != closed_dbs.end(); |
+ ++it) { |
DeleteDatabaseIfNeeded(it->first, it->second); |
} |
} |
@@ -294,8 +298,8 @@ base::FilePath DatabaseTracker::GetFullDBFilePath( |
return base::FilePath(); |
return db_dir_.Append(base::FilePath::FromUTF16Unsafe( |
- GetOriginDirectory(origin_identifier))).AppendASCII( |
- base::Int64ToString(id)); |
+ GetOriginDirectory(origin_identifier))) |
+ .AppendASCII(base::Int64ToString(id)); |
} |
bool DatabaseTracker::GetOriginInfo(const std::string& origin_identifier, |
@@ -317,8 +321,7 @@ bool DatabaseTracker::GetAllOriginIdentifiers( |
return databases_table_->GetAllOriginIdentifiers(origin_identifiers); |
} |
-bool DatabaseTracker::GetAllOriginsInfo( |
- std::vector<OriginInfo>* origins_info) { |
+bool DatabaseTracker::GetAllOriginsInfo(std::vector<OriginInfo>* origins_info) { |
DCHECK(origins_info); |
DCHECK(origins_info->empty()); |
@@ -327,7 +330,8 @@ bool DatabaseTracker::GetAllOriginsInfo( |
return false; |
for (std::vector<std::string>::const_iterator it = origins.begin(); |
- it != origins.end(); it++) { |
+ it != origins.end(); |
+ it++) { |
CachedOriginInfo* origin_info = GetCachedOriginInfo(*it); |
if (!origin_info) { |
// Restore 'origins_info' to its initial state. |
@@ -372,7 +376,8 @@ bool DatabaseTracker::DeleteClosedDatabase( |
std::vector<DatabaseDetails> details; |
if (databases_table_->GetAllDatabaseDetailsForOriginIdentifier( |
- origin_identifier, &details) && details.empty()) { |
+ origin_identifier, &details) && |
+ details.empty()) { |
// Try to delete the origin in case this was the last database. |
DeleteOrigin(origin_identifier, false); |
} |
@@ -402,20 +407,17 @@ bool DatabaseTracker::DeleteOrigin(const std::string& origin_identifier, |
// as we can't delete the origin directory on windows if it contains opened |
// files. |
base::FilePath new_origin_dir; |
- base::CreateTemporaryDirInDir(db_dir_, |
- kTemporaryDirectoryPrefix, |
- &new_origin_dir); |
+ base::CreateTemporaryDirInDir( |
+ db_dir_, kTemporaryDirectoryPrefix, &new_origin_dir); |
base::FileEnumerator databases( |
- origin_dir, |
- false, |
- base::FileEnumerator::FILES); |
+ origin_dir, false, base::FileEnumerator::FILES); |
for (base::FilePath database = databases.Next(); !database.empty(); |
database = databases.Next()) { |
base::FilePath new_file = new_origin_dir.Append(database.BaseName()); |
base::Move(database, new_file); |
} |
base::DeleteFile(origin_dir, true); |
- base::DeleteFile(new_origin_dir, true); // might fail on windows. |
+ base::DeleteFile(new_origin_dir, true); // might fail on windows. |
databases_table_->DeleteOriginIdentifier(origin_identifier); |
@@ -450,11 +452,10 @@ bool DatabaseTracker::LazyInit() { |
// If there are left-over directories from failed deletion attempts, clean |
// them up. |
if (base::DirectoryExists(db_dir_)) { |
- base::FileEnumerator directories( |
- db_dir_, |
- false, |
- base::FileEnumerator::DIRECTORIES, |
- kTemporaryDirectoryPattern); |
+ base::FileEnumerator directories(db_dir_, |
+ false, |
+ base::FileEnumerator::DIRECTORIES, |
+ kTemporaryDirectoryPattern); |
for (base::FilePath directory = directories.Next(); !directory.empty(); |
directory = directories.Next()) { |
base::DeleteFile(directory, true); |
@@ -479,12 +480,11 @@ bool DatabaseTracker::LazyInit() { |
databases_table_.reset(new DatabasesTable(db_.get())); |
meta_table_.reset(new sql::MetaTable()); |
- is_initialized_ = |
- base::CreateDirectory(db_dir_) && |
- (db_->is_open() || |
- (is_incognito_ ? db_->OpenInMemory() : |
- db_->Open(kTrackerDatabaseFullPath))) && |
- UpgradeToCurrentVersion(); |
+ is_initialized_ = base::CreateDirectory(db_dir_) && |
+ (db_->is_open() || |
+ (is_incognito_ ? db_->OpenInMemory() |
+ : db_->Open(kTrackerDatabaseFullPath))) && |
+ UpgradeToCurrentVersion(); |
if (!is_initialized_) { |
databases_table_.reset(NULL); |
meta_table_.reset(NULL); |
@@ -534,7 +534,8 @@ void DatabaseTracker::ClearAllCachedOriginInfo() { |
} |
DatabaseTracker::CachedOriginInfo* DatabaseTracker::MaybeGetCachedOriginInfo( |
- const std::string& origin_identifier, bool create_if_needed) { |
+ const std::string& origin_identifier, |
+ bool create_if_needed) { |
if (!LazyInit()) |
return NULL; |
@@ -552,10 +553,11 @@ DatabaseTracker::CachedOriginInfo* DatabaseTracker::MaybeGetCachedOriginInfo( |
CachedOriginInfo& origin_info = origins_info_map_[origin_identifier]; |
origin_info.SetOriginIdentifier(origin_identifier); |
for (std::vector<DatabaseDetails>::const_iterator it = details.begin(); |
- it != details.end(); it++) { |
+ it != details.end(); |
+ it++) { |
int64 db_file_size; |
- if (database_connections_.IsDatabaseOpened( |
- origin_identifier, it->database_name)) { |
+ if (database_connections_.IsDatabaseOpened(origin_identifier, |
+ it->database_name)) { |
db_file_size = database_connections_.GetOpenDatabaseSize( |
origin_identifier, it->database_name); |
} else { |
@@ -571,20 +573,20 @@ DatabaseTracker::CachedOriginInfo* DatabaseTracker::MaybeGetCachedOriginInfo( |
int64 DatabaseTracker::GetDBFileSize(const std::string& origin_identifier, |
const base::string16& database_name) { |
- base::FilePath db_file_name = GetFullDBFilePath(origin_identifier, |
- database_name); |
+ base::FilePath db_file_name = |
+ GetFullDBFilePath(origin_identifier, database_name); |
int64 db_file_size = 0; |
if (!base::GetFileSize(db_file_name, &db_file_size)) |
db_file_size = 0; |
return db_file_size; |
} |
-int64 DatabaseTracker::SeedOpenDatabaseInfo( |
- const std::string& origin_id, const base::string16& name, |
- const base::string16& description) { |
+int64 DatabaseTracker::SeedOpenDatabaseInfo(const std::string& origin_id, |
+ const base::string16& name, |
+ const base::string16& description) { |
DCHECK(database_connections_.IsDatabaseOpened(origin_id, name)); |
int64 size = GetDBFileSize(origin_id, name); |
- database_connections_.SetOpenDatabaseSize(origin_id, name, size); |
+ database_connections_.SetOpenDatabaseSize(origin_id, name, size); |
CachedOriginInfo* info = MaybeGetCachedOriginInfo(origin_id, false); |
if (info) { |
info->SetDatabaseSize(name, size); |
@@ -594,7 +596,8 @@ int64 DatabaseTracker::SeedOpenDatabaseInfo( |
} |
int64 DatabaseTracker::UpdateOpenDatabaseInfoAndNotify( |
- const std::string& origin_id, const base::string16& name, |
+ const std::string& origin_id, |
+ const base::string16& name, |
const base::string16* opt_description) { |
DCHECK(database_connections_.IsDatabaseOpened(origin_id, name)); |
int64 new_size = GetDBFileSize(origin_id, name); |
@@ -612,8 +615,8 @@ int64 DatabaseTracker::UpdateOpenDatabaseInfoAndNotify( |
webkit_database::GetOriginFromIdentifier(origin_id), |
quota::kStorageTypeTemporary, |
new_size - old_size); |
- FOR_EACH_OBSERVER(Observer, observers_, OnDatabaseSizeChanged( |
- origin_id, name, new_size)); |
+ FOR_EACH_OBSERVER( |
+ Observer, observers_, OnDatabaseSizeChanged(origin_id, name, new_size)); |
} |
return new_size; |
} |
@@ -621,11 +624,13 @@ int64 DatabaseTracker::UpdateOpenDatabaseInfoAndNotify( |
void DatabaseTracker::ScheduleDatabaseForDeletion( |
const std::string& origin_identifier, |
const base::string16& database_name) { |
- DCHECK(database_connections_.IsDatabaseOpened(origin_identifier, |
- database_name)); |
+ DCHECK( |
+ database_connections_.IsDatabaseOpened(origin_identifier, database_name)); |
dbs_to_be_deleted_[origin_identifier].insert(database_name); |
- FOR_EACH_OBSERVER(Observer, observers_, OnDatabaseScheduledForDeletion( |
- origin_identifier, database_name)); |
+ FOR_EACH_OBSERVER( |
+ Observer, |
+ observers_, |
+ OnDatabaseScheduledForDeletion(origin_identifier, database_name)); |
} |
void DatabaseTracker::ScheduleDatabasesForDeletion( |
@@ -636,9 +641,11 @@ void DatabaseTracker::ScheduleDatabasesForDeletion( |
if (!callback.is_null()) |
deletion_callbacks_.push_back(std::make_pair(callback, databases)); |
for (DatabaseSet::const_iterator ori = databases.begin(); |
- ori != databases.end(); ++ori) { |
+ ori != databases.end(); |
+ ++ori) { |
for (std::set<base::string16>::const_iterator db = ori->second.begin(); |
- db != ori->second.end(); ++db) |
+ db != ori->second.end(); |
+ ++db) |
ScheduleDatabaseForDeletion(ori->first, *db); |
} |
} |
@@ -677,7 +684,8 @@ int DatabaseTracker::DeleteDataModifiedSince( |
int rv = net::OK; |
for (std::vector<std::string>::const_iterator ori = |
origins_identifiers.begin(); |
- ori != origins_identifiers.end(); ++ori) { |
+ ori != origins_identifiers.end(); |
+ ++ori) { |
if (special_storage_policy_.get() && |
special_storage_policy_->IsStorageProtected( |
webkit_database::GetOriginFromIdentifier(*ori))) { |
@@ -685,11 +693,12 @@ int DatabaseTracker::DeleteDataModifiedSince( |
} |
std::vector<DatabaseDetails> details; |
- if (!databases_table_-> |
- GetAllDatabaseDetailsForOriginIdentifier(*ori, &details)) |
+ if (!databases_table_->GetAllDatabaseDetailsForOriginIdentifier(*ori, |
+ &details)) |
rv = net::ERR_FAILED; |
for (std::vector<DatabaseDetails>::const_iterator db = details.begin(); |
- db != details.end(); ++db) { |
+ db != details.end(); |
+ ++db) { |
base::FilePath db_file = GetFullDBFilePath(*ori, db->database_name); |
base::File::Info file_info; |
base::GetFileInfo(db_file, &file_info); |
@@ -715,18 +724,20 @@ int DatabaseTracker::DeleteDataModifiedSince( |
} |
int DatabaseTracker::DeleteDataForOrigin( |
- const std::string& origin, const net::CompletionCallback& callback) { |
+ const std::string& origin, |
+ const net::CompletionCallback& callback) { |
if (!LazyInit()) |
return net::ERR_FAILED; |
DatabaseSet to_be_deleted; |
std::vector<DatabaseDetails> details; |
- if (!databases_table_-> |
- GetAllDatabaseDetailsForOriginIdentifier(origin, &details)) |
+ if (!databases_table_->GetAllDatabaseDetailsForOriginIdentifier(origin, |
+ &details)) |
return net::ERR_FAILED; |
for (std::vector<DatabaseDetails>::const_iterator db = details.begin(); |
- db != details.end(); ++db) { |
+ db != details.end(); |
+ ++db) { |
// Check if the database is opened by any renderer. |
if (database_connections_.IsDatabaseOpened(origin, db->database_name)) |
to_be_deleted[origin].insert(db->database_name); |
@@ -789,7 +800,8 @@ void DatabaseTracker::DeleteIncognitoDBDirectory() { |
is_initialized_ = false; |
for (FileHandlesMap::iterator it = incognito_file_handles_.begin(); |
- it != incognito_file_handles_.end(); it++) { |
+ it != incognito_file_handles_.end(); |
+ it++) { |
delete it->second; |
} |
@@ -814,9 +826,9 @@ void DatabaseTracker::ClearSessionOnlyOrigins() { |
std::vector<std::string> origin_identifiers; |
GetAllOriginIdentifiers(&origin_identifiers); |
- for (std::vector<std::string>::iterator origin = |
- origin_identifiers.begin(); |
- origin != origin_identifiers.end(); ++origin) { |
+ for (std::vector<std::string>::iterator origin = origin_identifiers.begin(); |
+ origin != origin_identifiers.end(); |
+ ++origin) { |
GURL origin_url = webkit_database::GetOriginFromIdentifier(*origin); |
if (!special_storage_policy_->IsStorageSessionOnly(origin_url)) |
continue; |
@@ -828,18 +840,17 @@ void DatabaseTracker::ClearSessionOnlyOrigins() { |
origin_info.GetAllDatabaseNames(&databases); |
for (std::vector<base::string16>::iterator database = databases.begin(); |
- database != databases.end(); ++database) { |
- base::File file(GetFullDBFilePath(*origin, *database), |
- base::File::FLAG_OPEN_ALWAYS | |
- base::File::FLAG_SHARE_DELETE | |
- base::File::FLAG_DELETE_ON_CLOSE | |
- base::File::FLAG_READ); |
+ database != databases.end(); |
+ ++database) { |
+ base::File file( |
+ GetFullDBFilePath(*origin, *database), |
+ base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_SHARE_DELETE | |
+ base::File::FLAG_DELETE_ON_CLOSE | base::File::FLAG_READ); |
} |
DeleteOrigin(*origin, true); |
} |
} |
- |
void DatabaseTracker::Shutdown() { |
DCHECK(db_tracker_thread_.get()); |
DCHECK(db_tracker_thread_->BelongsToCurrentThread()); |