Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/renderer/indexed_db_dispatcher.h" | 5 #include "content/renderer/indexed_db_dispatcher.h" | 
| 6 | 6 | 
| 7 #include "content/common/indexed_db_messages.h" | 7 #include "content/common/indexed_db_messages.h" | 
| 8 #include "content/renderer/render_thread_impl.h" | 8 #include "content/renderer/render_thread_impl.h" | 
| 9 #include "content/renderer/render_view_impl.h" | 9 #include "content/renderer/render_view_impl.h" | 
| 10 #include "content/renderer/renderer_webidbcursor_impl.h" | 10 #include "content/renderer/renderer_webidbcursor_impl.h" | 
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 using WebKit::WebExceptionCode; | 24 using WebKit::WebExceptionCode; | 
| 25 using WebKit::WebFrame; | 25 using WebKit::WebFrame; | 
| 26 using WebKit::WebIDBCallbacks; | 26 using WebKit::WebIDBCallbacks; | 
| 27 using WebKit::WebIDBKeyRange; | 27 using WebKit::WebIDBKeyRange; | 
| 28 using WebKit::WebIDBDatabase; | 28 using WebKit::WebIDBDatabase; | 
| 29 using WebKit::WebIDBDatabaseCallbacks; | 29 using WebKit::WebIDBDatabaseCallbacks; | 
| 30 using WebKit::WebIDBDatabaseError; | 30 using WebKit::WebIDBDatabaseError; | 
| 31 using WebKit::WebIDBTransaction; | 31 using WebKit::WebIDBTransaction; | 
| 32 using WebKit::WebIDBTransactionCallbacks; | 32 using WebKit::WebIDBTransactionCallbacks; | 
| 33 | 33 | 
| 34 IndexedDBDispatcher::IndexedDBDispatcher() { | 34 IndexedDBDispatcher::IndexedDBDispatcher(IndexedDBMessageFilter* filter) : | 
| 35 pending_callbacks_(filter), | |
| 36 pending_transaction_callbacks_(filter), | |
| 37 pending_database_callbacks_(filter) { | |
| 35 } | 38 } | 
| 36 | 39 | 
| 37 IndexedDBDispatcher::~IndexedDBDispatcher() { | 40 IndexedDBDispatcher::~IndexedDBDispatcher() { | 
| 38 } | 41 } | 
| 39 | 42 | 
| 40 bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) { | 43 void IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) { | 
| 41 bool handled = true; | 44 bool handled = true; | 
| 42 IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg) | 45 IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg) | 
| 43 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor, | 46 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor, | 
| 44 OnSuccessOpenCursor) | 47 OnSuccessOpenCursor) | 
| 45 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorContinue, | 48 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorContinue, | 
| 46 OnSuccessCursorContinue) | 49 OnSuccessCursorContinue) | 
| 47 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase, | 50 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase, | 
| 48 OnSuccessIDBDatabase) | 51 OnSuccessIDBDatabase) | 
| 49 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey, | 52 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey, | 
| 50 OnSuccessIndexedDBKey) | 53 OnSuccessIndexedDBKey) | 
| 51 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBTransaction, | 54 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBTransaction, | 
| 52 OnSuccessIDBTransaction) | 55 OnSuccessIDBTransaction) | 
| 53 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList, | 56 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList, | 
| 54 OnSuccessStringList) | 57 OnSuccessStringList) | 
| 55 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, | 58 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, | 
| 56 OnSuccessSerializedScriptValue) | 59 OnSuccessSerializedScriptValue) | 
| 57 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksError, OnError) | 60 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksError, OnError) | 
| 58 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksBlocked, OnBlocked) | 61 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksBlocked, OnBlocked) | 
| 59 IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksAbort, OnAbort) | 62 IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksAbort, OnAbort) | 
| 60 IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksComplete, OnComplete) | 63 IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksComplete, OnComplete) | 
| 61 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksVersionChange, | 64 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksVersionChange, | 
| 62 OnVersionChange) | 65 OnVersionChange) | 
| 63 IPC_MESSAGE_UNHANDLED(handled = false) | 66 IPC_MESSAGE_UNHANDLED(handled = false) | 
| 64 IPC_END_MESSAGE_MAP() | 67 IPC_END_MESSAGE_MAP() | 
| 65 return handled; | 68 // If a message gets here, IndexedDBMessageFilter already determined that it | 
| 69 // is an IndexedDB message. | |
| 70 DCHECK(handled); | |
| 66 } | 71 } | 
| 67 | 72 | 
| 68 void IndexedDBDispatcher::Send(IPC::Message* msg) { | 73 void IndexedDBDispatcher::Send(IPC::Message* msg) { | 
| 69 ChildThread::current()->Send(msg); | 74 ChildThread::current()->Send(msg); | 
| 70 } | 75 } | 
| 71 | 76 | 
| 72 void IndexedDBDispatcher::RequestIDBCursorUpdate( | 77 void IndexedDBDispatcher::RequestIDBCursorUpdate( | 
| 73 const content::SerializedScriptValue& value, | 78 const content::SerializedScriptValue& value, | 
| 74 WebIDBCallbacks* callbacks_ptr, | 79 WebIDBCallbacks* callbacks_ptr, | 
| 75 int32 idb_cursor_id, | 80 int32 idb_cursor_id, | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 pending_callbacks_.Remove(response_id); | 114 pending_callbacks_.Remove(response_id); | 
| 110 } | 115 } | 
| 111 | 116 | 
| 112 void IndexedDBDispatcher::RequestIDBFactoryOpen( | 117 void IndexedDBDispatcher::RequestIDBFactoryOpen( | 
| 113 const string16& name, | 118 const string16& name, | 
| 114 WebIDBCallbacks* callbacks_ptr, | 119 WebIDBCallbacks* callbacks_ptr, | 
| 115 const string16& origin, | 120 const string16& origin, | 
| 116 WebFrame* web_frame) { | 121 WebFrame* web_frame) { | 
| 117 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 122 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
| 118 | 123 | 
| 119 if (!web_frame) | |
| 
 
michaeln
2011/12/01 21:42:05
does this no longer apply?
 
dgrogan
2011/12/01 22:49:00
This was to make the webkit side easier, so I didn
 
 | |
| 120 return; // We must be shutting down. | |
| 121 RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view()); | |
| 122 if (!render_view) | |
| 123 return; // We must be shutting down. | |
| 124 | |
| 125 IndexedDBHostMsg_FactoryOpen_Params params; | 124 IndexedDBHostMsg_FactoryOpen_Params params; | 
| 126 params.response_id = pending_callbacks_.Add(callbacks.release()); | 125 params.response_id = pending_callbacks_.Add(callbacks.release()); | 
| 127 params.origin = origin; | 126 params.origin = origin; | 
| 128 params.name = name; | 127 params.name = name; | 
| 129 Send(new IndexedDBHostMsg_FactoryOpen(params)); | 128 Send(new IndexedDBHostMsg_FactoryOpen(params)); | 
| 130 } | 129 } | 
| 131 | 130 | 
| 132 void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames( | 131 void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames( | 
| 133 WebIDBCallbacks* callbacks_ptr, | 132 WebIDBCallbacks* callbacks_ptr, | 
| 134 const string16& origin, | 133 const string16& origin, | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 170 void IndexedDBDispatcher::RequestIDBDatabaseClose(int32 idb_database_id) { | 169 void IndexedDBDispatcher::RequestIDBDatabaseClose(int32 idb_database_id) { | 
| 171 Send(new IndexedDBHostMsg_DatabaseClose(idb_database_id)); | 170 Send(new IndexedDBHostMsg_DatabaseClose(idb_database_id)); | 
| 172 pending_database_callbacks_.Remove(idb_database_id); | 171 pending_database_callbacks_.Remove(idb_database_id); | 
| 173 } | 172 } | 
| 174 | 173 | 
| 175 void IndexedDBDispatcher::RequestIDBDatabaseOpen( | 174 void IndexedDBDispatcher::RequestIDBDatabaseOpen( | 
| 176 WebIDBDatabaseCallbacks* callbacks_ptr, | 175 WebIDBDatabaseCallbacks* callbacks_ptr, | 
| 177 int32 idb_database_id) { | 176 int32 idb_database_id) { | 
| 178 scoped_ptr<WebIDBDatabaseCallbacks> callbacks(callbacks_ptr); | 177 scoped_ptr<WebIDBDatabaseCallbacks> callbacks(callbacks_ptr); | 
| 179 | 178 | 
| 180 int32 response_id = pending_database_callbacks_.Add(callbacks.release()); | 179 pending_database_callbacks_.AddWithID(callbacks.release(), idb_database_id); | 
| 181 Send(new IndexedDBHostMsg_DatabaseOpen(response_id, idb_database_id)); | 180 Send(new IndexedDBHostMsg_DatabaseOpen(idb_database_id, idb_database_id)); | 
| 182 } | 181 } | 
| 183 | 182 | 
| 184 void IndexedDBDispatcher::RequestIDBDatabaseSetVersion( | 183 void IndexedDBDispatcher::RequestIDBDatabaseSetVersion( | 
| 185 const string16& version, | 184 const string16& version, | 
| 186 WebIDBCallbacks* callbacks_ptr, | 185 WebIDBCallbacks* callbacks_ptr, | 
| 187 int32 idb_database_id, | 186 int32 idb_database_id, | 
| 188 WebExceptionCode* ec) { | 187 WebExceptionCode* ec) { | 
| 189 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 188 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
| 190 | 189 | 
| 191 int32 response_id = pending_callbacks_.Add(callbacks.release()); | 190 int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 493 void IndexedDBDispatcher::OnVersionChange(int32 database_id, | 492 void IndexedDBDispatcher::OnVersionChange(int32 database_id, | 
| 494 const string16& newVersion) { | 493 const string16& newVersion) { | 
| 495 WebIDBDatabaseCallbacks* callbacks = | 494 WebIDBDatabaseCallbacks* callbacks = | 
| 496 pending_database_callbacks_.Lookup(database_id); | 495 pending_database_callbacks_.Lookup(database_id); | 
| 497 // callbacks would be NULL if a versionchange event is received after close | 496 // callbacks would be NULL if a versionchange event is received after close | 
| 498 // has been called. | 497 // has been called. | 
| 499 if (!callbacks) | 498 if (!callbacks) | 
| 500 return; | 499 return; | 
| 501 callbacks->onVersionChange(newVersion); | 500 callbacks->onVersionChange(newVersion); | 
| 502 } | 501 } | 
| OLD | NEW |