// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_COMMON_INDEXED_DB_MESSAGES_H_ #define CHROME_COMMON_INDEXED_DB_MESSAGES_H_ #pragma once #include "chrome/common/indexed_db_key.h" #include "chrome/common/indexed_db_param_traits.h" #include "chrome/common/serialized_script_value.h" #include "ipc/ipc_message_macros.h" #include "ipc/ipc_param_traits.h" #include "third_party/WebKit/WebKit/chromium/public/WebExceptionCode.h" #define IPC_MESSAGE_START IndexedDBMsgStart // Used to open an indexed database. struct IndexedDBHostMsg_FactoryOpen_Params { IndexedDBHostMsg_FactoryOpen_Params(); ~IndexedDBHostMsg_FactoryOpen_Params(); // The routing ID of the view initiating the open. int32 routing_id; // The response should have this id. int32 response_id; // The origin doing the initiating. string16 origin; // The name of the database. string16 name; // The maximum size of the database. uint64 maximum_size; }; // Used to create an object store. struct IndexedDBHostMsg_DatabaseCreateObjectStore_Params { IndexedDBHostMsg_DatabaseCreateObjectStore_Params(); ~IndexedDBHostMsg_DatabaseCreateObjectStore_Params(); // The name of the object store. string16 name; // The keyPath of the object store. NullableString16 key_path; // Whether the object store created should have a key generator. bool auto_increment; // The transaction this is associated with. int32 transaction_id; // The database the object store belongs to. int32 idb_database_id; }; // Used to open both cursors and object cursors in IndexedDB. struct IndexedDBHostMsg_IndexOpenCursor_Params { IndexedDBHostMsg_IndexOpenCursor_Params(); ~IndexedDBHostMsg_IndexOpenCursor_Params(); // The response should have this id. int32 response_id; // The serialized lower key. IndexedDBKey lower_key; // The serialized upper key. IndexedDBKey upper_key; // Is the lower bound open? bool lower_open; // Is the upper bound open? bool upper_open; // The direction of this cursor. int32 direction; // The index the index belongs to. int32 idb_index_id; // The transaction this request belongs to. int transaction_id; }; // Used to set a value in an object store. struct IndexedDBHostMsg_ObjectStorePut_Params { IndexedDBHostMsg_ObjectStorePut_Params(); ~IndexedDBHostMsg_ObjectStorePut_Params(); // The object store's id. int32 idb_object_store_id; // The id any response should contain. int32 response_id; // The value to set. SerializedScriptValue serialized_value; // The key to set it on (may not be "valid"/set in some cases). IndexedDBKey key; // If it already exists, don't update (just return an error). bool add_only; // The transaction it's associated with. int transaction_id; }; // Used to create an index. struct IndexedDBHostMsg_ObjectStoreCreateIndex_Params { IndexedDBHostMsg_ObjectStoreCreateIndex_Params(); ~IndexedDBHostMsg_ObjectStoreCreateIndex_Params(); // The name of the index. string16 name; // The keyPath of the index. NullableString16 key_path; // Whether the index created has unique keys. bool unique; // The transaction this is associated with. int32 transaction_id; // The object store the index belongs to. int32 idb_object_store_id; }; // Used to open an IndexedDB cursor. struct IndexedDBHostMsg_ObjectStoreOpenCursor_Params { IndexedDBHostMsg_ObjectStoreOpenCursor_Params(); ~IndexedDBHostMsg_ObjectStoreOpenCursor_Params(); // The response should have this id. int32 response_id; // The serialized lower key. IndexedDBKey lower_key; // The serialized upper key. IndexedDBKey upper_key; // Is the lower bound open? bool lower_open; // Is the upper bound open? bool upper_open; // The direction of this cursor. int32 direction; // The object store the cursor belongs to. int32 idb_object_store_id; // The transaction this request belongs to. int transaction_id; }; namespace IPC { template <> struct ParamTraits { typedef IndexedDBHostMsg_FactoryOpen_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; template <> struct ParamTraits { typedef IndexedDBHostMsg_DatabaseCreateObjectStore_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; template <> struct ParamTraits { typedef IndexedDBHostMsg_IndexOpenCursor_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; template <> struct ParamTraits { typedef IndexedDBHostMsg_ObjectStorePut_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; template <> struct ParamTraits { typedef IndexedDBHostMsg_ObjectStoreCreateIndex_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; template <> struct ParamTraits { typedef IndexedDBHostMsg_ObjectStoreOpenCursor_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; } // namespace IPC // Indexed DB messages sent from the browser to the renderer. // IDBCallback message handlers. IPC_MESSAGE_CONTROL1(IndexedDBMsg_CallbacksSuccessNull, int32 /* response_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIDBCursor, int32 /* response_id */, int32 /* cursor_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIDBDatabase, int32 /* response_id */, int32 /* idb_database_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIndexedDBKey, int32 /* response_id */, IndexedDBKey /* indexed_db_key */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIDBIndex, int32 /* response_id */, int32 /* idb_index_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIDBObjectStore, int32 /* response_id */, int32 /* idb_object_store_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIDBTransaction, int32 /* response_id */, int32 /* idb_transaction_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, int32 /* response_id */, SerializedScriptValue /* serialized_script_value */) IPC_MESSAGE_CONTROL3(IndexedDBMsg_CallbacksError, int32 /* response_id */, int /* code */, string16 /* message */) // IDBTransactionCallback message handlers. IPC_MESSAGE_CONTROL1(IndexedDBMsg_TransactionCallbacksAbort, int32 /* transaction_id */) IPC_MESSAGE_CONTROL1(IndexedDBMsg_TransactionCallbacksComplete, int32 /* transaction_id */) IPC_MESSAGE_CONTROL1(IndexedDBMsg_TransactionCallbacksTimeout, int32 /* transaction_id */) // Indexed DB messages sent from the renderer to the browser. // WebIDBCursor::direction() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_CursorDirection, int32, /* idb_cursor_id */ int32 /* direction */) // WebIDBCursor::key() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_CursorKey, int32, /* idb_cursor_id */ IndexedDBKey /* key */) // WebIDBCursor::value() message. IPC_SYNC_MESSAGE_CONTROL1_2(IndexedDBHostMsg_CursorValue, int32, /* idb_cursor_id */ SerializedScriptValue, /* script_value */ IndexedDBKey /* key */) // WebIDBCursor::update() message. IPC_SYNC_MESSAGE_CONTROL3_1(IndexedDBHostMsg_CursorUpdate, int32, /* idb_cursor_id */ int32, /* response_id */ SerializedScriptValue, /* value */ WebKit::WebExceptionCode /* ec */) // WebIDBCursor::continue() message. IPC_SYNC_MESSAGE_CONTROL3_1(IndexedDBHostMsg_CursorContinue, int32, /* idb_cursor_id */ int32, /* response_id */ IndexedDBKey, /* key */ WebKit::WebExceptionCode /* ec */) // WebIDBCursor::remove() message. IPC_SYNC_MESSAGE_CONTROL2_1(IndexedDBHostMsg_CursorDelete, int32, /* idb_cursor_id */ int32, /* response_id */ WebKit::WebExceptionCode /* ec */) // WebIDBFactory::open() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_FactoryOpen, IndexedDBHostMsg_FactoryOpen_Params) // WebIDBDatabase::name() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_DatabaseName, int32, /* idb_database_id */ string16 /* name */) // WebIDBDatabase::version() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_DatabaseVersion, int32, /* idb_database_id */ string16 /* version */) // WebIDBDatabase::objectStoreNames() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_DatabaseObjectStoreNames, int32, /* idb_database_id */ std::vector /* objectStoreNames */) // WebIDBDatabase::createObjectStore() message. IPC_SYNC_MESSAGE_CONTROL1_2(IndexedDBHostMsg_DatabaseCreateObjectStore, IndexedDBHostMsg_DatabaseCreateObjectStore_Params, int32, /* object_store_id */ WebKit::WebExceptionCode /* ec */) // WebIDBDatabase::removeObjectStore() message. IPC_SYNC_MESSAGE_CONTROL3_1(IndexedDBHostMsg_DatabaseDeleteObjectStore, int32, /* idb_database_id */ string16, /* name */ int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBDatabase::setVersion() message. IPC_SYNC_MESSAGE_CONTROL3_1(IndexedDBHostMsg_DatabaseSetVersion, int32, /* idb_database_id */ int32, /* response_id */ string16, /* version */ WebKit::WebExceptionCode /* ec */) // WebIDBDatabase::transaction() message. // TODO: make this message async. Have the renderer create a // temporary ID and keep a map in the browser process of real // IDs to temporary IDs. We can then update the transaction // to its real ID asynchronously. IPC_SYNC_MESSAGE_CONTROL4_2(IndexedDBHostMsg_DatabaseTransaction, int32, /* idb_database_id */ std::vector, /* object_stores */ int32, /* mode */ int32, /* timeout */ int32, /* idb_transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBDatabase::~WebIDBDatabase() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_DatabaseDestroyed, int32 /* idb_database_id */) // WebIDBIndex::name() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_IndexName, int32, /* idb_index_id */ string16 /* name */) // WebIDBIndex::storeName() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_IndexStoreName, int32, /* idb_index_id */ string16 /* store_name */) // WebIDBIndex::keyPath() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_IndexKeyPath, int32, /* idb_index_id */ NullableString16 /* key_path */) // WebIDBIndex::unique() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_IndexUnique, int32, /* idb_unique_id */ bool /* unique */) // WebIDBIndex::openObjectCursor() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_IndexOpenObjectCursor, IndexedDBHostMsg_IndexOpenCursor_Params, WebKit::WebExceptionCode /* ec */) // WebIDBIndex::openKeyCursor() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_IndexOpenKeyCursor, IndexedDBHostMsg_IndexOpenCursor_Params, WebKit::WebExceptionCode /* ec */) // WebIDBIndex::getObject() message. IPC_SYNC_MESSAGE_CONTROL4_1(IndexedDBHostMsg_IndexGetObject, int32, /* idb_index_id */ int32, /* response_id */ IndexedDBKey, /* key */ int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBIndex::getKey() message. IPC_SYNC_MESSAGE_CONTROL4_1(IndexedDBHostMsg_IndexGetKey, int32, /* idb_index_id */ int32, /* response_id */ IndexedDBKey, /* key */ int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBIndex::~WebIDBIndex() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_IndexDestroyed, int32 /* idb_index_id */) // WebIDBObjectStore::name() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_ObjectStoreName, int32, /* idb_object_store_id */ string16 /* name */) // WebIDBObjectStore::keyPath() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_ObjectStoreKeyPath, int32, /* idb_object_store_id */ NullableString16 /* keyPath */) // WebIDBObjectStore::indexNames() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_ObjectStoreIndexNames, int32, /* idb_object_store_id */ std::vector /* index_names */) // WebIDBObjectStore::get() message. IPC_SYNC_MESSAGE_CONTROL4_1(IndexedDBHostMsg_ObjectStoreGet, int32, /* idb_object_store_id */ int32, /* response_id */ IndexedDBKey, /* key */ int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::put() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_ObjectStorePut, IndexedDBHostMsg_ObjectStorePut_Params, WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::delete() message. IPC_SYNC_MESSAGE_CONTROL4_1(IndexedDBHostMsg_ObjectStoreDelete, int32, /* idb_object_store_id */ int32, /* response_id */ IndexedDBKey, /* key */ int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::createIndex() message. IPC_SYNC_MESSAGE_CONTROL1_2(IndexedDBHostMsg_ObjectStoreCreateIndex, IndexedDBHostMsg_ObjectStoreCreateIndex_Params, int32, /* index_id */ WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::index() message. IPC_SYNC_MESSAGE_CONTROL2_2(IndexedDBHostMsg_ObjectStoreIndex, int32, /* idb_object_store_id */ string16, /* name */ int32, /* idb_index_id */ WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::deleteIndex() message. IPC_SYNC_MESSAGE_CONTROL3_1(IndexedDBHostMsg_ObjectStoreDeleteIndex, int32, /* idb_object_store_id */ string16, /* name */ int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::openCursor() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_ObjectStoreOpenCursor, IndexedDBHostMsg_ObjectStoreOpenCursor_Params, WebKit::WebExceptionCode /* ec */) // WebIDBObjectStore::~WebIDBObjectStore() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_ObjectStoreDestroyed, int32 /* idb_object_store_id */) // WebIDBDatabase::~WebIDBCursor() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_CursorDestroyed, int32 /* idb_cursor_id */) // IDBTransaction::ObjectStore message. IPC_SYNC_MESSAGE_CONTROL2_2(IndexedDBHostMsg_TransactionObjectStore, int32, /* transaction_id */ string16, /* name */ int32, /* object_store_id */ WebKit::WebExceptionCode /* ec */) // WebIDBTransaction::mode() message. IPC_SYNC_MESSAGE_CONTROL1_1(IndexedDBHostMsg_TransactionMode, int32, /* idb_transaction_id */ int /* mode */) // WebIDBTransaction::abort() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_TransactionAbort, int32 /* idb_transaction_id */) // IDBTransaction::DidCompleteTaskEvents() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_TransactionDidCompleteTaskEvents, int32 /* idb_transaction_id */) // WebIDBTransaction::~WebIDBTransaction() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_TransactionDestroyed, int32 /* idb_transaction_id */) #endif // CHROME_COMMON_INDEXED_DB_MESSAGES_H_