Index: webkit/database/database_tracker.cc |
=================================================================== |
--- webkit/database/database_tracker.cc (revision 98166) |
+++ webkit/database/database_tracker.cc (working copy) |
@@ -141,11 +141,14 @@ |
InsertOrUpdateDatabaseDetails(origin_identifier, database_name, |
database_description, estimated_size); |
if (database_connections_.AddConnection(origin_identifier, database_name)) { |
- *database_size = SeedOpenDatabaseSize(origin_identifier, database_name); |
+ *database_size = SeedOpenDatabaseInfo(origin_identifier, |
+ database_name, |
+ database_description); |
return; |
} |
- *database_size = UpdateOpenDatabaseSizeAndNotify(origin_identifier, |
- database_name); |
+ *database_size = UpdateOpenDatabaseInfoAndNotify(origin_identifier, |
+ database_name, |
+ &database_description); |
} |
void DatabaseTracker::DatabaseModified(const string16& origin_identifier, |
@@ -278,7 +281,6 @@ |
const string16& origin_identifier, |
const string16& database_name) { |
DCHECK(!origin_identifier.empty()); |
- DCHECK(!database_name.empty()); |
if (!LazyInit()) |
return FilePath(); |
@@ -531,13 +533,16 @@ |
origins_info_map_.clear(); |
} |
-DatabaseTracker::CachedOriginInfo* DatabaseTracker::GetCachedOriginInfo( |
- const string16& origin_identifier) { |
+DatabaseTracker::CachedOriginInfo* DatabaseTracker::MaybeGetCachedOriginInfo( |
+ const string16& origin_identifier, bool create_if_needed) { |
if (!LazyInit()) |
return NULL; |
// Populate the cache with data for this origin if needed. |
if (origins_info_map_.find(origin_identifier) == origins_info_map_.end()) { |
+ if (!create_if_needed) |
+ return NULL; |
+ |
std::vector<DatabaseDetails> details; |
if (!databases_table_->GetAllDatabaseDetailsForOrigin( |
origin_identifier, &details)) { |
@@ -573,25 +578,33 @@ |
return db_file_size; |
} |
-int64 DatabaseTracker::SeedOpenDatabaseSize( |
- const string16& origin_id, const string16& name) { |
+int64 DatabaseTracker::SeedOpenDatabaseInfo( |
+ const string16& origin_id, const string16& name, |
+ const string16& description) { |
DCHECK(database_connections_.IsDatabaseOpened(origin_id, name)); |
int64 size = GetDBFileSize(origin_id, name); |
database_connections_.SetOpenDatabaseSize(origin_id, name, size); |
- if (origins_info_map_.find(origin_id) != origins_info_map_.end()) |
- origins_info_map_[origin_id].SetDatabaseSize(name, size); |
+ CachedOriginInfo* info = MaybeGetCachedOriginInfo(origin_id, false); |
+ if (info) { |
+ info->SetDatabaseSize(name, size); |
+ info->SetDatabaseDescription(name, description); |
+ } |
return size; |
} |
-int64 DatabaseTracker::UpdateOpenDatabaseSizeAndNotify( |
- const string16& origin_id, const string16& name) { |
+int64 DatabaseTracker::UpdateOpenDatabaseInfoAndNotify( |
+ const string16& origin_id, const string16& name, |
+ const string16* opt_description) { |
DCHECK(database_connections_.IsDatabaseOpened(origin_id, name)); |
int64 new_size = GetDBFileSize(origin_id, name); |
int64 old_size = database_connections_.GetOpenDatabaseSize(origin_id, name); |
+ CachedOriginInfo* info = MaybeGetCachedOriginInfo(origin_id, false); |
+ if (info && opt_description) |
+ info->SetDatabaseDescription(name, *opt_description); |
if (old_size != new_size) { |
database_connections_.SetOpenDatabaseSize(origin_id, name, new_size); |
- if (origins_info_map_.find(origin_id) != origins_info_map_.end()) |
- origins_info_map_[origin_id].SetDatabaseSize(name, new_size); |
+ if (info) |
+ info->SetDatabaseSize(name, new_size); |
if (quota_manager_proxy_) |
quota_manager_proxy_->NotifyStorageModified( |
quota::QuotaClient::kDatabase, |