| Index: chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h
|
| ===================================================================
|
| --- chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h (revision 69028)
|
| +++ chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h (working copy)
|
| @@ -8,21 +8,21 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/id_map.h"
|
| -#include "base/process.h"
|
| -#include "base/ref_counted.h"
|
| +#include "chrome/browser/browser_message_filter.h"
|
| #include "chrome/browser/in_process_webkit/webkit_context.h"
|
| -#include "ipc/ipc_message.h"
|
| +#include "third_party/WebKit/WebKit/chromium/public/WebExceptionCode.h"
|
|
|
| class HostContentSettingsMap;
|
| class IndexedDBKey;
|
| +class NullableString16;
|
| class Profile;
|
| class SerializedScriptValue;
|
| -struct ViewHostMsg_IDBDatabaseCreateObjectStore_Params;
|
| -struct ViewHostMsg_IDBFactoryOpen_Params;
|
| -struct ViewHostMsg_IDBIndexOpenCursor_Params;
|
| -struct ViewHostMsg_IDBObjectStoreCreateIndex_Params;
|
| -struct ViewHostMsg_IDBObjectStoreOpenCursor_Params;
|
| -struct ViewHostMsg_IDBObjectStorePut_Params;
|
| +struct IndexedDBHostMsg_DatabaseCreateObjectStore_Params;
|
| +struct IndexedDBHostMsg_FactoryOpen_Params;
|
| +struct IndexedDBHostMsg_IndexOpenCursor_Params;
|
| +struct IndexedDBHostMsg_ObjectStoreCreateIndex_Params;
|
| +struct IndexedDBHostMsg_ObjectStoreOpenCursor_Params;
|
| +struct IndexedDBHostMsg_ObjectStorePut_Params;
|
|
|
| namespace WebKit {
|
| class WebIDBCursor;
|
| @@ -33,26 +33,18 @@
|
| }
|
|
|
| // Handles all IndexedDB related messages from a particular renderer process.
|
| -class IndexedDBDispatcherHost
|
| - : public base::RefCountedThreadSafe<IndexedDBDispatcherHost> {
|
| +class IndexedDBDispatcherHost : public BrowserMessageFilter {
|
| public:
|
| // Only call the constructor from the UI thread.
|
| - IndexedDBDispatcherHost(IPC::Message::Sender* sender, Profile* profile);
|
| + IndexedDBDispatcherHost(int process_id, Profile* profile);
|
|
|
| - // Only call from ResourceMessageFilter on the IO thread.
|
| - void Init(int process_id, base::ProcessHandle process_handle);
|
| + // BrowserMessageFilter implementation.
|
| + virtual void OnChannelClosing();
|
| + virtual void OverrideThreadForMessage(const IPC::Message& message,
|
| + BrowserThread::ID* thread);
|
| + virtual bool OnMessageReceived(const IPC::Message& message,
|
| + bool* message_was_ok);
|
|
|
| - // Only call from ResourceMessageFilter on the IO thread. Calls self on the
|
| - // WebKit thread in some cases.
|
| - void Shutdown();
|
| -
|
| - // Only call from ResourceMessageFilter on the IO thread.
|
| - bool OnMessageReceived(const IPC::Message& message);
|
| -
|
| - // Send a message to the renderer process associated with our sender_ via the
|
| - // IO thread. May be called from any thread.
|
| - void Send(IPC::Message* message);
|
| -
|
| // A shortcut for accessing our context.
|
| IndexedDBContext* Context() {
|
| return webkit_context_->indexed_db_context();
|
| @@ -67,24 +59,22 @@
|
| int32 Add(WebKit::WebIDBTransaction* idb_transaction);
|
|
|
| private:
|
| - friend class base::RefCountedThreadSafe<IndexedDBDispatcherHost>;
|
| ~IndexedDBDispatcherHost();
|
|
|
| // Message processing. Most of the work is delegated to the dispatcher hosts
|
| // below.
|
| - void OnMessageReceivedWebKit(const IPC::Message& message);
|
| - void OnIDBFactoryOpen(const ViewHostMsg_IDBFactoryOpen_Params& p);
|
| + void OnIDBFactoryOpen(const IndexedDBHostMsg_FactoryOpen_Params& p);
|
|
|
| // Helper templates.
|
| template <class ReturnType>
|
| ReturnType* GetOrTerminateProcess(
|
| IDMap<ReturnType, IDMapOwnPointer>* map, int32 return_object_id,
|
| - IPC::Message* reply_msg, uint32 message_type);
|
| + uint32 message_type);
|
|
|
| template <typename ReplyType, typename MessageType,
|
| typename WebObjectType, typename Method>
|
| void SyncGetter(IDMap<WebObjectType, IDMapOwnPointer>* map, int32 object_id,
|
| - IPC::Message* reply_msg, Method method);
|
| + ReplyType* reply, Method method);
|
|
|
| template <typename ObjectType>
|
| void DestroyObject(IDMap<ObjectType, IDMapOwnPointer>* map, int32 object_id,
|
| @@ -98,24 +88,26 @@
|
| bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok);
|
| void Send(IPC::Message* message);
|
|
|
| - void OnName(int32 idb_database_id, IPC::Message* reply_msg);
|
| - void OnVersion(int32 idb_database_id, IPC::Message* reply_msg);
|
| - void OnObjectStoreNames(int32 idb_database_id, IPC::Message* reply_msg);
|
| + void OnName(int32 idb_database_id, string16* name);
|
| + void OnVersion(int32 idb_database_id, string16* version);
|
| + void OnObjectStoreNames(int32 idb_database_id,
|
| + std::vector<string16>* object_stores);
|
| void OnCreateObjectStore(
|
| - const ViewHostMsg_IDBDatabaseCreateObjectStore_Params& params,
|
| - IPC::Message* reply_msg);
|
| + const IndexedDBHostMsg_DatabaseCreateObjectStore_Params& params,
|
| + int32* object_store_id, WebKit::WebExceptionCode* ec);
|
| void OnDeleteObjectStore(int32 idb_database_id,
|
| const string16& name,
|
| int32 transaction_id,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnSetVersion(int32 idb_database_id,
|
| int32 response_id,
|
| const string16& version,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnTransaction(int32 idb_database_id,
|
| const std::vector<string16>& names,
|
| int32 mode, int32 timeout,
|
| - IPC::Message* reply_msg);
|
| + int32* idb_transaction_id,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDestroyed(int32 idb_database_id);
|
|
|
| IndexedDBDispatcherHost* parent_;
|
| @@ -130,25 +122,25 @@
|
| bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok);
|
| void Send(IPC::Message* message);
|
|
|
| - void OnName(int32 idb_index_id, IPC::Message* reply_msg);
|
| - void OnStoreName(int32 idb_index_id, IPC::Message* reply_msg);
|
| - void OnKeyPath(int32 idb_index_id, IPC::Message* reply_msg);
|
| - void OnUnique(int32 idb_index_id, IPC::Message* reply_msg);
|
| + void OnName(int32 idb_index_id, string16* name);
|
| + void OnStoreName(int32 idb_index_id, string16* store_name);
|
| + void OnKeyPath(int32 idb_index_id, NullableString16* key_path);
|
| + void OnUnique(int32 idb_index_id, bool* unique);
|
| void OnOpenObjectCursor(
|
| - const ViewHostMsg_IDBIndexOpenCursor_Params& params,
|
| - IPC::Message* reply_msg);
|
| - void OnOpenKeyCursor(const ViewHostMsg_IDBIndexOpenCursor_Params& params,
|
| - IPC::Message* reply_msg);
|
| + const IndexedDBHostMsg_IndexOpenCursor_Params& params,
|
| + WebKit::WebExceptionCode* ec);
|
| + void OnOpenKeyCursor(const IndexedDBHostMsg_IndexOpenCursor_Params& params,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnGetObject(int idb_index_id,
|
| int32 response_id,
|
| const IndexedDBKey& key,
|
| int32 transaction_id,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnGetKey(int idb_index_id,
|
| int32 response_id,
|
| const IndexedDBKey& key,
|
| int32 transaction_id,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDestroyed(int32 idb_index_id);
|
|
|
| IndexedDBDispatcherHost* parent_;
|
| @@ -163,34 +155,37 @@
|
| bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok);
|
| void Send(IPC::Message* message);
|
|
|
| - void OnName(int32 idb_object_store_id, IPC::Message* reply_msg);
|
| - void OnKeyPath(int32 idb_object_store_id, IPC::Message* reply_msg);
|
| - void OnIndexNames(int32 idb_object_store_id, IPC::Message* reply_msg);
|
| + void OnName(int32 idb_object_store_id, string16* name);
|
| + void OnKeyPath(int32 idb_object_store_id, NullableString16* keyPath);
|
| + void OnIndexNames(int32 idb_object_store_id,
|
| + std::vector<string16>* index_names);
|
| void OnGet(int idb_object_store_id,
|
| int32 response_id,
|
| const IndexedDBKey& key,
|
| int32 transaction_id,
|
| - IPC::Message* reply_msg);
|
| - void OnPut(const ViewHostMsg_IDBObjectStorePut_Params& params,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| + void OnPut(const IndexedDBHostMsg_ObjectStorePut_Params& params,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDelete(int idb_object_store_id,
|
| int32 response_id,
|
| const IndexedDBKey& key,
|
| int32 transaction_id,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnCreateIndex(
|
| - const ViewHostMsg_IDBObjectStoreCreateIndex_Params& params,
|
| - IPC::Message* reply_msg);
|
| + const IndexedDBHostMsg_ObjectStoreCreateIndex_Params& params,
|
| + int32* index_id,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnIndex(int32 idb_object_store_id,
|
| const string16& name,
|
| - IPC::Message* reply_msg);
|
| + int32* idb_index_id,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDeleteIndex(int32 idb_object_store_id,
|
| const string16& name,
|
| int32 transaction_id,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnOpenCursor(
|
| - const ViewHostMsg_IDBObjectStoreOpenCursor_Params& params,
|
| - IPC::Message* reply_msg);
|
| + const IndexedDBHostMsg_ObjectStoreOpenCursor_Params& params,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDestroyed(int32 idb_object_store_id);
|
|
|
| IndexedDBDispatcherHost* parent_;
|
| @@ -205,20 +200,22 @@
|
| bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok);
|
| void Send(IPC::Message* message);
|
|
|
| - void OnDirection(int32 idb_object_store_id, IPC::Message* reply_msg);
|
| - void OnKey(int32 idb_object_store_id, IPC::Message* reply_msg);
|
| - void OnValue(int32 idb_object_store_id, IPC::Message* reply_msg);
|
| + void OnDirection(int32 idb_object_store_id, int32* direction);
|
| + void OnKey(int32 idb_object_store_id, IndexedDBKey* key);
|
| + void OnValue(int32 idb_object_store_id,
|
| + SerializedScriptValue* script_value,
|
| + IndexedDBKey* key);
|
| void OnUpdate(int32 idb_object_store_id,
|
| int32 response_id,
|
| const SerializedScriptValue& value,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnContinue(int32 idb_object_store_id,
|
| int32 response_id,
|
| const IndexedDBKey& key,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDelete(int32 idb_object_store_id,
|
| int32 response_id,
|
| - IPC::Message* reply_msg);
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDestroyed(int32 idb_cursor_id);
|
|
|
| IndexedDBDispatcherHost* parent_;
|
| @@ -235,10 +232,11 @@
|
|
|
| // TODO: add the rest of the transaction methods.
|
| void OnAbort(int32 transaction_id);
|
| - void OnMode(int32 transaction_id, IPC::Message* reply_msg);
|
| + void OnMode(int32 transaction_id, int* mode);
|
| void OnObjectStore(int32 transaction_id,
|
| const string16& name,
|
| - IPC::Message* reply_msg);
|
| + int32* object_store_id,
|
| + WebKit::WebExceptionCode* ec);
|
| void OnDidCompleteTaskEvents(int transaction_id);
|
| void OnDestroyed(int32 idb_transaction_id);
|
|
|
| @@ -247,9 +245,6 @@
|
| MapType map_;
|
| };
|
|
|
| - // Only use on the IO thread.
|
| - IPC::Message::Sender* sender_;
|
| -
|
| // Data shared between renderer processes with the same profile.
|
| scoped_refptr<WebKitContext> webkit_context_;
|
|
|
| @@ -263,10 +258,6 @@
|
| scoped_ptr<CursorDispatcherHost> cursor_dispatcher_host_;
|
| scoped_ptr<TransactionDispatcherHost> transaction_dispatcher_host_;
|
|
|
| - // If we get a corrupt message from a renderer, we need to kill it using this
|
| - // handle.
|
| - base::ProcessHandle process_handle_;
|
| -
|
| // Used to dispatch messages to the correct view host.
|
| int process_id_;
|
|
|
|
|