1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" 6 7 #include "content/browser/indexed_db/indexed_db_database_error.h" 8 #include "content/browser/indexed_db/indexed_db_dispatcher_host.h" 9 #include "content/common/indexed_db/indexed_db_messages.h" 10 11 namespace content { 12 13 IndexedDBDatabaseCallbacks::IndexedDBDatabaseCallbacks( 14 IndexedDBDispatcherHost* dispatcher_host, 15 int ipc_thread_id, 16 int ipc_database_callbacks_id) 17 : dispatcher_host_(dispatcher_host), 18 ipc_thread_id_(ipc_thread_id), 19 ipc_database_callbacks_id_(ipc_database_callbacks_id) {} 20 21 IndexedDBDatabaseCallbacks::~IndexedDBDatabaseCallbacks() {} 22 23 void IndexedDBDatabaseCallbacks::OnForcedClose() { 24 if (!dispatcher_host_.get()) 25 return; 26 27 dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksForcedClose( 28 ipc_thread_id_, ipc_database_callbacks_id_)); 29 30 dispatcher_host_ = NULL; 31 } 32 33 void IndexedDBDatabaseCallbacks::OnVersionChange(int64 old_version, 34 int64 new_version) { 35 if (!dispatcher_host_.get()) 36 return; 37 38 dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksIntVersionChange( 39 ipc_thread_id_, ipc_database_callbacks_id_, old_version, new_version)); 40 } 41 42 void IndexedDBDatabaseCallbacks::OnAbort( 43 int64 host_transaction_id, 44 const IndexedDBDatabaseError& error) { 45 if (!dispatcher_host_.get()) 46 return; 47 48 dispatcher_host_->FinishTransaction(host_transaction_id, false); 49 dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksAbort( 50 ipc_thread_id_, 51 ipc_database_callbacks_id_, 52 dispatcher_host_->RendererTransactionId(host_transaction_id), 53 error.code(), 54 error.message())); 55 } 56 57 void IndexedDBDatabaseCallbacks::OnComplete(int64 host_transaction_id) { 58 if (!dispatcher_host_.get()) 59 return; 60 61 dispatcher_host_->FinishTransaction(host_transaction_id, true); 62 dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksComplete( 63 ipc_thread_id_, 64 ipc_database_callbacks_id_, 65 dispatcher_host_->RendererTransactionId(host_transaction_id))); 66 } 67 68 } // namespace content 69