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

Unified Diff: content/renderer/indexed_db_dispatcher.cc

Issue 8747002: Dispatch IndexedDB IPC messages to worker threads (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: repurpose obsolete indexed-db switch to control idb on workers Created 9 years 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
Index: content/renderer/indexed_db_dispatcher.cc
diff --git a/content/renderer/indexed_db_dispatcher.cc b/content/renderer/indexed_db_dispatcher.cc
index 8b3ddda96cea6fb9d2aca33816449674ae090b2a..ea65a6fc9d9922d36c36283a4cc09125e2bd51fe 100644
--- a/content/renderer/indexed_db_dispatcher.cc
+++ b/content/renderer/indexed_db_dispatcher.cc
@@ -31,13 +31,16 @@ using WebKit::WebIDBDatabaseError;
using WebKit::WebIDBTransaction;
using WebKit::WebIDBTransactionCallbacks;
-IndexedDBDispatcher::IndexedDBDispatcher() {
+IndexedDBDispatcher::IndexedDBDispatcher(IndexedDBMessageFilter* filter) :
+ pending_callbacks_(filter),
+ pending_transaction_callbacks_(filter),
+ pending_database_callbacks_(filter) {
}
IndexedDBDispatcher::~IndexedDBDispatcher() {
}
-bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
+void IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg)
IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor,
@@ -62,7 +65,9 @@ bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
OnVersionChange)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
- return handled;
+ // If a message gets here, IndexedDBMessageFilter already determined that it
+ // is an IndexedDB message.
+ DCHECK(handled);
}
void IndexedDBDispatcher::Send(IPC::Message* msg) {
@@ -169,7 +174,10 @@ void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase(
void IndexedDBDispatcher::RequestIDBDatabaseClose(int32 idb_database_id) {
Send(new IndexedDBHostMsg_DatabaseClose(idb_database_id));
- pending_database_callbacks_.Remove(idb_database_id);
+ int callbacks_id = database_id_to_callbacks_id_[idb_database_id];
+ DCHECK(callbacks_id);
+ pending_database_callbacks_.Remove(callbacks_id);
+ database_id_to_callbacks_id_.erase(idb_database_id);
}
void IndexedDBDispatcher::RequestIDBDatabaseOpen(
@@ -177,8 +185,10 @@ void IndexedDBDispatcher::RequestIDBDatabaseOpen(
int32 idb_database_id) {
scoped_ptr<WebIDBDatabaseCallbacks> callbacks(callbacks_ptr);
- int32 response_id = pending_database_callbacks_.Add(callbacks.release());
- Send(new IndexedDBHostMsg_DatabaseOpen(response_id, idb_database_id));
+ int response_id = pending_database_callbacks_.Add(callbacks.release());
+ Send(new IndexedDBHostMsg_DatabaseOpen(idb_database_id, response_id));
+ DCHECK(!database_id_to_callbacks_id_[idb_database_id]);
+ database_id_to_callbacks_id_[idb_database_id] = response_id;
}
void IndexedDBDispatcher::RequestIDBDatabaseSetVersion(

Powered by Google App Engine
This is Rietveld 408576698