Index: content/browser/indexed_db/indexed_db_change_handler_impl.cc |
diff --git a/content/browser/indexed_db/indexed_db_change_handler_impl.cc b/content/browser/indexed_db/indexed_db_change_handler_impl.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ecac6c4bfb69ebbf2704c620e7ef36c1b2b74737 |
--- /dev/null |
+++ b/content/browser/indexed_db/indexed_db_change_handler_impl.cc |
@@ -0,0 +1,72 @@ |
+// Copyright (c) 2012 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. |
+ |
+#include "content/browser/indexed_db/indexed_db_change_handler_impl.h" |
+ |
+#include <utility> |
+ |
+#include "content/browser/indexed_db/indexed_db_connection.h" |
+#include "content/browser/indexed_db/indexed_db_database_error.h" |
+#include "content/browser/indexed_db/indexed_db_observer_changes.h" |
+ |
+namespace content { |
+ |
+IndexedDBChangeHandlerImpl::IndexedDBChangeHandlerImpl( |
+ ::indexed_db::mojom::DatabaseObserverPtr database_observer) |
+ : database_observer_(std::move(database_observer)) {} |
+ |
+IndexedDBChangeHandlerImpl::~IndexedDBChangeHandlerImpl() {} |
+ |
+void IndexedDBChangeHandlerImpl::OnForcedClose() { |
+ if (!database_observer_) |
+ return; |
+ |
+ database_observer_->OnForcedClosed(); |
+ database_observer_ = nullptr; |
+} |
+ |
+void IndexedDBChangeHandlerImpl::OnVersionChange(int64_t old_version, |
+ int64_t new_version) { |
+ if (!database_observer_) |
+ return; |
+ |
+ database_observer_->OnVersionChange(old_version, new_version); |
+} |
+ |
+void IndexedDBChangeHandlerImpl::OnAbort(int64_t transaction_id, |
+ const IndexedDBDatabaseError& error) { |
+ if (!database_observer_) |
+ return; |
+ |
+ if (connection_) |
+ connection_->FinishTransaction(transaction_id, false); |
+ database_observer_->OnTransactionAborted(transaction_id, error); |
+} |
+ |
+void IndexedDBChangeHandlerImpl::OnComplete(int64_t transaction_id) { |
+ if (!database_observer_) |
+ return; |
+ |
+ if (connection_) |
+ connection_->FinishTransaction(transaction_id, false); |
+ database_observer_->OnTransactionCompleted(transaction_id); |
+} |
+ |
+void IndexedDBChangeHandlerImpl::OnDatabaseChange( |
+ int32_t ipc_database_id, |
+ std::unique_ptr<IndexedDBObserverChanges> changes) { |
+// TODO(cmumford): Add observer functions to Mojo interface. |
+#if 0 |
+ dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksChanges( |
+ ipc_thread_id_, ipc_database_id, |
+ IndexedDBDispatcherHost::ConvertObserverChanges(std::move(changes)))); |
+#endif |
+} |
+ |
+void IndexedDBChangeHandlerImpl::SetConnection( |
+ base::WeakPtr<IndexedDBConnection> connection) { |
+ connection_ = std::move(connection); |
+} |
+ |
+} // namespace content |