summaryrefslogtreecommitdiffstats
path: root/content/renderer
diff options
context:
space:
mode:
authordgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 00:12:05 +0000
committerdgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 00:12:05 +0000
commit86ce7d413f1767a28522db37af4e4143d878064f (patch)
tree0f4138c0e60677b8d35f79645fbab1405a047981 /content/renderer
parent244de53c6d7714d0b02f8017a4c59f5267075548 (diff)
downloadchromium_src-86ce7d413f1767a28522db37af4e4143d878064f.zip
chromium_src-86ce7d413f1767a28522db37af4e4143d878064f.tar.gz
chromium_src-86ce7d413f1767a28522db37af4e4143d878064f.tar.bz2
Allow IndexedDB to send messages from any thread in the renderer process, not just the main thread.
BUG=64054 TEST= Review URL: http://codereview.chromium.org/8745003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112348 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
-rw-r--r--content/renderer/indexed_db_dispatcher.cc76
-rw-r--r--content/renderer/indexed_db_dispatcher.h1
-rw-r--r--content/renderer/renderer_webidbcursor_impl.cc4
-rw-r--r--content/renderer/renderer_webidbdatabase_impl.cc14
-rw-r--r--content/renderer/renderer_webidbindex_impl.cc12
-rw-r--r--content/renderer/renderer_webidbobjectstore_impl.cc16
-rw-r--r--content/renderer/renderer_webidbtransaction_impl.cc12
7 files changed, 61 insertions, 74 deletions
diff --git a/content/renderer/indexed_db_dispatcher.cc b/content/renderer/indexed_db_dispatcher.cc
index 915275f..8b3ddda 100644
--- a/content/renderer/indexed_db_dispatcher.cc
+++ b/content/renderer/indexed_db_dispatcher.cc
@@ -65,6 +65,10 @@ bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
return handled;
}
+void IndexedDBDispatcher::Send(IPC::Message* msg) {
+ ChildThread::current()->Send(msg);
+}
+
void IndexedDBDispatcher::RequestIDBCursorUpdate(
const content::SerializedScriptValue& value,
WebIDBCallbacks* callbacks_ptr,
@@ -73,7 +77,7 @@ void IndexedDBDispatcher::RequestIDBCursorUpdate(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
+ Send(
new IndexedDBHostMsg_CursorUpdate(idb_cursor_id, response_id, value, ec));
if (*ec)
pending_callbacks_.Remove(response_id);
@@ -87,7 +91,7 @@ void IndexedDBDispatcher::RequestIDBCursorContinue(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
+ Send(
new IndexedDBHostMsg_CursorContinue(idb_cursor_id, response_id, key, ec));
if (*ec)
pending_callbacks_.Remove(response_id);
@@ -100,8 +104,7 @@ void IndexedDBDispatcher::RequestIDBCursorDelete(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_CursorDelete(idb_cursor_id, response_id, ec));
+ Send(new IndexedDBHostMsg_CursorDelete(idb_cursor_id, response_id, ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -123,7 +126,7 @@ void IndexedDBDispatcher::RequestIDBFactoryOpen(
params.response_id = pending_callbacks_.Add(callbacks.release());
params.origin = origin;
params.name = name;
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_FactoryOpen(params));
+ Send(new IndexedDBHostMsg_FactoryOpen(params));
}
void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames(
@@ -141,8 +144,7 @@ void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames(
IndexedDBHostMsg_FactoryGetDatabaseNames_Params params;
params.response_id = pending_callbacks_.Add(callbacks.release());
params.origin = origin;
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_FactoryGetDatabaseNames(params));
+ Send(new IndexedDBHostMsg_FactoryGetDatabaseNames(params));
}
void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase(
@@ -162,24 +164,21 @@ void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase(
params.response_id = pending_callbacks_.Add(callbacks.release());
params.origin = origin;
params.name = name;
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_FactoryDeleteDatabase(params));
+ Send(new IndexedDBHostMsg_FactoryDeleteDatabase(params));
}
void IndexedDBDispatcher::RequestIDBDatabaseClose(int32 idb_database_id) {
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_DatabaseClose(idb_database_id));
+ Send(new IndexedDBHostMsg_DatabaseClose(idb_database_id));
pending_database_callbacks_.Remove(idb_database_id);
}
- void IndexedDBDispatcher::RequestIDBDatabaseOpen(
+void IndexedDBDispatcher::RequestIDBDatabaseOpen(
WebIDBDatabaseCallbacks* callbacks_ptr,
int32 idb_database_id) {
scoped_ptr<WebIDBDatabaseCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_database_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_DatabaseOpen(
- response_id, idb_database_id));
+ Send(new IndexedDBHostMsg_DatabaseOpen(response_id, idb_database_id));
}
void IndexedDBDispatcher::RequestIDBDatabaseSetVersion(
@@ -190,9 +189,8 @@ void IndexedDBDispatcher::RequestIDBDatabaseSetVersion(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_DatabaseSetVersion(idb_database_id, response_id,
- version, ec));
+ Send(new IndexedDBHostMsg_DatabaseSetVersion(idb_database_id, response_id,
+ version, ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -214,8 +212,7 @@ void IndexedDBDispatcher::RequestIDBIndexOpenObjectCursor(
params.direction = direction;
params.idb_index_id = idb_index_id;
params.transaction_id = TransactionId(transaction);
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_IndexOpenObjectCursor(params, ec));
+ Send(new IndexedDBHostMsg_IndexOpenObjectCursor(params, ec));
if (*ec)
pending_callbacks_.Remove(params.response_id);
}
@@ -239,8 +236,7 @@ void IndexedDBDispatcher::RequestIDBIndexOpenKeyCursor(
params.direction = direction;
params.idb_index_id = idb_index_id;
params.transaction_id = TransactionId(transaction);
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec));
+ Send(new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec));
if (*ec)
pending_callbacks_.Remove(params.response_id);
}
@@ -253,10 +249,8 @@ void IndexedDBDispatcher::RequestIDBIndexGetObject(
WebExceptionCode* ec) {
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_IndexGetObject(
- idb_index_id, response_id, key,
- TransactionId(transaction), ec));
+ Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, response_id, key,
+ TransactionId(transaction), ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -269,10 +263,9 @@ void IndexedDBDispatcher::RequestIDBIndexGetKey(
WebExceptionCode* ec) {
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_IndexGetKey(
- idb_index_id, response_id, key,
- TransactionId(transaction), ec));
+ Send(new IndexedDBHostMsg_IndexGetKey(
+ idb_index_id, response_id, key,
+ TransactionId(transaction), ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -286,10 +279,9 @@ void IndexedDBDispatcher::RequestIDBObjectStoreGet(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_ObjectStoreGet(
- idb_object_store_id, response_id,
- key, TransactionId(transaction), ec));
+ Send(new IndexedDBHostMsg_ObjectStoreGet(
+ idb_object_store_id, response_id,
+ key, TransactionId(transaction), ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -310,8 +302,7 @@ void IndexedDBDispatcher::RequestIDBObjectStorePut(
params.key = key;
params.put_mode = put_mode;
params.transaction_id = TransactionId(transaction);
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_ObjectStorePut(
- params, ec));
+ Send(new IndexedDBHostMsg_ObjectStorePut(params, ec));
if (*ec)
pending_callbacks_.Remove(params.response_id);
}
@@ -325,10 +316,8 @@ void IndexedDBDispatcher::RequestIDBObjectStoreDelete(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_ObjectStoreDelete(
- idb_object_store_id, response_id,
- key, TransactionId(transaction), ec));
+ Send(new IndexedDBHostMsg_ObjectStoreDelete(
+ idb_object_store_id, response_id, key, TransactionId(transaction), ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -341,10 +330,8 @@ void IndexedDBDispatcher::RequestIDBObjectStoreClear(
scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
int32 response_id = pending_callbacks_.Add(callbacks.release());
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_ObjectStoreClear(
- idb_object_store_id, response_id,
- TransactionId(transaction), ec));
+ Send(new IndexedDBHostMsg_ObjectStoreClear(
+ idb_object_store_id, response_id, TransactionId(transaction), ec));
if (*ec)
pending_callbacks_.Remove(response_id);
}
@@ -366,8 +353,7 @@ void IndexedDBDispatcher::RequestIDBObjectStoreOpenCursor(
params.direction = direction;
params.idb_object_store_id = idb_object_store_id;
params.transaction_id = TransactionId(transaction);
- RenderThreadImpl::current()->Send(
- new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec));
+ Send(new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec));
if (*ec)
pending_callbacks_.Remove(params.response_id);
}
diff --git a/content/renderer/indexed_db_dispatcher.h b/content/renderer/indexed_db_dispatcher.h
index 2807158..d2b3f1a 100644
--- a/content/renderer/indexed_db_dispatcher.h
+++ b/content/renderer/indexed_db_dispatcher.h
@@ -39,6 +39,7 @@ class IndexedDBDispatcher : public IPC::Channel::Listener {
// IPC::Channel::Listener implementation.
virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
+ void Send(IPC::Message* msg);
void RequestIDBFactoryGetDatabaseNames(
WebKit::WebIDBCallbacks* callbacks,
diff --git a/content/renderer/renderer_webidbcursor_impl.cc b/content/renderer/renderer_webidbcursor_impl.cc
index 8060040..5ba7820 100644
--- a/content/renderer/renderer_webidbcursor_impl.cc
+++ b/content/renderer/renderer_webidbcursor_impl.cc
@@ -22,7 +22,7 @@ RendererWebIDBCursorImpl::~RendererWebIDBCursorImpl() {
// object since inside WebKit, they hold a reference to the object wich owns
// this object. But, if that ever changed, then we'd need to invalidate
// any such pointers.
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_CursorDestroyed(
+ ChildThread::current()->Send(new IndexedDBHostMsg_CursorDestroyed(
idb_cursor_id_));
IndexedDBDispatcher* dispatcher =
RenderThreadImpl::current()->indexed_db_dispatcher();
@@ -31,7 +31,7 @@ RendererWebIDBCursorImpl::~RendererWebIDBCursorImpl() {
unsigned short RendererWebIDBCursorImpl::direction() const {
int direction;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_CursorDirection(idb_cursor_id_, &direction));
return direction;
}
diff --git a/content/renderer/renderer_webidbdatabase_impl.cc b/content/renderer/renderer_webidbdatabase_impl.cc
index 7450b01..bb230e0 100644
--- a/content/renderer/renderer_webidbdatabase_impl.cc
+++ b/content/renderer/renderer_webidbdatabase_impl.cc
@@ -30,27 +30,27 @@ RendererWebIDBDatabaseImpl::~RendererWebIDBDatabaseImpl() {
// object since inside WebKit, they hold a reference to the object which owns
// this object. But, if that ever changed, then we'd need to invalidate
// any such pointers.
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_DatabaseDestroyed(
+ ChildThread::current()->Send(new IndexedDBHostMsg_DatabaseDestroyed(
idb_database_id_));
}
WebString RendererWebIDBDatabaseImpl::name() const {
string16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_DatabaseName(idb_database_id_, &result));
return result;
}
WebString RendererWebIDBDatabaseImpl::version() const {
string16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_DatabaseVersion(idb_database_id_, &result));
return result;
}
WebDOMStringList RendererWebIDBDatabaseImpl::objectStoreNames() const {
std::vector<string16> result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_DatabaseObjectStoreNames(idb_database_id_, &result));
WebDOMStringList webResult;
for (std::vector<string16>::const_iterator it = result.begin();
@@ -74,7 +74,7 @@ WebKit::WebIDBObjectStore* RendererWebIDBDatabaseImpl::createObjectStore(
params.idb_database_id = idb_database_id_;
int object_store;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_DatabaseCreateObjectStore(
params, &object_store, &ec));
if (!object_store)
@@ -86,7 +86,7 @@ void RendererWebIDBDatabaseImpl::deleteObjectStore(
const WebString& name,
const WebIDBTransaction& transaction,
WebExceptionCode& ec) {
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_DatabaseDeleteObjectStore(
idb_database_id_, name,
IndexedDBDispatcher::TransactionId(transaction), &ec));
@@ -112,7 +112,7 @@ WebKit::WebIDBTransaction* RendererWebIDBDatabaseImpl::transaction(
object_stores.push_back(names.item(i));
int transaction_id;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_DatabaseTransaction(
idb_database_id_, object_stores, mode,
&transaction_id, &ec));
diff --git a/content/renderer/renderer_webidbindex_impl.cc b/content/renderer/renderer_webidbindex_impl.cc
index 4fb5866..1ec237b 100644
--- a/content/renderer/renderer_webidbindex_impl.cc
+++ b/content/renderer/renderer_webidbindex_impl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -25,34 +25,34 @@ RendererWebIDBIndexImpl::~RendererWebIDBIndexImpl() {
// object since inside WebKit, they hold a reference to the object wich owns
// this object. But, if that ever changed, then we'd need to invalidate
// any such pointers.
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_IndexDestroyed(
+ ChildThread::current()->Send(new IndexedDBHostMsg_IndexDestroyed(
idb_index_id_));
}
WebString RendererWebIDBIndexImpl::name() const {
string16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_IndexName(idb_index_id_, &result));
return result;
}
WebString RendererWebIDBIndexImpl::storeName() const {
string16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_IndexStoreName(idb_index_id_, &result));
return result;
}
WebString RendererWebIDBIndexImpl::keyPath() const {
NullableString16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_IndexKeyPath(idb_index_id_, &result));
return result;
}
bool RendererWebIDBIndexImpl::unique() const {
bool result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_IndexUnique(idb_index_id_, &result));
return result;
}
diff --git a/content/renderer/renderer_webidbobjectstore_impl.cc b/content/renderer/renderer_webidbobjectstore_impl.cc
index 70ebc0a..65db64e 100644
--- a/content/renderer/renderer_webidbobjectstore_impl.cc
+++ b/content/renderer/renderer_webidbobjectstore_impl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -38,27 +38,27 @@ RendererWebIDBObjectStoreImpl::~RendererWebIDBObjectStoreImpl() {
// object since inside WebKit, they hold a reference to the object wich owns
// this object. But, if that ever changed, then we'd need to invalidate
// any such pointers.
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreDestroyed(idb_object_store_id_));
}
WebString RendererWebIDBObjectStoreImpl::name() const {
string16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreName(idb_object_store_id_, &result));
return result;
}
WebString RendererWebIDBObjectStoreImpl::keyPath() const {
NullableString16 result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreKeyPath(idb_object_store_id_, &result));
return result;
}
WebDOMStringList RendererWebIDBObjectStoreImpl::indexNames() const {
std::vector<string16> result;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreIndexNames(
idb_object_store_id_, &result));
WebDOMStringList web_result;
@@ -129,7 +129,7 @@ WebIDBIndex* RendererWebIDBObjectStoreImpl::createIndex(
params.idb_object_store_id = idb_object_store_id_;
int32 index_id;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreCreateIndex(params, &index_id, &ec));
if (!index_id)
return NULL;
@@ -140,7 +140,7 @@ WebIDBIndex* RendererWebIDBObjectStoreImpl::index(
const WebString& name,
WebExceptionCode& ec) {
int32 idb_index_id;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreIndex(idb_object_store_id_, name,
&idb_index_id, &ec));
if (!idb_index_id)
@@ -152,7 +152,7 @@ void RendererWebIDBObjectStoreImpl::deleteIndex(
const WebString& name,
const WebIDBTransaction& transaction,
WebExceptionCode& ec) {
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_ObjectStoreDeleteIndex(
idb_object_store_id_, name,
IndexedDBDispatcher::TransactionId(transaction), &ec));
diff --git a/content/renderer/renderer_webidbtransaction_impl.cc b/content/renderer/renderer_webidbtransaction_impl.cc
index 78a7de8..d783576 100644
--- a/content/renderer/renderer_webidbtransaction_impl.cc
+++ b/content/renderer/renderer_webidbtransaction_impl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -26,14 +26,14 @@ RendererWebIDBTransactionImpl::~RendererWebIDBTransactionImpl() {
// object since inside WebKit, they hold a reference to the object wich owns
// this object. But, if that ever changed, then we'd need to invalidate
// any such pointers.
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_TransactionDestroyed(
+ ChildThread::current()->Send(new IndexedDBHostMsg_TransactionDestroyed(
idb_transaction_id_));
}
int RendererWebIDBTransactionImpl::mode() const
{
int mode;
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_TransactionMode(
+ ChildThread::current()->Send(new IndexedDBHostMsg_TransactionMode(
idb_transaction_id_, &mode));
return mode;
}
@@ -43,7 +43,7 @@ WebIDBObjectStore* RendererWebIDBTransactionImpl::objectStore(
WebKit::WebExceptionCode& ec)
{
int object_store_id;
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_TransactionObjectStore(
idb_transaction_id_, name, &object_store_id, &ec));
if (!object_store_id)
@@ -53,13 +53,13 @@ WebIDBObjectStore* RendererWebIDBTransactionImpl::objectStore(
void RendererWebIDBTransactionImpl::abort()
{
- RenderThreadImpl::current()->Send(new IndexedDBHostMsg_TransactionAbort(
+ ChildThread::current()->Send(new IndexedDBHostMsg_TransactionAbort(
idb_transaction_id_));
}
void RendererWebIDBTransactionImpl::didCompleteTaskEvents()
{
- RenderThreadImpl::current()->Send(
+ ChildThread::current()->Send(
new IndexedDBHostMsg_TransactionDidCompleteTaskEvents(
idb_transaction_id_));
}