Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Unified Diff: content/browser/indexed_db/indexed_db_database_callbacks.cc

Issue 2370643004: Port messages sent by WebIDBFactoryImpl to Mojo. (Closed)
Patch Set: Addressed most of dcheng@'s feedback. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/indexed_db/indexed_db_database_callbacks.cc
diff --git a/content/browser/indexed_db/indexed_db_database_callbacks.cc b/content/browser/indexed_db/indexed_db_database_callbacks.cc
index ab09e9074deda5ce5b92e1d4084bb428b06468af..a7e98c91a9838dea6e7e61eb83ec9d709a184e0e 100644
--- a/content/browser/indexed_db/indexed_db_database_callbacks.cc
+++ b/content/browser/indexed_db/indexed_db_database_callbacks.cc
@@ -9,25 +9,47 @@
#include "content/browser/indexed_db/indexed_db_observer_changes.h"
#include "content/common/indexed_db/indexed_db_messages.h"
+using ::indexed_db::mojom::DatabaseCallbacksAssociatedPtrInfo;
+
namespace content {
+class IndexedDBDatabaseCallbacks::IOThreadHelper {
+ public:
+ IOThreadHelper(DatabaseCallbacksAssociatedPtrInfo callbacks_info);
cmumford 2016/10/11 18:30:54 explicit
Reilly Grant (use Gerrit) 2016/10/11 23:46:13 Done.
+ ~IOThreadHelper();
+
+ void SendForcedClose();
+ void SendVersionChange(int64_t old_version, int64_t new_version);
+ void SendAbort(int64_t transaction_id, const IndexedDBDatabaseError& error);
+ void SendComplete(int64_t transaction_id);
+
+ private:
+ ::indexed_db::mojom::DatabaseCallbacksAssociatedPtr callbacks_;
cmumford 2016/10/11 18:30:54 DISALLOW_COPY_AND_ASSIGN(IOThreadHelper);
Reilly Grant (use Gerrit) 2016/10/11 23:46:13 Done.
+};
+
IndexedDBDatabaseCallbacks::IndexedDBDatabaseCallbacks(
- IndexedDBDispatcherHost* dispatcher_host,
- int ipc_thread_id,
- int ipc_database_callbacks_id)
- : dispatcher_host_(dispatcher_host),
+ scoped_refptr<IndexedDBDispatcherHost> dispatcher_host,
+ int32_t ipc_thread_id,
+ DatabaseCallbacksAssociatedPtrInfo callbacks_info)
+ : dispatcher_host_(std::move(dispatcher_host)),
ipc_thread_id_(ipc_thread_id),
- ipc_database_callbacks_id_(ipc_database_callbacks_id) {}
+ helper_(nullptr) {
+ if (callbacks_info.is_valid())
+ helper_ = new IOThreadHelper(std::move(callbacks_info));
+}
-IndexedDBDatabaseCallbacks::~IndexedDBDatabaseCallbacks() {}
+IndexedDBDatabaseCallbacks::~IndexedDBDatabaseCallbacks() {
+ if (helper_)
+ BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, helper_);
+}
void IndexedDBDatabaseCallbacks::OnForcedClose() {
if (!dispatcher_host_.get())
return;
- dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksForcedClose(
- ipc_thread_id_, ipc_database_callbacks_id_));
-
+ BrowserThread::PostTask(
cmumford 2016/10/11 18:30:54 Do you want to: DCHECK(helper_); before all Po
Reilly Grant (use Gerrit) 2016/10/11 23:46:13 Done.
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&IOThreadHelper::SendForcedClose, base::Unretained(helper_)));
dispatcher_host_ = NULL;
}
@@ -36,8 +58,10 @@ void IndexedDBDatabaseCallbacks::OnVersionChange(int64_t old_version,
if (!dispatcher_host_.get())
return;
- dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksVersionChange(
- ipc_thread_id_, ipc_database_callbacks_id_, old_version, new_version));
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&IOThreadHelper::SendVersionChange, base::Unretained(helper_),
+ old_version, new_version));
}
void IndexedDBDatabaseCallbacks::OnAbort(int64_t host_transaction_id,
@@ -46,12 +70,11 @@ void IndexedDBDatabaseCallbacks::OnAbort(int64_t host_transaction_id,
return;
dispatcher_host_->FinishTransaction(host_transaction_id, false);
- dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksAbort(
- ipc_thread_id_,
- ipc_database_callbacks_id_,
- dispatcher_host_->RendererTransactionId(host_transaction_id),
- error.code(),
- error.message()));
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&IOThreadHelper::SendAbort, base::Unretained(helper_),
+ dispatcher_host_->RendererTransactionId(host_transaction_id),
+ error));
}
void IndexedDBDatabaseCallbacks::OnComplete(int64_t host_transaction_id) {
@@ -59,10 +82,10 @@ void IndexedDBDatabaseCallbacks::OnComplete(int64_t host_transaction_id) {
return;
dispatcher_host_->FinishTransaction(host_transaction_id, true);
- dispatcher_host_->Send(new IndexedDBMsg_DatabaseCallbacksComplete(
- ipc_thread_id_,
- ipc_database_callbacks_id_,
- dispatcher_host_->RendererTransactionId(host_transaction_id)));
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&IOThreadHelper::SendComplete, base::Unretained(helper_),
+ dispatcher_host_->RendererTransactionId(host_transaction_id)));
}
void IndexedDBDatabaseCallbacks::OnDatabaseChange(
@@ -73,4 +96,32 @@ void IndexedDBDatabaseCallbacks::OnDatabaseChange(
IndexedDBDispatcherHost::ConvertObserverChanges(std::move(changes))));
}
+IndexedDBDatabaseCallbacks::IOThreadHelper::IOThreadHelper(
+ DatabaseCallbacksAssociatedPtrInfo callbacks_info) {
+ callbacks_.Bind(std::move(callbacks_info));
+}
+
+IndexedDBDatabaseCallbacks::IOThreadHelper::~IOThreadHelper() {}
+
+void IndexedDBDatabaseCallbacks::IOThreadHelper::SendForcedClose() {
+ callbacks_->ForcedClose();
+}
+
+void IndexedDBDatabaseCallbacks::IOThreadHelper::SendVersionChange(
+ int64_t old_version,
+ int64_t new_version) {
+ callbacks_->VersionChange(old_version, new_version);
+}
+
+void IndexedDBDatabaseCallbacks::IOThreadHelper::SendAbort(
+ int64_t transaction_id,
+ const IndexedDBDatabaseError& error) {
+ callbacks_->Abort(transaction_id, error.code(), error.message());
+}
+
+void IndexedDBDatabaseCallbacks::IOThreadHelper::SendComplete(
+ int64_t transaction_id) {
+ callbacks_->Complete(transaction_id);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698