Index: content/common/indexed_db/indexed_db_dispatcher.cc |
diff --git a/content/common/indexed_db/indexed_db_dispatcher.cc b/content/common/indexed_db/indexed_db_dispatcher.cc |
index 8981c2c9a45462ffd18b45f92715394062c1e047..479bf9404b561a6a95720ff2e506b6e9b83da7e1 100644 |
--- a/content/common/indexed_db/indexed_db_dispatcher.cc |
+++ b/content/common/indexed_db/indexed_db_dispatcher.cc |
@@ -107,6 +107,8 @@ void IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksUpgradeNeeded, OnUpgradeNeeded) |
IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksAbort, OnAbort) |
IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksComplete, OnComplete) |
+ IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksForcedClose, |
+ OnForcedClose) |
IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksIntVersionChange, |
OnIntVersionChange) |
IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksVersionChange, |
@@ -742,6 +744,16 @@ void IndexedDBDispatcher::OnComplete(int32 thread_id, int32 transaction_id) { |
pending_transaction_callbacks_.Remove(transaction_id); |
} |
+void IndexedDBDispatcher::OnForcedClose(int32 thread_id, |
+ int32 database_id) { |
+ DCHECK_EQ(thread_id, CurrentWorkerId()); |
+ WebIDBDatabaseCallbacks* callbacks = |
+ pending_database_callbacks_.Lookup(database_id); |
+ if (!callbacks) |
+ return; |
+ callbacks->onForcedClose(); |
+} |
+ |
void IndexedDBDispatcher::OnIntVersionChange(int32 thread_id, |
int32 database_id, |
int64 old_version, |