summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/indexed_db_dispatcher.cc
diff options
context:
space:
mode:
authorandreip@chromium.org <andreip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-20 16:05:02 +0000
committerandreip@chromium.org <andreip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-20 16:05:02 +0000
commit1f79401611f73ac332233ce35ef1c29b7c7af0c2 (patch)
tree93247f538a34e9d2ba7d6472599321869a051309 /chrome/renderer/indexed_db_dispatcher.cc
parent7de5b825b9c3baacaa038f3f1e6c7c45bdabad8e (diff)
downloadchromium_src-1f79401611f73ac332233ce35ef1c29b7c7af0c2.zip
chromium_src-1f79401611f73ac332233ce35ef1c29b7c7af0c2.tar.gz
chromium_src-1f79401611f73ac332233ce35ef1c29b7c7af0c2.tar.bz2
Add transaction coordinator. Allow idle transactions to be aborted when their parent JS context finishes executing.
This change depends on the following WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=44101 Review URL: http://codereview.chromium.org/3165026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56862 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/indexed_db_dispatcher.cc')
-rw-r--r--chrome/renderer/indexed_db_dispatcher.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/chrome/renderer/indexed_db_dispatcher.cc b/chrome/renderer/indexed_db_dispatcher.cc
index 1087eec..e79ed33 100644
--- a/chrome/renderer/indexed_db_dispatcher.cc
+++ b/chrome/renderer/indexed_db_dispatcher.cc
@@ -51,6 +51,8 @@ bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
OnSuccessSerializedScriptValue)
IPC_MESSAGE_HANDLER(ViewMsg_IDBCallbacksError,
OnError)
+ IPC_MESSAGE_HANDLER(ViewMsg_IDBTransactionCallbacksAbort,
+ OnAbort)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -177,6 +179,11 @@ void IndexedDBDispatcher::RequestIDBObjectStoreOpenCursor(
new ViewHostMsg_IDBObjectStoreOpenCursor(params));
}
+void IndexedDBDispatcher::RequestIDBTransactionSetCallbacks(
+ WebKit::WebIDBTransactionCallbacks* callbacks) {
+ pending_transaction_callbacks_.AddWithID(callbacks, callbacks->id());
+}
+
void IndexedDBDispatcher::OnSuccessNull(int32 response_id) {
WebKit::WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
callbacks->onSuccess();
@@ -232,3 +239,11 @@ void IndexedDBDispatcher::OnError(int32 response_id, int code,
callbacks->onError(WebIDBDatabaseError(code, message));
pending_callbacks_.Remove(response_id);
}
+
+void IndexedDBDispatcher::OnAbort(int transaction_id) {
+ WebKit::WebIDBTransactionCallbacks* callbacks =
+ pending_transaction_callbacks_.Lookup(transaction_id);
+ DCHECK(callbacks);
+ callbacks->onAbort();
+ pending_transaction_callbacks_.Remove(transaction_id);
+} \ No newline at end of file