Chromium Code Reviews| Index: content/renderer/indexed_db_dispatcher.h |
| diff --git a/content/renderer/indexed_db_dispatcher.h b/content/renderer/indexed_db_dispatcher.h |
| index 6f7deef941d45ae01d482dbef49e5eb88dc3d2d3..d08bd9adb13a83be63d657b2fe318f21d2dbbbc2 100644 |
| --- a/content/renderer/indexed_db_dispatcher.h |
| +++ b/content/renderer/indexed_db_dispatcher.h |
| @@ -11,16 +11,25 @@ |
| #include "base/id_map.h" |
| #include "base/nullable_string16.h" |
| -#include "ipc/ipc_channel.h" |
| +#include "base/threading/thread_local.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebExceptionCode.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBObjectStore.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransactionCallbacks.h" |
| +#include "webkit/glue/worker_task_runner.h" |
| class IndexedDBKey; |
| +struct IndexedDBMsg_CallbacksSuccessCursorContinue_Params; |
| +struct IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params; |
| +struct IndexedDBMsg_CallbacksSuccessIDBCursor_Params; |
| class RendererWebIDBCursorImpl; |
| +namespace IPC { |
| +class Message; |
| +} |
| + |
| namespace WebKit { |
| class WebFrame; |
| class WebIDBKeyRange; |
| @@ -32,13 +41,18 @@ class SerializedScriptValue; |
| } |
| // Handle the indexed db related communication for this entire renderer. |
|
michaeln
2011/12/14 02:15:53
comment might be misleading now that there are thr
dgrogan
2011/12/15 02:47:44
Updated.
|
| -class IndexedDBDispatcher : public IPC::Channel::Listener { |
| +class IndexedDBDispatcher : public webkit_glue::WorkerTaskRunner::Observer { |
| public: |
| - IndexedDBDispatcher(); |
| virtual ~IndexedDBDispatcher(); |
| + static void Init(); |
| + // This returns the dispatcher associated with the current WebWorkerRunLoop, |
|
michaeln
2011/12/14 02:15:53
The comment is a little misleading since it will a
dgrogan
2011/12/15 02:47:44
Renaming Instance to ThreadSpecificInstance should
|
| + // if being run from a worker. |
| + static IndexedDBDispatcher* Instance(); |
|
michaeln
2011/12/14 02:15:53
maybe name this as ThreadSpecificInstance() for cl
dgrogan
2011/12/15 02:47:44
Done.
|
| + |
| + // webkit_glue::WorkerTaskRunner::Observer implementation. |
| + virtual void OnWorkerRunLoopStopped(); |
| - // IPC::Channel::Listener implementation. |
| - virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
| + void OnMessageReceived(const IPC::Message& msg); |
| void Send(IPC::Message* msg); |
| void RequestIDBFactoryGetDatabaseNames( |
| @@ -169,36 +183,41 @@ class IndexedDBDispatcher : public IPC::Channel::Listener { |
| static int32 TransactionId(const WebKit::WebIDBTransaction& transaction); |
| private: |
| + IndexedDBDispatcher(); |
| // IDBCallback message handlers. |
| void OnSuccessNull(int32 response_id); |
| - void OnSuccessIDBDatabase(int32 response_id, int32 object_id); |
| - void OnSuccessIndexedDBKey(int32 response_id, const IndexedDBKey& key); |
| - void OnSuccessIDBTransaction(int32 response_id, int32 object_id); |
| - void OnSuccessOpenCursor(int32 response_id, int32 object_id, |
| - const IndexedDBKey& key, |
| - const IndexedDBKey& primary_key, |
| - const content::SerializedScriptValue& value); |
| - void OnSuccessCursorContinue(int32 response_id, |
| - int32 cursor_id, |
| - const IndexedDBKey& key, |
| - const IndexedDBKey& primary_key, |
| - const content::SerializedScriptValue& value); |
| + void OnSuccessIDBDatabase(int32 thread_id, |
| + int32 response_id, |
| + int32 object_id); |
| + void OnSuccessIndexedDBKey(int32 thread_id, |
| + int32 response_id, |
| + const IndexedDBKey& key); |
| + void OnSuccessIDBTransaction(int32 thread_id, |
| + int32 response_id, |
| + int32 object_id); |
| + void OnSuccessOpenCursor( |
| + const IndexedDBMsg_CallbacksSuccessIDBCursor_Params& p); |
| + void OnSuccessCursorContinue( |
| + const IndexedDBMsg_CallbacksSuccessCursorContinue_Params& p); |
| void OnSuccessCursorPrefetch( |
| - int32 response_id, |
| - int32 cursor_id, |
| - const std::vector<IndexedDBKey>& keys, |
| - const std::vector<IndexedDBKey>& primary_keys, |
| - const std::vector<content::SerializedScriptValue>& values); |
| - void OnSuccessStringList(int32 response_id, |
| + const IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params& p); |
| + void OnSuccessStringList(int32 thread_id, |
| + int32 response_id, |
| const std::vector<string16>& value); |
| void OnSuccessSerializedScriptValue( |
| + int32 thread_id, |
| int32 response_id, |
| const content::SerializedScriptValue& value); |
| - void OnError(int32 response_id, int code, const string16& message); |
| - void OnBlocked(int32 response_id); |
| - void OnAbort(int32 transaction_id); |
| - void OnComplete(int32 transaction_id); |
| - void OnVersionChange(int32 database_id, const string16& newVersion); |
| + void OnError(int32 thread_id, |
| + int32 response_id, |
| + int code, |
| + const string16& message); |
| + void OnBlocked(int32 thread_id, int32 response_id); |
| + void OnAbort(int32 thread_id, int32 transaction_id); |
| + void OnComplete(int32 thread_id, int32 transaction_id); |
| + void OnVersionChange(int32 thread_id, |
| + int32 database_id, |
| + const string16& newVersion); |
| // Reset cursor prefetch caches for all cursors except exception_cursor_id. |
| void ResetCursorPrefetchCaches(int32 exception_cursor_id = -1); |
| @@ -214,6 +233,8 @@ class IndexedDBDispatcher : public IPC::Channel::Listener { |
| // Map from cursor id to RendererWebIDBCursorImpl. |
| std::map<int32, RendererWebIDBCursorImpl*> cursors_; |
| + static base::ThreadLocalPointer<IndexedDBDispatcher>* idb_dispatcher_tls_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(IndexedDBDispatcher); |
| }; |