Index: webkit/database/database_tracker.cc |
=================================================================== |
--- webkit/database/database_tracker.cc (revision 40091) |
+++ webkit/database/database_tracker.cc (working copy) |
@@ -17,7 +17,6 @@ |
#include "net/base/net_errors.h" |
#include "webkit/database/databases_table.h" |
#include "webkit/database/quota_table.h" |
-#include "webkit/glue/webkit_glue.h" |
namespace webkit_database { |
@@ -27,7 +26,6 @@ |
FILE_PATH_LITERAL("Databases.db"); |
const int kCurrentVersion = 2; |
const int kCompatibleVersion = 1; |
-const int64 kDefaultExtensionQuota = 1024 * 1024 * 1024; |
const char* kExtensionOriginIdentifierPrefix = "chrome-extension_"; |
DatabaseTracker::DatabaseTracker(const FilePath& profile_path) |
@@ -158,6 +156,7 @@ |
const string16& database_name) const { |
DCHECK(!origin_identifier.empty()); |
DCHECK(!database_name.empty()); |
+ |
int64 id = databases_table_->GetDatabaseID( |
origin_identifier, database_name); |
if (id < 0) |
@@ -194,14 +193,26 @@ |
void DatabaseTracker::SetOriginQuota(const string16& origin_identifier, |
int64 new_quota) { |
+ if (!LazyInit()) |
+ return; |
+ |
if (quota_table_->SetOriginQuota(origin_identifier, new_quota) && |
(origins_info_map_.find(origin_identifier) != origins_info_map_.end())) { |
origins_info_map_[origin_identifier].SetQuota(new_quota); |
} |
} |
+void DatabaseTracker::SetOriginQuotaInMemory(const string16& origin_identifier, |
+ int64 new_quota) { |
+ DCHECK(new_quota >= 0); |
+ in_memory_quotas_[origin_identifier] = new_quota; |
+} |
+ |
bool DatabaseTracker::DeleteClosedDatabase(const string16& origin_identifier, |
const string16& database_name) { |
+ if (!LazyInit()) |
+ return false; |
+ |
// Check if the database is opened by any renderer. |
if (database_connections_.IsDatabaseOpened(origin_identifier, database_name)) |
return false; |
@@ -225,6 +236,9 @@ |
} |
bool DatabaseTracker::DeleteOrigin(const string16& origin_identifier) { |
+ if (!LazyInit()) |
+ return false; |
+ |
// Check if any database in this origin is opened by any renderer. |
if (database_connections_.IsOriginUsed(origin_identifier)) |
return false; |
@@ -354,15 +368,14 @@ |
origin_info.SetDatabaseDescription(it->database_name, it->description); |
} |
- int64 origin_quota = quota_table_->GetOriginQuota(origin_identifier); |
- if (origin_quota > 0) { |
- origin_info.SetQuota(origin_quota); |
- } else if (StartsWith(origin_identifier, |
- ASCIIToUTF16(kExtensionOriginIdentifierPrefix), |
- true)) { |
- origin_info.SetQuota(kDefaultExtensionQuota); |
+ if (in_memory_quotas_.find(origin_identifier) != in_memory_quotas_.end()) { |
+ origin_info.SetQuota(in_memory_quotas_[origin_identifier]); |
} else { |
- origin_info.SetQuota(default_quota_); |
+ int64 origin_quota = quota_table_->GetOriginQuota(origin_identifier); |
+ if (origin_quota > 0) |
+ origin_info.SetQuota(origin_quota); |
+ else |
+ origin_info.SetQuota(default_quota_); |
} |
} |