Index: content/renderer/indexed_db_dispatcher.cc |
diff --git a/content/renderer/indexed_db_dispatcher.cc b/content/renderer/indexed_db_dispatcher.cc |
index 915275f7652970871caf3e16b6c8c411ab62bc3b..0de9a60c8371a4e4b5895ffab27bbd7d8957b84d 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,13 @@ 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) { |
+ ChildThread::current()->Send(msg); |
} |
void IndexedDBDispatcher::RequestIDBCursorUpdate( |
@@ -73,7 +82,7 @@ void IndexedDBDispatcher::RequestIDBCursorUpdate( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
+ Send( |
new IndexedDBHostMsg_CursorUpdate(idb_cursor_id, response_id, value, ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
@@ -87,7 +96,7 @@ void IndexedDBDispatcher::RequestIDBCursorContinue( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
+ Send( |
new IndexedDBHostMsg_CursorContinue(idb_cursor_id, response_id, key, ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
@@ -100,8 +109,7 @@ void IndexedDBDispatcher::RequestIDBCursorDelete( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_CursorDelete(idb_cursor_id, response_id, ec)); |
+ Send(new IndexedDBHostMsg_CursorDelete(idb_cursor_id, response_id, ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -113,17 +121,11 @@ void IndexedDBDispatcher::RequestIDBFactoryOpen( |
WebFrame* web_frame) { |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
- if (!web_frame) |
- return; // We must be shutting down. |
- RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view()); |
- if (!render_view) |
- return; // We must be shutting down. |
- |
IndexedDBHostMsg_FactoryOpen_Params params; |
params.response_id = pending_callbacks_.Add(callbacks.release()); |
params.origin = origin; |
params.name = name; |
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_FactoryOpen(params)); |
+ Send(new IndexedDBHostMsg_FactoryOpen(params)); |
} |
void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames( |
@@ -141,8 +143,7 @@ void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames( |
IndexedDBHostMsg_FactoryGetDatabaseNames_Params params; |
params.response_id = pending_callbacks_.Add(callbacks.release()); |
params.origin = origin; |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_FactoryGetDatabaseNames(params)); |
+ Send(new IndexedDBHostMsg_FactoryGetDatabaseNames(params)); |
} |
void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase( |
@@ -162,24 +163,21 @@ void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase( |
params.response_id = pending_callbacks_.Add(callbacks.release()); |
params.origin = origin; |
params.name = name; |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_FactoryDeleteDatabase(params)); |
+ Send(new IndexedDBHostMsg_FactoryDeleteDatabase(params)); |
} |
void IndexedDBDispatcher::RequestIDBDatabaseClose(int32 idb_database_id) { |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_DatabaseClose(idb_database_id)); |
+ Send(new IndexedDBHostMsg_DatabaseClose(idb_database_id)); |
pending_database_callbacks_.Remove(idb_database_id); |
} |
- void IndexedDBDispatcher::RequestIDBDatabaseOpen( |
+void IndexedDBDispatcher::RequestIDBDatabaseOpen( |
WebIDBDatabaseCallbacks* callbacks_ptr, |
int32 idb_database_id) { |
scoped_ptr<WebIDBDatabaseCallbacks> callbacks(callbacks_ptr); |
- int32 response_id = pending_database_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_DatabaseOpen( |
- response_id, idb_database_id)); |
+ pending_database_callbacks_.AddWithID(callbacks.release(), idb_database_id); |
+ Send(new IndexedDBHostMsg_DatabaseOpen(idb_database_id, idb_database_id)); |
} |
void IndexedDBDispatcher::RequestIDBDatabaseSetVersion( |
@@ -190,9 +188,8 @@ void IndexedDBDispatcher::RequestIDBDatabaseSetVersion( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_DatabaseSetVersion(idb_database_id, response_id, |
- version, ec)); |
+ Send(new IndexedDBHostMsg_DatabaseSetVersion(idb_database_id, response_id, |
+ version, ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -214,8 +211,7 @@ void IndexedDBDispatcher::RequestIDBIndexOpenObjectCursor( |
params.direction = direction; |
params.idb_index_id = idb_index_id; |
params.transaction_id = TransactionId(transaction); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_IndexOpenObjectCursor(params, ec)); |
+ Send(new IndexedDBHostMsg_IndexOpenObjectCursor(params, ec)); |
if (*ec) |
pending_callbacks_.Remove(params.response_id); |
} |
@@ -239,8 +235,7 @@ void IndexedDBDispatcher::RequestIDBIndexOpenKeyCursor( |
params.direction = direction; |
params.idb_index_id = idb_index_id; |
params.transaction_id = TransactionId(transaction); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec)); |
+ Send(new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec)); |
if (*ec) |
pending_callbacks_.Remove(params.response_id); |
} |
@@ -253,10 +248,8 @@ void IndexedDBDispatcher::RequestIDBIndexGetObject( |
WebExceptionCode* ec) { |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_IndexGetObject( |
- idb_index_id, response_id, key, |
- TransactionId(transaction), ec)); |
+ Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, response_id, key, |
+ TransactionId(transaction), ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -269,10 +262,9 @@ void IndexedDBDispatcher::RequestIDBIndexGetKey( |
WebExceptionCode* ec) { |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_IndexGetKey( |
- idb_index_id, response_id, key, |
- TransactionId(transaction), ec)); |
+ Send(new IndexedDBHostMsg_IndexGetKey( |
+ idb_index_id, response_id, key, |
+ TransactionId(transaction), ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -286,10 +278,9 @@ void IndexedDBDispatcher::RequestIDBObjectStoreGet( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_ObjectStoreGet( |
- idb_object_store_id, response_id, |
- key, TransactionId(transaction), ec)); |
+ Send(new IndexedDBHostMsg_ObjectStoreGet( |
+ idb_object_store_id, response_id, |
+ key, TransactionId(transaction), ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -310,8 +301,7 @@ void IndexedDBDispatcher::RequestIDBObjectStorePut( |
params.key = key; |
params.put_mode = put_mode; |
params.transaction_id = TransactionId(transaction); |
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_ObjectStorePut( |
- params, ec)); |
+ Send(new IndexedDBHostMsg_ObjectStorePut(params, ec)); |
if (*ec) |
pending_callbacks_.Remove(params.response_id); |
} |
@@ -325,10 +315,9 @@ void IndexedDBDispatcher::RequestIDBObjectStoreDelete( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_ObjectStoreDelete( |
- idb_object_store_id, response_id, |
- key, TransactionId(transaction), ec)); |
+ Send(new IndexedDBHostMsg_ObjectStoreDelete( |
+ idb_object_store_id, response_id, |
+ key, TransactionId(transaction), ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -341,10 +330,9 @@ void IndexedDBDispatcher::RequestIDBObjectStoreClear( |
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
int32 response_id = pending_callbacks_.Add(callbacks.release()); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_ObjectStoreClear( |
- idb_object_store_id, response_id, |
- TransactionId(transaction), ec)); |
+ Send(new IndexedDBHostMsg_ObjectStoreClear( |
+ idb_object_store_id, response_id, |
+ TransactionId(transaction), ec)); |
if (*ec) |
pending_callbacks_.Remove(response_id); |
} |
@@ -366,8 +354,7 @@ void IndexedDBDispatcher::RequestIDBObjectStoreOpenCursor( |
params.direction = direction; |
params.idb_object_store_id = idb_object_store_id; |
params.transaction_id = TransactionId(transaction); |
- RenderThreadImpl::current()->Send( |
- new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec)); |
+ Send(new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec)); |
if (*ec) |
pending_callbacks_.Remove(params.response_id); |
} |