| Index: chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc | 
| =================================================================== | 
| --- chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc	(revision 69028) | 
| +++ chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc	(working copy) | 
| @@ -14,10 +14,7 @@ | 
| #include "chrome/browser/renderer_host/render_view_host_notification_task.h" | 
| #include "chrome/browser/renderer_host/resource_message_filter.h" | 
| #include "chrome/common/chrome_switches.h" | 
| -#include "chrome/common/indexed_db_key.h" | 
| -#include "chrome/common/render_messages.h" | 
| -#include "chrome/common/render_messages_params.h" | 
| -#include "chrome/common/serialized_script_value.h" | 
| +#include "chrome/common/indexed_db_messages.h" | 
| #include "googleurl/src/gurl.h" | 
| #include "third_party/WebKit/WebKit/chromium/public/WebDOMStringList.h" | 
| #include "third_party/WebKit/WebKit/chromium/public/WebIDBCursor.h" | 
| @@ -61,10 +58,9 @@ | 
|  | 
| } | 
|  | 
| -IndexedDBDispatcherHost::IndexedDBDispatcherHost( | 
| -    IPC::Message::Sender* sender, Profile* profile) | 
| -    : sender_(sender), | 
| -      webkit_context_(profile->GetWebKitContext()), | 
| +IndexedDBDispatcherHost::IndexedDBDispatcherHost(int process_id, | 
| +                                                 Profile* profile) | 
| +    : webkit_context_(profile->GetWebKitContext()), | 
| host_content_settings_map_(profile->GetHostContentSettingsMap()), | 
| ALLOW_THIS_IN_INITIALIZER_LIST(database_dispatcher_host_( | 
| new DatabaseDispatcherHost(this))), | 
| @@ -76,154 +72,59 @@ | 
| new CursorDispatcherHost(this))), | 
| ALLOW_THIS_IN_INITIALIZER_LIST(transaction_dispatcher_host_( | 
| new TransactionDispatcherHost(this))), | 
| -      process_handle_(0) { | 
| -  DCHECK(sender_); | 
| +      process_id_(process_id) { | 
| DCHECK(webkit_context_.get()); | 
| } | 
|  | 
| IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { | 
| } | 
|  | 
| -void IndexedDBDispatcherHost::Init(int process_id, | 
| -                                   base::ProcessHandle process_handle) { | 
| -  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| -  DCHECK(sender_);  // Ensure Shutdown() has not been called. | 
| -  DCHECK(!process_handle_);  // Make sure Init() has not yet been called. | 
| -  DCHECK(process_handle); | 
| -  process_id_ = process_id; | 
| -  process_handle_ = process_handle; | 
| -} | 
| - | 
| -void IndexedDBDispatcherHost::Shutdown() { | 
| -  if (BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 
| -    sender_ = NULL; | 
| - | 
| -    bool success = BrowserThread::PostTask( | 
| +void IndexedDBDispatcherHost::OnChannelClosing() { | 
| +  BrowserThread::DeleteSoon( | 
| +        BrowserThread::WEBKIT, FROM_HERE, database_dispatcher_host_.release()); | 
| +  BrowserThread::DeleteSoon( | 
| +        BrowserThread::WEBKIT, FROM_HERE, index_dispatcher_host_.release()); | 
| +  BrowserThread::DeleteSoon( | 
| BrowserThread::WEBKIT, FROM_HERE, | 
| -        NewRunnableMethod(this, &IndexedDBDispatcherHost::Shutdown)); | 
| -    if (success) | 
| -      return; | 
| -  } | 
| - | 
| -  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT) || | 
| -         CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)); | 
| -  DCHECK(!sender_); | 
| - | 
| -  database_dispatcher_host_.reset(); | 
| -  index_dispatcher_host_.reset(); | 
| -  object_store_dispatcher_host_.reset(); | 
| -  cursor_dispatcher_host_.reset(); | 
| -  transaction_dispatcher_host_.reset(); | 
| +        object_store_dispatcher_host_.release()); | 
| +  BrowserThread::DeleteSoon( | 
| +        BrowserThread::WEBKIT, FROM_HERE, cursor_dispatcher_host_.release()); | 
| +  BrowserThread::DeleteSoon( | 
| +        BrowserThread::WEBKIT, FROM_HERE, | 
| +        transaction_dispatcher_host_.release()); | 
| } | 
|  | 
| -bool IndexedDBDispatcherHost::OnMessageReceived(const IPC::Message& message) { | 
| -  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| -  DCHECK(process_handle_); | 
| - | 
| -  switch (message.type()) { | 
| -    case ViewHostMsg_IDBCursorDirection::ID: | 
| -    case ViewHostMsg_IDBCursorKey::ID: | 
| -    case ViewHostMsg_IDBCursorValue::ID: | 
| -    case ViewHostMsg_IDBCursorUpdate::ID: | 
| -    case ViewHostMsg_IDBCursorContinue::ID: | 
| -    case ViewHostMsg_IDBCursorDelete::ID: | 
| -    case ViewHostMsg_IDBCursorDestroyed::ID: | 
| -    case ViewHostMsg_IDBFactoryOpen::ID: | 
| -    case ViewHostMsg_IDBDatabaseName::ID: | 
| -    case ViewHostMsg_IDBDatabaseVersion::ID: | 
| -    case ViewHostMsg_IDBDatabaseObjectStoreNames::ID: | 
| -    case ViewHostMsg_IDBDatabaseCreateObjectStore::ID: | 
| -    case ViewHostMsg_IDBDatabaseDeleteObjectStore::ID: | 
| -    case ViewHostMsg_IDBDatabaseSetVersion::ID: | 
| -    case ViewHostMsg_IDBDatabaseTransaction::ID: | 
| -    case ViewHostMsg_IDBDatabaseDestroyed::ID: | 
| -    case ViewHostMsg_IDBIndexName::ID: | 
| -    case ViewHostMsg_IDBIndexStoreName::ID: | 
| -    case ViewHostMsg_IDBIndexKeyPath::ID: | 
| -    case ViewHostMsg_IDBIndexUnique::ID: | 
| -    case ViewHostMsg_IDBIndexDestroyed::ID: | 
| -    case ViewHostMsg_IDBIndexOpenObjectCursor::ID: | 
| -    case ViewHostMsg_IDBIndexOpenKeyCursor::ID: | 
| -    case ViewHostMsg_IDBIndexGetObject::ID: | 
| -    case ViewHostMsg_IDBIndexGetKey::ID: | 
| -    case ViewHostMsg_IDBObjectStoreName::ID: | 
| -    case ViewHostMsg_IDBObjectStoreKeyPath::ID: | 
| -    case ViewHostMsg_IDBObjectStoreIndexNames::ID: | 
| -    case ViewHostMsg_IDBObjectStoreGet::ID: | 
| -    case ViewHostMsg_IDBObjectStorePut::ID: | 
| -    case ViewHostMsg_IDBObjectStoreDelete::ID: | 
| -    case ViewHostMsg_IDBObjectStoreCreateIndex::ID: | 
| -    case ViewHostMsg_IDBObjectStoreIndex::ID: | 
| -    case ViewHostMsg_IDBObjectStoreDeleteIndex::ID: | 
| -    case ViewHostMsg_IDBObjectStoreOpenCursor::ID: | 
| -    case ViewHostMsg_IDBObjectStoreDestroyed::ID: | 
| -    case ViewHostMsg_IDBTransactionAbort::ID: | 
| -    case ViewHostMsg_IDBTransactionMode::ID: | 
| -    case ViewHostMsg_IDBTransactionDestroyed::ID: | 
| -    case ViewHostMsg_IDBTransactionDidCompleteTaskEvents::ID: | 
| -    case ViewHostMsg_IDBTransactionObjectStore::ID: | 
| -      break; | 
| -    default: | 
| -      return false; | 
| -  } | 
| - | 
| -  bool success = BrowserThread::PostTask( | 
| -      BrowserThread::WEBKIT, FROM_HERE, NewRunnableMethod( | 
| -          this, &IndexedDBDispatcherHost::OnMessageReceivedWebKit, message)); | 
| -  DCHECK(success); | 
| -  return true; | 
| +void IndexedDBDispatcherHost::OverrideThreadForMessage( | 
| +    const IPC::Message& message, | 
| +    BrowserThread::ID* thread) { | 
| +  if (IPC_MESSAGE_CLASS(message) == IndexedDBMsgStart) | 
| +    *thread = BrowserThread::WEBKIT; | 
| } | 
|  | 
| -void IndexedDBDispatcherHost::Send(IPC::Message* message) { | 
| -  if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 
| -    // TODO(jorlow): Even if we successfully post, I believe it's possible for | 
| -    //               the task to never run (if the IO thread is already shutting | 
| -    //               down).  We may want to handle this case, though | 
| -    //               realistically it probably doesn't matter. | 
| -    if (!BrowserThread::PostTask( | 
| -            BrowserThread::IO, FROM_HERE, NewRunnableMethod( | 
| -                this, &IndexedDBDispatcherHost::Send, message))) { | 
| -      // The IO thread is dead. | 
| -      delete message; | 
| -    } | 
| -    return; | 
| -  } | 
| +bool IndexedDBDispatcherHost::OnMessageReceived(const IPC::Message& message, | 
| +                                                bool* message_was_ok) { | 
| +  if (IPC_MESSAGE_CLASS(message) != IndexedDBMsgStart) | 
| +    return false; | 
|  | 
| -  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| -  if (!sender_) | 
| -    delete message; | 
| -  else | 
| -    sender_->Send(message); | 
| -} | 
| - | 
| -void IndexedDBDispatcherHost::OnMessageReceivedWebKit( | 
| -    const IPC::Message& message) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| -  DCHECK(process_handle_); | 
|  | 
| -  bool msg_is_ok = true; | 
| bool handled = | 
| -      database_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || | 
| -      index_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || | 
| -      object_store_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || | 
| -      cursor_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || | 
| -      transaction_dispatcher_host_->OnMessageReceived(message, &msg_is_ok); | 
| +      database_dispatcher_host_->OnMessageReceived(message, message_was_ok) || | 
| +      index_dispatcher_host_->OnMessageReceived(message, message_was_ok) || | 
| +      object_store_dispatcher_host_->OnMessageReceived( | 
| +          message, message_was_ok) || | 
| +      cursor_dispatcher_host_->OnMessageReceived(message, message_was_ok) || | 
| +      transaction_dispatcher_host_->OnMessageReceived(message, message_was_ok); | 
|  | 
| if (!handled) { | 
| handled = true; | 
| -    DCHECK(msg_is_ok); | 
| -    IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost, message, msg_is_ok) | 
| -      IPC_MESSAGE_HANDLER(ViewHostMsg_IDBFactoryOpen, | 
| -                          OnIDBFactoryOpen) | 
| +    IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost, message, *message_was_ok) | 
| +      IPC_MESSAGE_HANDLER(IndexedDBHostMsg_FactoryOpen, OnIDBFactoryOpen) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
| } | 
|  | 
| -  DCHECK(handled); | 
| -  if (!msg_is_ok) { | 
| -    BrowserRenderProcessHost::BadMessageTerminateProcess(message.type(), | 
| -                                                         process_handle_); | 
| -  } | 
| +  return handled; | 
| } | 
|  | 
| int32 IndexedDBDispatcherHost::Add(WebIDBCursor* idb_cursor) { | 
| @@ -253,7 +154,7 @@ | 
| } | 
|  | 
| void IndexedDBDispatcherHost::OnIDBFactoryOpen( | 
| -    const ViewHostMsg_IDBFactoryOpen_Params& params) { | 
| +    const IndexedDBHostMsg_FactoryOpen_Params& params) { | 
| FilePath base_path = webkit_context_->data_path(); | 
| FilePath indexed_db_path; | 
| if (!base_path.empty()) { | 
| @@ -263,16 +164,16 @@ | 
|  | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| GURL host(string16(WebSecurityOrigin::createFromDatabaseIdentifier( | 
| -      params.origin_).toString())); | 
| +      params.origin).toString())); | 
|  | 
| ContentSetting content_setting = | 
| host_content_settings_map_->GetContentSetting( | 
| host, CONTENT_SETTINGS_TYPE_COOKIES, ""); | 
|  | 
| CallRenderViewHostContentSettingsDelegate( | 
| -      process_id_, params.routing_id_, | 
| +      process_id_, params.routing_id, | 
| &RenderViewHostDelegate::ContentSettings::OnIndexedDBAccessed, | 
| -      host, params.name_, content_setting == CONTENT_SETTING_BLOCK); | 
| +      host, params.name, content_setting == CONTENT_SETTING_BLOCK); | 
|  | 
| if (content_setting == CONTENT_SETTING_BLOCK) { | 
| // TODO(jorlow): Change this to the proper error code once we figure out | 
| @@ -280,12 +181,12 @@ | 
| int error_code = 0; // Defined by the IndexedDB spec. | 
| static string16 error_message = ASCIIToUTF16( | 
| "The user denied permission to open the database."); | 
| -    Send(new ViewMsg_IDBCallbacksError(params.response_id_, error_code, | 
| -                                       error_message)); | 
| +    Send(new IndexedDBMsg_CallbacksError(params.response_id, error_code, | 
| +                                         error_message)); | 
| return; | 
| } | 
|  | 
| -  DCHECK(kDefaultQuota == params.maximum_size_); | 
| +  DCHECK(kDefaultQuota == params.maximum_size); | 
|  | 
| uint64 quota = kDefaultQuota; | 
| if (CommandLine::ForCurrentProcess()->HasSwitch( | 
| @@ -294,9 +195,9 @@ | 
| } | 
|  | 
| Context()->GetIDBFactory()->open( | 
| -      params.name_, | 
| -      new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id_), | 
| -      WebSecurityOrigin::createFromDatabaseIdentifier(params.origin_), NULL, | 
| +      params.name, | 
| +      new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id), | 
| +      WebSecurityOrigin::createFromDatabaseIdentifier(params.origin), NULL, | 
| webkit_glue::FilePathToWebString(indexed_db_path), quota); | 
| } | 
|  | 
| @@ -307,14 +208,11 @@ | 
| template <typename ObjectType> | 
| ObjectType* IndexedDBDispatcherHost::GetOrTerminateProcess( | 
| IDMap<ObjectType, IDMapOwnPointer>* map, int32 return_object_id, | 
| -    IPC::Message* reply_msg, uint32 message_type) { | 
| +    uint32 message_type) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| ObjectType* return_object = map->Lookup(return_object_id); | 
| -  if (!return_object) { | 
| -    BrowserRenderProcessHost::BadMessageTerminateProcess(message_type, | 
| -                                                         process_handle_); | 
| -    delete reply_msg; | 
| -  } | 
| +  if (!return_object) | 
| +    BadMessageReceived(message_type); | 
| return return_object; | 
| } | 
|  | 
| @@ -322,22 +220,20 @@ | 
| typename MapObjectType, typename Method> | 
| void IndexedDBDispatcherHost::SyncGetter( | 
| IDMap<MapObjectType, IDMapOwnPointer>* map, int32 object_id, | 
| -    IPC::Message* reply_msg, Method method) { | 
| -  MapObjectType* object = GetOrTerminateProcess(map, object_id, reply_msg, | 
| +    ReplyType* reply, Method method) { | 
| +  MapObjectType* object = GetOrTerminateProcess(map, object_id, | 
| MessageType::ID); | 
| if (!object) | 
| return; | 
|  | 
| -  ReplyType reply = (object->*method)(); | 
| -  MessageType::WriteReplyParams(reply_msg, reply); | 
| -  Send(reply_msg); | 
| +  *reply = (object->*method)(); | 
| } | 
|  | 
| template <typename ObjectType> | 
| void IndexedDBDispatcherHost::DestroyObject( | 
| IDMap<ObjectType, IDMapOwnPointer>* map, int32 object_id, | 
| uint32 message_type) { | 
| -  GetOrTerminateProcess(map, object_id, NULL, message_type); | 
| +  GetOrTerminateProcess(map, object_id, message_type); | 
| map->Remove(object_id); | 
| } | 
|  | 
| @@ -360,19 +256,17 @@ | 
| bool handled = true; | 
| IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::DatabaseDispatcherHost, | 
| message, *msg_is_ok) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseName, OnName) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseVersion, OnVersion) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseObjectStoreNames, | 
| -                                    OnObjectStoreNames) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseCreateObjectStore, | 
| -                                    OnCreateObjectStore) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseDeleteObjectStore, | 
| -                                    OnDeleteObjectStore) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseSetVersion, | 
| -                                    OnSetVersion) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseTransaction, | 
| -                                    OnTransaction) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseDestroyed, OnDestroyed) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseName, OnName) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseVersion, OnVersion) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseObjectStoreNames, | 
| +                        OnObjectStoreNames) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateObjectStore, | 
| +                        OnCreateObjectStore) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteObjectStore, | 
| +                        OnDeleteObjectStore) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetVersion, OnSetVersion) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseTransaction, OnTransaction) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDestroyed, OnDestroyed) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
| return handled; | 
| @@ -380,104 +274,85 @@ | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::Send( | 
| IPC::Message* message) { | 
| -  // The macro magic in OnMessageReceived requires this to link, but it should | 
| -  // never actually be called. | 
| -  NOTREACHED(); | 
| parent_->Send(message); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnName( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<string16, ViewHostMsg_IDBDatabaseName>( | 
| -      &map_, object_id, reply_msg, &WebIDBDatabase::name); | 
| +    int32 object_id, string16* name) { | 
| +  parent_->SyncGetter<string16, IndexedDBHostMsg_DatabaseName>( | 
| +      &map_, object_id, name, &WebIDBDatabase::name); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnVersion( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<string16, ViewHostMsg_IDBDatabaseVersion>( | 
| -      &map_, object_id, reply_msg, &WebIDBDatabase::version); | 
| +    int32 object_id, string16* version) { | 
| +  parent_->SyncGetter<string16, IndexedDBHostMsg_DatabaseVersion>( | 
| +      &map_, object_id, version, &WebIDBDatabase::version); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnObjectStoreNames( | 
| -    int32 idb_database_id, IPC::Message* reply_msg) { | 
| +    int32 idb_database_id, std::vector<string16>* object_stores) { | 
| WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_database_id, reply_msg, | 
| -      ViewHostMsg_IDBDatabaseObjectStoreNames::ID); | 
| +      &map_, idb_database_id, IndexedDBHostMsg_DatabaseObjectStoreNames::ID); | 
| if (!idb_database) | 
| return; | 
|  | 
| WebDOMStringList web_object_stores = idb_database->objectStoreNames(); | 
| -  std::vector<string16> object_stores; | 
| -  object_stores.reserve(web_object_stores.length()); | 
| +  object_stores->reserve(web_object_stores.length()); | 
| for (unsigned i = 0; i < web_object_stores.length(); ++i) | 
| -    object_stores.push_back(web_object_stores.item(i)); | 
| -  ViewHostMsg_IDBDatabaseObjectStoreNames::WriteReplyParams(reply_msg, | 
| -                                                            object_stores); | 
| -  parent_->Send(reply_msg); | 
| +    object_stores->push_back(web_object_stores.item(i)); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnCreateObjectStore( | 
| -    const ViewHostMsg_IDBDatabaseCreateObjectStore_Params& params, | 
| -    IPC::Message* reply_msg) { | 
| +    const IndexedDBHostMsg_DatabaseCreateObjectStore_Params& params, | 
| +    int32* object_store_id, WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( | 
| -      &map_, params.idb_database_id_, NULL, | 
| -      ViewHostMsg_IDBDatabaseCreateObjectStore::ID); | 
| +      &map_, params.idb_database_id, | 
| +      IndexedDBHostMsg_DatabaseCreateObjectStore::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, params.transaction_id_, | 
| -      NULL, ViewHostMsg_IDBDatabaseCreateObjectStore::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, params.transaction_id, | 
| +      IndexedDBHostMsg_DatabaseCreateObjectStore::ID); | 
| if (!idb_database || !idb_transaction) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| WebIDBObjectStore* object_store = idb_database->createObjectStore( | 
| -      params.name_, params.key_path_, params.auto_increment_, | 
| -      *idb_transaction, ec); | 
| -  ViewHostMsg_IDBDatabaseCreateObjectStore::WriteReplyParams( | 
| -      reply_msg, ec ? 0 : parent_->Add(object_store), ec); | 
| -  parent_->Send(reply_msg); | 
| +      params.name, params.key_path, params.auto_increment, | 
| +      *idb_transaction, *ec); | 
| +  *object_store_id = *ec ? 0 : parent_->Add(object_store); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDeleteObjectStore( | 
| int32 idb_database_id, | 
| const string16& name, | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_database_id, NULL, | 
| -      ViewHostMsg_IDBDatabaseDeleteObjectStore::ID); | 
| +      &map_, idb_database_id, IndexedDBHostMsg_DatabaseDeleteObjectStore::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, transaction_id, NULL, | 
| -      ViewHostMsg_IDBDatabaseDeleteObjectStore::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, transaction_id, | 
| +      IndexedDBHostMsg_DatabaseDeleteObjectStore::ID); | 
| if (!idb_database || !idb_transaction) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| -  idb_database->deleteObjectStore(name, *idb_transaction, ec); | 
| -  ViewHostMsg_IDBDatabaseDeleteObjectStore::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_database->deleteObjectStore(name, *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetVersion( | 
| int32 idb_database_id, | 
| int32 response_id, | 
| const string16& version, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_database_id, NULL, | 
| -      ViewHostMsg_IDBDatabaseSetVersion::ID); | 
| +      &map_, idb_database_id, IndexedDBHostMsg_DatabaseSetVersion::ID); | 
| if (!idb_database) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| idb_database->setVersion( | 
| version, | 
| new IndexedDBCallbacks<WebIDBTransaction>(parent_, response_id), | 
| -      ec); | 
| -  ViewHostMsg_IDBDatabaseSetVersion::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnTransaction( | 
| @@ -485,10 +360,10 @@ | 
| const std::vector<string16>& names, | 
| int32 mode, | 
| int32 timeout, | 
| -    IPC::Message* reply_msg) { | 
| +    int32* idb_transaction_id, | 
| +    WebKit::WebExceptionCode* ec) { | 
| WebIDBDatabase* database = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_database_id, reply_msg, | 
| -      ViewHostMsg_IDBDatabaseTransaction::ID); | 
| +      &map_, idb_database_id, IndexedDBHostMsg_DatabaseTransaction::ID); | 
| if (!database) | 
| return; | 
|  | 
| @@ -498,19 +373,16 @@ | 
| object_stores.append(*it); | 
| } | 
|  | 
| -  WebExceptionCode ec = 0; | 
| WebIDBTransaction* transaction = database->transaction( | 
| -      object_stores, mode, timeout, ec); | 
| -  DCHECK(!transaction != !ec); | 
| -  int32 id = ec ? 0 : parent_->Add(transaction); | 
| -  ViewHostMsg_IDBDatabaseTransaction::WriteReplyParams(reply_msg, id, ec); | 
| -  parent_->Send(reply_msg); | 
| +      object_stores, mode, timeout, *ec); | 
| +  DCHECK(!transaction != !*ec); | 
| +  *idb_transaction_id = *ec ? 0 : parent_->Add(transaction); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDestroyed( | 
| int32 object_id) { | 
| parent_->DestroyObject(&map_, object_id, | 
| -                         ViewHostMsg_IDBDatabaseDestroyed::ID); | 
| +                         IndexedDBHostMsg_DatabaseDestroyed::ID); | 
| } | 
|  | 
|  | 
| @@ -532,17 +404,16 @@ | 
| bool handled = true; | 
| IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::IndexDispatcherHost, | 
| message, *msg_is_ok) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexName, OnName) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexStoreName, OnStoreName) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexKeyPath, OnKeyPath) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexUnique, OnUnique) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexOpenObjectCursor, | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexName, OnName) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexStoreName, OnStoreName) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexKeyPath, OnKeyPath) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexUnique, OnUnique) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenObjectCursor, | 
| OnOpenObjectCursor) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexOpenKeyCursor, | 
| -                                    OnOpenKeyCursor) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexGetObject, OnGetObject) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBIndexGetKey, OnGetKey) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBIndexDestroyed, OnDestroyed) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenKeyCursor, OnOpenKeyCursor) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetObject, OnGetObject) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetKey, OnGetKey) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexDestroyed, OnDestroyed) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
| return handled; | 
| @@ -550,81 +421,71 @@ | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::Send( | 
| IPC::Message* message) { | 
| -  // The macro magic in OnMessageReceived requires this to link, but it should | 
| -  // never actually be called. | 
| -  NOTREACHED(); | 
| parent_->Send(message); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnName( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<string16, ViewHostMsg_IDBIndexName>( | 
| -      &map_, object_id, reply_msg, &WebIDBIndex::name); | 
| +    int32 object_id, string16* name) { | 
| +  parent_->SyncGetter<string16, IndexedDBHostMsg_IndexName>( | 
| +      &map_, object_id, name, &WebIDBIndex::name); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnStoreName( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<string16, ViewHostMsg_IDBIndexStoreName>( | 
| -      &map_, object_id, reply_msg, &WebIDBIndex::storeName); | 
| +    int32 object_id, string16* store_name) { | 
| +  parent_->SyncGetter<string16, IndexedDBHostMsg_IndexStoreName>( | 
| +      &map_, object_id, store_name, &WebIDBIndex::storeName); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnKeyPath( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<NullableString16, ViewHostMsg_IDBIndexKeyPath>( | 
| -      &map_, object_id, reply_msg, &WebIDBIndex::keyPath); | 
| +    int32 object_id, NullableString16* key_path) { | 
| +  parent_->SyncGetter<NullableString16, IndexedDBHostMsg_IndexKeyPath>( | 
| +      &map_, object_id, key_path, &WebIDBIndex::keyPath); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnUnique( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<bool, ViewHostMsg_IDBIndexUnique>( | 
| -      &map_, object_id, reply_msg, &WebIDBIndex::unique); | 
| +    int32 object_id, bool* unique) { | 
| +  parent_->SyncGetter<bool, IndexedDBHostMsg_IndexUnique>( | 
| +      &map_, object_id, unique, &WebIDBIndex::unique); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnOpenObjectCursor( | 
| -    const ViewHostMsg_IDBIndexOpenCursor_Params& params, | 
| -    IPC::Message* reply_msg) { | 
| +    const IndexedDBHostMsg_IndexOpenCursor_Params& params, | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( | 
| -      &map_, params.idb_index_id_, NULL, | 
| -      ViewHostMsg_IDBIndexOpenObjectCursor::ID); | 
| +      &map_, params.idb_index_id, IndexedDBHostMsg_IndexOpenObjectCursor::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| &parent_->transaction_dispatcher_host_->map_, | 
| -      params.transaction_id_, NULL, ViewHostMsg_IDBIndexOpenObjectCursor::ID); | 
| +      params.transaction_id, IndexedDBHostMsg_IndexOpenObjectCursor::ID); | 
| if (!idb_transaction || !idb_index) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| -      new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id_)); | 
| -  WebExceptionCode ec = 0; | 
| +      new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); | 
| idb_index->openObjectCursor( | 
| -      WebIDBKeyRange(params.lower_key_, params.upper_key_, params.lower_open_, | 
| -                     params.upper_open_), | 
| -      params.direction_, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBIndexOpenObjectCursor::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, | 
| +                     params.upper_open), | 
| +      params.direction, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnOpenKeyCursor( | 
| -    const ViewHostMsg_IDBIndexOpenCursor_Params& params, | 
| -    IPC::Message* reply_msg) { | 
| +    const IndexedDBHostMsg_IndexOpenCursor_Params& params, | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( | 
| -      &map_, params.idb_index_id_, NULL, ViewHostMsg_IDBIndexOpenKeyCursor::ID); | 
| +      &map_, params.idb_index_id, IndexedDBHostMsg_IndexOpenKeyCursor::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, params.transaction_id_, | 
| -      NULL, ViewHostMsg_IDBIndexOpenKeyCursor::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, params.transaction_id, | 
| +      IndexedDBHostMsg_IndexOpenKeyCursor::ID); | 
| if (!idb_transaction || !idb_index) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| -      new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id_)); | 
| -  WebExceptionCode ec = 0; | 
| +      new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); | 
| idb_index->openKeyCursor( | 
| -      WebIDBKeyRange(params.lower_key_, params.upper_key_, params.lower_open_, | 
| -                     params.upper_open_), | 
| -      params.direction_, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBIndexOpenKeyCursor::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, | 
| +                     params.upper_open), | 
| +      params.direction, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetObject( | 
| @@ -632,22 +493,19 @@ | 
| int32 response_id, | 
| const IndexedDBKey& key, | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_index_id, NULL, ViewHostMsg_IDBIndexGetObject::ID); | 
| +      &map_, idb_index_id, IndexedDBHostMsg_IndexGetObject::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, transaction_id, NULL, | 
| -      ViewHostMsg_IDBIndexGetObject::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, transaction_id, | 
| +      IndexedDBHostMsg_IndexGetObject::ID); | 
| if (!idb_transaction || !idb_index) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id)); | 
| -  WebExceptionCode ec = 0; | 
| -  idb_index->getObject(key, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBIndexGetObject::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_index->getObject(key, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetKey( | 
| @@ -655,27 +513,24 @@ | 
| int32 response_id, | 
| const IndexedDBKey& key, | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_index_id, NULL, ViewHostMsg_IDBIndexGetKey::ID); | 
| +      &map_, idb_index_id, IndexedDBHostMsg_IndexGetKey::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, transaction_id, NULL, | 
| -      ViewHostMsg_IDBIndexGetKey::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, transaction_id, | 
| +      IndexedDBHostMsg_IndexGetKey::ID); | 
| if (!idb_transaction || !idb_index) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| new IndexedDBCallbacks<WebIDBKey>(parent_, response_id)); | 
| -  WebExceptionCode ec = 0; | 
| -  idb_index->getKey(key, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBIndexGetKey::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_index->getKey(key, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::IndexDispatcherHost::OnDestroyed( | 
| int32 object_id) { | 
| -  parent_->DestroyObject(&map_, object_id, ViewHostMsg_IDBIndexDestroyed::ID); | 
| +  parent_->DestroyObject(&map_, object_id, IndexedDBHostMsg_IndexDestroyed::ID); | 
| } | 
|  | 
| ////////////////////////////////////////////////////////////////////// | 
| @@ -697,22 +552,17 @@ | 
| bool handled = true; | 
| IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::ObjectStoreDispatcherHost, | 
| message, *msg_is_ok) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreName, OnName) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreKeyPath, | 
| -                                    OnKeyPath) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreIndexNames, | 
| -                                    OnIndexNames) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreGet, OnGet); | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStorePut, OnPut); | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreDelete, OnDelete); | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreCreateIndex, | 
| -                                    OnCreateIndex); | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreIndex, OnIndex); | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreDeleteIndex, | 
| -                                    OnDeleteIndex); | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBObjectStoreOpenCursor, | 
| -                                    OnOpenCursor) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBObjectStoreDestroyed, OnDestroyed) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreName, OnName) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreKeyPath, OnKeyPath) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndexNames, OnIndexNames) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreGet, OnGet) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStorePut, OnPut) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDelete, OnDelete) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreCreateIndex, OnCreateIndex) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndex, OnIndex) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDeleteIndex, OnDeleteIndex) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreOpenCursor, OnOpenCursor) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDestroyed, OnDestroyed) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
| return handled; | 
| @@ -720,40 +570,32 @@ | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::Send( | 
| IPC::Message* message) { | 
| -  // The macro magic in OnMessageReceived requires this to link, but it should | 
| -  // never actually be called. | 
| -  NOTREACHED(); | 
| parent_->Send(message); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnName( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<string16, ViewHostMsg_IDBObjectStoreName>( | 
| -      &map_, object_id, reply_msg, &WebIDBObjectStore::name); | 
| +    int32 object_id, string16* name) { | 
| +  parent_->SyncGetter<string16, IndexedDBHostMsg_ObjectStoreName>( | 
| +      &map_, object_id, name, &WebIDBObjectStore::name); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnKeyPath( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| -  parent_->SyncGetter<NullableString16, ViewHostMsg_IDBObjectStoreKeyPath>( | 
| -      &map_, object_id, reply_msg, &WebIDBObjectStore::keyPath); | 
| +    int32 object_id, NullableString16* keyPath) { | 
| +  parent_->SyncGetter<NullableString16, IndexedDBHostMsg_ObjectStoreKeyPath>( | 
| +      &map_, object_id, keyPath, &WebIDBObjectStore::keyPath); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnIndexNames( | 
| -    int32 idb_object_store_id, IPC::Message* reply_msg) { | 
| +    int32 idb_object_store_id, std::vector<string16>* index_names) { | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_object_store_id, reply_msg, | 
| -      ViewHostMsg_IDBObjectStoreIndexNames::ID); | 
| +      &map_, idb_object_store_id, IndexedDBHostMsg_ObjectStoreIndexNames::ID); | 
| if (!idb_object_store) | 
| return; | 
|  | 
| WebDOMStringList web_index_names = idb_object_store->indexNames(); | 
| -  std::vector<string16> index_names; | 
| -  index_names.reserve(web_index_names.length()); | 
| +  index_names->reserve(web_index_names.length()); | 
| for (unsigned i = 0; i < web_index_names.length(); ++i) | 
| -    index_names.push_back(web_index_names.item(i)); | 
| -  ViewHostMsg_IDBObjectStoreIndexNames::WriteReplyParams(reply_msg, | 
| -                                                         index_names); | 
| -  parent_->Send(reply_msg); | 
| +    index_names->push_back(web_index_names.item(i)); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnGet( | 
| @@ -761,44 +603,37 @@ | 
| int32 response_id, | 
| const IndexedDBKey& key, | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_object_store_id, NULL, ViewHostMsg_IDBObjectStoreGet::ID); | 
| +      &map_, idb_object_store_id, IndexedDBHostMsg_ObjectStoreGet::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, transaction_id, NULL, | 
| -      ViewHostMsg_IDBObjectStoreGet::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, transaction_id, | 
| +      IndexedDBHostMsg_ObjectStoreGet::ID); | 
| if (!idb_transaction || !idb_object_store) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id)); | 
| -  WebExceptionCode ec = 0; | 
| -  idb_object_store->get(key, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBObjectStoreGet::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_object_store->get(key, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnPut( | 
| -    const ViewHostMsg_IDBObjectStorePut_Params& params, | 
| -    IPC::Message* reply_msg) { | 
| +    const IndexedDBHostMsg_ObjectStorePut_Params& params, | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, params.idb_object_store_id_, NULL, | 
| -      ViewHostMsg_IDBObjectStorePut::ID); | 
| +      &map_, params.idb_object_store_id, IndexedDBHostMsg_ObjectStorePut::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, params.transaction_id_, | 
| -      NULL, ViewHostMsg_IDBObjectStorePut::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, params.transaction_id, | 
| +      IndexedDBHostMsg_ObjectStorePut::ID); | 
| if (!idb_transaction || !idb_object_store) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| -      new IndexedDBCallbacks<WebIDBKey>(parent_, params.response_id_)); | 
| -  WebExceptionCode ec = 0; | 
| -  idb_object_store->put(params.serialized_value_, params.key_, params.add_only_, | 
| -                        callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBObjectStorePut::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      new IndexedDBCallbacks<WebIDBKey>(parent_, params.response_id)); | 
| +  idb_object_store->put(params.serialized_value, params.key, params.add_only, | 
| +                        callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDelete( | 
| @@ -806,112 +641,96 @@ | 
| int32 response_id, | 
| const IndexedDBKey& key, | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_object_store_id, NULL, ViewHostMsg_IDBObjectStoreDelete::ID); | 
| +      &map_, idb_object_store_id, IndexedDBHostMsg_ObjectStoreDelete::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, transaction_id, NULL, | 
| -      ViewHostMsg_IDBObjectStoreDelete::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, transaction_id, | 
| +      IndexedDBHostMsg_ObjectStoreDelete::ID); | 
| if (!idb_transaction || !idb_object_store) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| new IndexedDBCallbacks<void>(parent_, response_id)); | 
| -  WebExceptionCode ec = 0; | 
| -  idb_object_store->deleteFunction(key, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBObjectStoreDelete::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_object_store->deleteFunction( | 
| +      key, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnCreateIndex( | 
| -   const ViewHostMsg_IDBObjectStoreCreateIndex_Params& params, | 
| -   IPC::Message* reply_msg) { | 
| +   const IndexedDBHostMsg_ObjectStoreCreateIndex_Params& params, | 
| +   int32* index_id, WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, params.idb_object_store_id_, NULL, | 
| -      ViewHostMsg_IDBObjectStoreCreateIndex::ID); | 
| +      &map_, params.idb_object_store_id, | 
| +      IndexedDBHostMsg_ObjectStoreCreateIndex::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, params.transaction_id_, | 
| -      NULL, ViewHostMsg_IDBObjectStoreCreateIndex::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, params.transaction_id, | 
| +      IndexedDBHostMsg_ObjectStoreCreateIndex::ID); | 
| if (!idb_object_store || !idb_transaction) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| WebIDBIndex* index = idb_object_store->createIndex( | 
| -      params.name_, params.key_path_, params.unique_, *idb_transaction, ec); | 
| -  ViewHostMsg_IDBObjectStoreCreateIndex::WriteReplyParams( | 
| -      reply_msg, ec ? 0 : parent_->Add(index), ec); | 
| -  parent_->Send(reply_msg); | 
| +      params.name, params.key_path, params.unique, *idb_transaction, *ec); | 
| +  *index_id = *ec ? 0 : parent_->Add(index); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnIndex( | 
| int32 idb_object_store_id, | 
| const string16& name, | 
| -    IPC::Message* reply_msg) { | 
| +    int32* idb_index_id, | 
| +    WebKit::WebExceptionCode* ec) { | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_object_store_id, reply_msg, | 
| -      ViewHostMsg_IDBObjectStoreIndex::ID); | 
| +      &map_, idb_object_store_id, IndexedDBHostMsg_ObjectStoreIndex::ID); | 
| if (!idb_object_store) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| -  WebIDBIndex* index = idb_object_store->index(name, ec); | 
| -  int32 object_id = parent_->Add(index); | 
| -  ViewHostMsg_IDBObjectStoreIndex::WriteReplyParams(reply_msg, object_id, ec); | 
| -  parent_->Send(reply_msg); | 
| +  WebIDBIndex* index = idb_object_store->index(name, *ec); | 
| +  *idb_index_id = parent_->Add(index); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDeleteIndex( | 
| int32 idb_object_store_id, | 
| const string16& name, | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| -      &map_, idb_object_store_id, NULL, | 
| -      ViewHostMsg_IDBObjectStoreDeleteIndex::ID); | 
| +      &map_, idb_object_store_id, IndexedDBHostMsg_ObjectStoreDeleteIndex::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, transaction_id, NULL, | 
| -      ViewHostMsg_IDBObjectStoreDeleteIndex::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, transaction_id, | 
| +      IndexedDBHostMsg_ObjectStoreDeleteIndex::ID); | 
| if (!idb_object_store || !idb_transaction) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| -  idb_object_store->deleteIndex(name, *idb_transaction, ec); | 
| -  ViewHostMsg_IDBObjectStoreDeleteIndex::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_object_store->deleteIndex(name, *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnOpenCursor( | 
| -    const ViewHostMsg_IDBObjectStoreOpenCursor_Params& params, | 
| -    IPC::Message* reply_msg) { | 
| +    const IndexedDBHostMsg_ObjectStoreOpenCursor_Params& params, | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 
| &parent_->object_store_dispatcher_host_->map_, | 
| -      params.idb_object_store_id_, NULL, | 
| -      ViewHostMsg_IDBObjectStoreOpenCursor::ID); | 
| +      params.idb_object_store_id, IndexedDBHostMsg_ObjectStoreOpenCursor::ID); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &parent_->transaction_dispatcher_host_->map_, params.transaction_id_, | 
| -      NULL, ViewHostMsg_IDBObjectStoreOpenCursor::ID); | 
| +      &parent_->transaction_dispatcher_host_->map_, params.transaction_id, | 
| +      IndexedDBHostMsg_ObjectStoreOpenCursor::ID); | 
| if (!idb_transaction || !idb_object_store) | 
| return; | 
|  | 
| scoped_ptr<WebIDBCallbacks> callbacks( | 
| -      new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id_)); | 
| -  WebExceptionCode ec = 0; | 
| +      new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); | 
| idb_object_store->openCursor( | 
| -      WebIDBKeyRange(params.lower_key_, params.upper_key_, params.lower_open_, | 
| -                     params.upper_open_), | 
| -      params.direction_, callbacks.release(), *idb_transaction, ec); | 
| -  ViewHostMsg_IDBObjectStoreOpenCursor::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, | 
| +                     params.upper_open), | 
| +      params.direction, callbacks.release(), *idb_transaction, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDestroyed( | 
| int32 object_id) { | 
| parent_->DestroyObject( | 
| -      &map_, object_id, ViewHostMsg_IDBObjectStoreDestroyed::ID); | 
| +      &map_, object_id, IndexedDBHostMsg_ObjectStoreDestroyed::ID); | 
| } | 
|  | 
| ////////////////////////////////////////////////////////////////////// | 
| @@ -932,14 +751,13 @@ | 
| bool handled = true; | 
| IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::CursorDispatcherHost, | 
| message, *msg_is_ok) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBCursorDirection, | 
| -                                    OnDirection) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBCursorKey, OnKey) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBCursorValue, OnValue) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBCursorUpdate, OnUpdate) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBCursorContinue, OnContinue) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBCursorDelete, OnDelete) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBCursorDestroyed, OnDestroyed) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorDirection, OnDirection) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorKey, OnKey) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorValue, OnValue) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorUpdate, OnUpdate) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorContinue, OnContinue) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorDelete, OnDelete) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorDestroyed, OnDestroyed) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
| return handled; | 
| @@ -948,111 +766,94 @@ | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::Send( | 
| IPC::Message* message) { | 
| -  // The macro magic in OnMessageReceived requires this to link, but it should | 
| -  // never actually be called. | 
| -  NOTREACHED(); | 
| parent_->Send(message); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnDirection( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| +    int32 object_id, int32* direction) { | 
| WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess( | 
| -      &map_, object_id, reply_msg, | 
| -      ViewHostMsg_IDBCursorDirection::ID); | 
| +      &map_, object_id, IndexedDBHostMsg_CursorDirection::ID); | 
| if (!idb_cursor) | 
| return; | 
|  | 
| -  int direction = idb_cursor->direction(); | 
| -  ViewHostMsg_IDBCursorDirection::WriteReplyParams(reply_msg, direction); | 
| -  parent_->Send(reply_msg); | 
| +  *direction = idb_cursor->direction(); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnKey( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| +    int32 object_id, IndexedDBKey* key) { | 
| WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess( | 
| -      &map_, object_id, reply_msg, | 
| -      ViewHostMsg_IDBCursorKey::ID); | 
| +      &map_, object_id, IndexedDBHostMsg_CursorKey::ID); | 
| if (!idb_cursor) | 
| return; | 
|  | 
| -  IndexedDBKey key(idb_cursor->key()); | 
| -  ViewHostMsg_IDBCursorKey::WriteReplyParams(reply_msg, key); | 
| -  parent_->Send(reply_msg); | 
| +  *key = IndexedDBKey(idb_cursor->key()); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnValue( | 
| -    int32 object_id, IPC::Message* reply_msg) { | 
| +    int32 object_id, | 
| +    SerializedScriptValue* script_value, | 
| +    IndexedDBKey* key) { | 
| WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess( | 
| -      &map_, object_id, reply_msg, | 
| -      ViewHostMsg_IDBCursorValue::ID); | 
| +      &map_, object_id, IndexedDBHostMsg_CursorValue::ID); | 
| if (!idb_cursor) | 
| return; | 
|  | 
| -  WebSerializedScriptValue scriptValue; | 
| -  WebIDBKey key; | 
| -  idb_cursor->value(scriptValue, key); | 
| -  ViewHostMsg_IDBCursorValue::WriteReplyParams( | 
| -      reply_msg, SerializedScriptValue(scriptValue), IndexedDBKey(key)); | 
| -  parent_->Send(reply_msg); | 
| +  WebSerializedScriptValue temp_script_value; | 
| +  WebIDBKey temp_key; | 
| +  idb_cursor->value(temp_script_value, temp_key); | 
| + | 
| +  *script_value = SerializedScriptValue(temp_script_value); | 
| +  *key = IndexedDBKey(temp_key); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnUpdate( | 
| int32 cursor_id, | 
| int32 response_id, | 
| const SerializedScriptValue& value, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess( | 
| -      &map_, cursor_id, NULL, ViewHostMsg_IDBCursorUpdate::ID); | 
| +      &map_, cursor_id, IndexedDBHostMsg_CursorUpdate::ID); | 
| if (!idb_cursor) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| idb_cursor->update( | 
| -      value, new IndexedDBCallbacks<void>(parent_, response_id), ec); | 
| -  ViewHostMsg_IDBCursorUpdate::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      value, new IndexedDBCallbacks<void>(parent_, response_id), *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnContinue( | 
| int32 cursor_id, | 
| int32 response_id, | 
| const IndexedDBKey& key, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess( | 
| -      &map_, cursor_id, NULL, ViewHostMsg_IDBCursorContinue::ID); | 
| +      &map_, cursor_id, IndexedDBHostMsg_CursorContinue::ID); | 
| if (!idb_cursor) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| idb_cursor->continueFunction( | 
| -      key, new IndexedDBCallbacks<WebIDBCursor>(parent_, response_id), ec); | 
| -  ViewHostMsg_IDBCursorContinue::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +      key, new IndexedDBCallbacks<WebIDBCursor>(parent_, response_id), *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnDelete( | 
| int32 cursor_id, | 
| int32 response_id, | 
| -    IPC::Message* reply_msg) { | 
| +    WebKit::WebExceptionCode* ec) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess( | 
| -      &map_, cursor_id, NULL, ViewHostMsg_IDBCursorUpdate::ID); | 
| +      &map_, cursor_id, IndexedDBHostMsg_CursorUpdate::ID); | 
| if (!idb_cursor) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| // TODO(jorlow): This should be delete. | 
| -  idb_cursor->remove(new IndexedDBCallbacks<void>(parent_, response_id), ec); | 
| -  ViewHostMsg_IDBCursorUpdate::WriteReplyParams(reply_msg, ec); | 
| -  parent_->Send(reply_msg); | 
| +  idb_cursor->remove(new IndexedDBCallbacks<void>(parent_, response_id), *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( | 
| int32 object_id) { | 
| parent_->DestroyObject( | 
| -      &map_, object_id, ViewHostMsg_IDBCursorDestroyed::ID); | 
| +      &map_, object_id, IndexedDBHostMsg_CursorDestroyed::ID); | 
| } | 
|  | 
| ////////////////////////////////////////////////////////////////////// | 
| @@ -1079,13 +880,12 @@ | 
| bool handled = true; | 
| IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::TransactionDispatcherHost, | 
| message, *msg_is_ok) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBTransactionAbort, OnAbort) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBTransactionMode, OnMode) | 
| -    IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBTransactionObjectStore, | 
| -                                    OnObjectStore) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBTransactionDidCompleteTaskEvents, | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionAbort, OnAbort) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionMode, OnMode) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionObjectStore, OnObjectStore) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionDidCompleteTaskEvents, | 
| OnDidCompleteTaskEvents) | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_IDBTransactionDestroyed, OnDestroyed) | 
| +    IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionDestroyed, OnDestroyed) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
| return handled; | 
| @@ -1093,16 +893,13 @@ | 
|  | 
| void IndexedDBDispatcherHost::TransactionDispatcherHost::Send( | 
| IPC::Message* message) { | 
| -  // The macro magic in OnMessageReceived requires this to link, but it should | 
| -  // never actually be called. | 
| -  NOTREACHED(); | 
| parent_->Send(message); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::TransactionDispatcherHost::OnAbort( | 
| int32 transaction_id) { | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &map_, transaction_id, 0, ViewHostMsg_IDBTransactionAbort::ID); | 
| +      &map_, transaction_id, IndexedDBHostMsg_TransactionAbort::ID); | 
| if (!idb_transaction) | 
| return; | 
|  | 
| @@ -1111,39 +908,32 @@ | 
|  | 
| void IndexedDBDispatcherHost::TransactionDispatcherHost::OnMode( | 
| int32 transaction_id, | 
| -    IPC::Message* reply_msg) { | 
| +    int* mode) { | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &map_, transaction_id, 0, ViewHostMsg_IDBTransactionMode::ID); | 
| +      &map_, transaction_id, IndexedDBHostMsg_TransactionMode::ID); | 
| if (!idb_transaction) | 
| return; | 
|  | 
| -  int mode = idb_transaction->mode(); | 
| -  ViewHostMsg_IDBTransactionMode::WriteReplyParams(reply_msg, mode); | 
| -  parent_->Send(reply_msg); | 
| +  *mode = idb_transaction->mode(); | 
| } | 
|  | 
| void IndexedDBDispatcherHost::TransactionDispatcherHost::OnObjectStore( | 
| -    int32 transaction_id, const string16& name, IPC::Message* reply_msg) { | 
| +    int32 transaction_id, const string16& name, int32* object_store_id, | 
| +    WebKit::WebExceptionCode* ec) { | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &map_, transaction_id, reply_msg, | 
| -      ViewHostMsg_IDBTransactionObjectStore::ID); | 
| +      &map_, transaction_id, IndexedDBHostMsg_TransactionObjectStore::ID); | 
| if (!idb_transaction) | 
| return; | 
|  | 
| -  WebExceptionCode ec = 0; | 
| -  WebIDBObjectStore* object_store = idb_transaction->objectStore(name, ec); | 
| -  int32 object_id = object_store ? parent_->Add(object_store) : 0; | 
| -  ViewHostMsg_IDBTransactionObjectStore::WriteReplyParams( | 
| -      reply_msg, object_id, ec); | 
| -  parent_->Send(reply_msg); | 
| +  WebIDBObjectStore* object_store = idb_transaction->objectStore(name, *ec); | 
| } | 
|  | 
| void IndexedDBDispatcherHost:: | 
| TransactionDispatcherHost::OnDidCompleteTaskEvents(int transaction_id) { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 
| WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 
| -      &map_, transaction_id, 0, | 
| -      ViewHostMsg_IDBTransactionDidCompleteTaskEvents::ID); | 
| +      &map_, transaction_id, | 
| +      IndexedDBHostMsg_TransactionDidCompleteTaskEvents::ID); | 
| if (!idb_transaction) | 
| return; | 
|  | 
| @@ -1153,5 +943,5 @@ | 
| void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed( | 
| int32 object_id) { | 
| parent_->DestroyObject( | 
| -      &map_, object_id, ViewHostMsg_IDBTransactionDestroyed::ID); | 
| +      &map_, object_id, IndexedDBHostMsg_TransactionDestroyed::ID); | 
| } | 
|  |