summaryrefslogtreecommitdiffstats
path: root/WebKit/chromium/src/WebDatabase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/chromium/src/WebDatabase.cpp')
-rw-r--r--WebKit/chromium/src/WebDatabase.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/WebKit/chromium/src/WebDatabase.cpp b/WebKit/chromium/src/WebDatabase.cpp
index 2cd36b6..50b9220 100644
--- a/WebKit/chromium/src/WebDatabase.cpp
+++ b/WebKit/chromium/src/WebDatabase.cpp
@@ -32,7 +32,9 @@
#include "WebDatabase.h"
#include "Database.h"
+#include "DatabaseTask.h"
#include "DatabaseThread.h"
+#include "DatabaseTracker.h"
#include "Document.h"
#include "KURL.h"
#include "QuotaTracker.h"
@@ -106,6 +108,22 @@ void WebDatabase::updateDatabaseSize(
originIdentifier, databaseName, databaseSize, spaceAvailable);
}
+void WebDatabase::closeDatabaseImmediately(const WebString& originIdentifier, const WebString& databaseName)
+{
+ HashSet<RefPtr<Database> > databaseHandles;
+ PassRefPtr<SecurityOrigin> originPrp(*WebSecurityOrigin::createFromDatabaseIdentifier(originIdentifier));
+ RefPtr<SecurityOrigin> origin = originPrp;
+ DatabaseTracker::tracker().getOpenDatabases(origin.get(), databaseName, &databaseHandles);
+ for (HashSet<RefPtr<Database> >::iterator it = databaseHandles.begin(); it != databaseHandles.end(); ++it) {
+ Database* database = it->get();
+ DatabaseThread* databaseThread = database->scriptExecutionContext()->databaseThread();
+ if (databaseThread && !databaseThread->terminationRequested()) {
+ database->stop();
+ databaseThread->scheduleTask(DatabaseCloseTask::create(database, 0));
+ }
+ }
+}
+
WebDatabase::WebDatabase(const WTF::PassRefPtr<Database>& database)
: m_private(static_cast<WebDatabasePrivate*>(database.releaseRef()))
{