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

Unified Diff: webkit/support/simple_database_system.cc

Issue 7037018: DB quota (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months 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
« no previous file with comments | « webkit/support/simple_database_system.h ('k') | webkit/support/test_webkit_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/support/simple_database_system.cc
===================================================================
--- webkit/support/simple_database_system.cc (revision 86348)
+++ webkit/support/simple_database_system.cc (working copy)
@@ -19,6 +19,7 @@
using webkit_database::DatabaseTracker;
using webkit_database::DatabaseUtil;
+using webkit_database::OriginInfo;
using webkit_database::VfsBackend;
SimpleDatabaseSystem* SimpleDatabaseSystem::instance_ = NULL;
@@ -30,6 +31,7 @@
SimpleDatabaseSystem::SimpleDatabaseSystem()
: db_thread_("SimpleDBThread"),
+ quota_per_origin_(5 * 1024 * 1024),
open_connections_(new webkit_database::DatabaseConnectionsWrapper) {
DCHECK(!instance_);
instance_ = this;
@@ -120,6 +122,17 @@
return result;
}
+int64 SimpleDatabaseSystem::GetSpaceAvailable(
+ const string16& origin_identifier) {
+ int64 result = 0;
+ base::WaitableEvent done_event(false, false);
+ db_thread_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &SimpleDatabaseSystem::VfsGetSpaceAvailable,
+ origin_identifier, &result, &done_event));
+ done_event.Wait();
+ return result;
+}
+
void SimpleDatabaseSystem::ClearAllDatabases() {
open_connections_->WaitForAllDatabasesToClose();
db_thread_proxy_->PostTask(FROM_HERE,
@@ -133,7 +146,7 @@
quota));
return;
}
- db_tracker_->SetDefaultQuota(quota);
+ quota_per_origin_ = quota;
}
void SimpleDatabaseSystem::DatabaseOpened(const string16& origin_identifier,
@@ -142,12 +155,12 @@
int64 estimated_size) {
DCHECK(db_thread_proxy_->BelongsToCurrentThread());
int64 database_size = 0;
- int64 space_available = 0;
+ int64 space_available_not_used = 0;
db_tracker_->DatabaseOpened(
origin_identifier, database_name, description,
- estimated_size, &database_size, &space_available);
+ estimated_size, &database_size, &space_available_not_used);
OnDatabaseSizeChanged(origin_identifier, database_name,
- database_size, space_available);
+ database_size, 0);
}
void SimpleDatabaseSystem::DatabaseModified(const string16& origin_identifier,
@@ -167,13 +180,13 @@
const string16& origin_identifier,
const string16& database_name,
int64 database_size,
- int64 space_available) {
+ int64 space_available_not_used) {
DCHECK(db_thread_proxy_->BelongsToCurrentThread());
// We intentionally call into webkit on our background db_thread_
// to better emulate what happens in chrome where this method is
// invoked on the background ipc thread.
WebKit::WebDatabase::updateDatabaseSize(
- origin_identifier, database_name, database_size, space_available);
+ origin_identifier, database_name, database_size);
}
void SimpleDatabaseSystem::OnDatabaseScheduledForDeletion(
@@ -238,6 +251,23 @@
done_event->Signal();
}
+void SimpleDatabaseSystem::VfsGetSpaceAvailable(
+ const string16& origin_identifier,
+ int64* result, base::WaitableEvent* done_event) {
+ DCHECK(db_thread_proxy_->BelongsToCurrentThread());
+ // This method isn't actually part of the "vfs" interface, but it is
+ // used from within webcore and handled here in the same fashion.
+ OriginInfo info;
+ if (db_tracker_->GetOriginInfo(origin_identifier, &info)) {
+ int64 space_available = quota_per_origin_ - info.TotalSize();
+ *result = space_available < 0 ? 0 : space_available;
+ } else {
+ NOTREACHED();
+ *result = 0;
+ }
+ done_event->Signal();
+}
+
FilePath SimpleDatabaseSystem::GetFullFilePathForVfsFile(
const string16& vfs_file_name) {
DCHECK(db_thread_proxy_->BelongsToCurrentThread());
« no previous file with comments | « webkit/support/simple_database_system.h ('k') | webkit/support/test_webkit_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698