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

Unified Diff: content/child/indexed_db/indexed_db_dispatcher.cc

Issue 17955002: Fix IndexedDB after r208777. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix unittests Created 7 years, 6 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/child/indexed_db/indexed_db_dispatcher.cc
===================================================================
--- content/child/indexed_db/indexed_db_dispatcher.cc (revision 208777)
+++ content/child/indexed_db/indexed_db_dispatcher.cc (working copy)
@@ -8,9 +8,9 @@
#include "base/lazy_instance.h"
#include "base/strings/stringprintf.h"
#include "base/threading/thread_local.h"
-#include "content/child/child_thread.h"
#include "content/child/indexed_db/proxy_webidbcursor_impl.h"
#include "content/child/indexed_db/proxy_webidbdatabase_impl.h"
+#include "content/child/thread_safe_sender.h"
#include "content/common/indexed_db/indexed_db_messages.h"
#include "ipc/ipc_channel.h"
#include "third_party/WebKit/public/platform/WebIDBDatabaseCallbacks.h"
@@ -47,7 +47,8 @@
const size_t kMaxIDBValueSizeInBytes = 64 * 1024 * 1024;
-IndexedDBDispatcher::IndexedDBDispatcher() {
+IndexedDBDispatcher::IndexedDBDispatcher(ThreadSafeSender* thread_safe_sender)
+ : thread_safe_sender_(thread_safe_sender) {
g_idb_dispatcher_tls.Pointer()->Set(this);
}
@@ -63,7 +64,8 @@
g_idb_dispatcher_tls.Pointer()->Set(kHasBeenDeleted);
}
-IndexedDBDispatcher* IndexedDBDispatcher::ThreadSpecificInstance() {
+IndexedDBDispatcher* IndexedDBDispatcher::ThreadSpecificInstance(
+ ThreadSafeSender* thread_safe_sender) {
if (g_idb_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) {
NOTREACHED() << "Re-instantiating TLS IndexedDBDispatcher.";
g_idb_dispatcher_tls.Pointer()->Set(NULL);
@@ -71,7 +73,7 @@
if (g_idb_dispatcher_tls.Pointer()->Get())
return g_idb_dispatcher_tls.Pointer()->Get();
- IndexedDBDispatcher* dispatcher = new IndexedDBDispatcher;
+ IndexedDBDispatcher* dispatcher = new IndexedDBDispatcher(thread_safe_sender);
if (WorkerTaskRunner::Instance()->CurrentWorkerId())
webkit_glue::WorkerTaskRunner::Instance()->AddStopObserver(dispatcher);
return dispatcher;
@@ -161,17 +163,7 @@
}
bool IndexedDBDispatcher::Send(IPC::Message* msg) {
- if (!ChildThread::current()) {
- // Unexpected - this may be happening during shutdown.
- NOTREACHED();
- return false;
- }
- if (CurrentWorkerId()) {
- scoped_refptr<IPC::SyncMessageFilter> filter(
- ChildThread::current()->sync_message_filter());
- return filter->Send(msg);
- }
- return ChildThread::current()->Send(msg);
+ return thread_safe_sender_->Send(msg);
}
void IndexedDBDispatcher::RequestIDBCursorAdvance(
@@ -468,7 +460,7 @@
// If an upgrade was performed, count will be non-zero.
if (!databases_.count(ipc_object_id))
databases_[ipc_object_id] = new RendererWebIDBDatabaseImpl(
- ipc_object_id, ipc_database_callbacks_id);
+ ipc_object_id, ipc_database_callbacks_id, thread_safe_sender_);
DCHECK_EQ(databases_.count(ipc_object_id), 1u);
callbacks->onSuccess(databases_[ipc_object_id], metadata);
pending_callbacks_.Remove(ipc_callbacks_id);
@@ -565,7 +557,7 @@
return;
RendererWebIDBCursorImpl* cursor =
- new RendererWebIDBCursorImpl(ipc_object_id);
+ new RendererWebIDBCursorImpl(ipc_object_id, thread_safe_sender_);
cursors_[ipc_object_id] = cursor;
callbacks->onSuccess(cursor, key, primary_key, web_value);
@@ -635,7 +627,7 @@
WebIDBMetadata metadata(ConvertMetadata(p.idb_metadata));
DCHECK(!databases_.count(p.ipc_database_id));
databases_[p.ipc_database_id] = new RendererWebIDBDatabaseImpl(
- p.ipc_database_id, p.ipc_database_callbacks_id);
+ p.ipc_database_id, p.ipc_database_callbacks_id, thread_safe_sender_);
callbacks->onUpgradeNeeded(
p.old_version,
databases_[p.ipc_database_id],
« no previous file with comments | « content/child/indexed_db/indexed_db_dispatcher.h ('k') | content/child/indexed_db/indexed_db_dispatcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698