| 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(
|
|
|