| Index: content/renderer/indexed_db/indexed_db_dispatcher.cc
|
| diff --git a/content/renderer/indexed_db/indexed_db_dispatcher.cc b/content/renderer/indexed_db/indexed_db_dispatcher.cc
|
| deleted file mode 100644
|
| index 2770fbbeb81254065242e8f67961014a22623b47..0000000000000000000000000000000000000000
|
| --- a/content/renderer/indexed_db/indexed_db_dispatcher.cc
|
| +++ /dev/null
|
| @@ -1,688 +0,0 @@
|
| -// 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/renderer/indexed_db/indexed_db_dispatcher.h"
|
| -
|
| -#include "base/lazy_instance.h"
|
| -#include "base/threading/thread_local.h"
|
| -#include "content/common/indexed_db/indexed_db_messages.h"
|
| -#include "content/renderer/indexed_db/renderer_webidbcursor_impl.h"
|
| -#include "content/renderer/indexed_db/renderer_webidbdatabase_impl.h"
|
| -#include "content/renderer/indexed_db/renderer_webidbindex_impl.h"
|
| -#include "content/renderer/indexed_db/renderer_webidbobjectstore_impl.h"
|
| -#include "content/renderer/indexed_db/renderer_webidbtransaction_impl.h"
|
| -#include "content/renderer/render_thread_impl.h"
|
| -#include "content/renderer/render_view_impl.h"
|
| -#include "ipc/ipc_channel.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseError.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKeyRange.h"
|
| -
|
| -using base::ThreadLocalPointer;
|
| -using WebKit::WebDOMStringList;
|
| -using WebKit::WebExceptionCode;
|
| -using WebKit::WebFrame;
|
| -using WebKit::WebIDBCallbacks;
|
| -using WebKit::WebIDBKeyRange;
|
| -using WebKit::WebIDBDatabase;
|
| -using WebKit::WebIDBDatabaseCallbacks;
|
| -using WebKit::WebIDBDatabaseError;
|
| -using WebKit::WebIDBTransaction;
|
| -using WebKit::WebIDBTransactionCallbacks;
|
| -using webkit_glue::WorkerTaskRunner;
|
| -
|
| -static base::LazyInstance<ThreadLocalPointer<IndexedDBDispatcher> >::Leaky
|
| - g_idb_dispatcher_tls = LAZY_INSTANCE_INITIALIZER;
|
| -
|
| -namespace {
|
| -
|
| -int32 CurrentWorkerId() {
|
| - return WorkerTaskRunner::Instance()->CurrentWorkerId();
|
| -}
|
| -
|
| -} // unnamed namespace
|
| -
|
| -IndexedDBDispatcher::IndexedDBDispatcher() {
|
| - g_idb_dispatcher_tls.Pointer()->Set(this);
|
| -}
|
| -
|
| -IndexedDBDispatcher::~IndexedDBDispatcher() {
|
| - g_idb_dispatcher_tls.Pointer()->Set(NULL);
|
| -}
|
| -
|
| -IndexedDBDispatcher* IndexedDBDispatcher::ThreadSpecificInstance() {
|
| - if (g_idb_dispatcher_tls.Pointer()->Get())
|
| - return g_idb_dispatcher_tls.Pointer()->Get();
|
| -
|
| - IndexedDBDispatcher* dispatcher = new IndexedDBDispatcher;
|
| - if (WorkerTaskRunner::Instance()->CurrentWorkerId())
|
| - webkit_glue::WorkerTaskRunner::Instance()->AddStopObserver(dispatcher);
|
| - return dispatcher;
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnWorkerRunLoopStopped() {
|
| - delete this;
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor,
|
| - OnSuccessOpenCursor)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorContinue,
|
| - OnSuccessCursorContinue)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorPrefetch,
|
| - OnSuccessCursorPrefetch)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase,
|
| - OnSuccessIDBDatabase)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey,
|
| - OnSuccessIndexedDBKey)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBTransaction,
|
| - OnSuccessIDBTransaction)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList,
|
| - OnSuccessStringList)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue,
|
| - OnSuccessSerializedScriptValue)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksError, OnError)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksBlocked, OnBlocked)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksAbort, OnAbort)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_TransactionCallbacksComplete, OnComplete)
|
| - IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksVersionChange,
|
| - OnVersionChange)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - // If a message gets here, IndexedDBMessageFilter already determined that it
|
| - // is an IndexedDB message.
|
| - DCHECK(handled);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::Send(IPC::Message* msg) {
|
| - ChildThread::current()->Send(msg);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBCursorUpdate(
|
| - const content::SerializedScriptValue& value,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_cursor_id,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(
|
| - new IndexedDBHostMsg_CursorUpdate(idb_cursor_id, CurrentWorkerId(),
|
| - response_id, value, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBCursorContinue(
|
| - const IndexedDBKey& key,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_cursor_id,
|
| - WebExceptionCode* ec) {
|
| - // Reset all cursor prefetch caches except for this cursor.
|
| - ResetCursorPrefetchCaches(idb_cursor_id);
|
| -
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(
|
| - new IndexedDBHostMsg_CursorContinue(idb_cursor_id, CurrentWorkerId(),
|
| - response_id, key, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBCursorPrefetch(
|
| - int n,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_cursor_id,
|
| - WebExceptionCode* ec) {
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_CursorPrefetch(idb_cursor_id, CurrentWorkerId(),
|
| - response_id, n, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBCursorPrefetchReset(
|
| - int used_prefetches, int unused_prefetches, int32 idb_cursor_id) {
|
| - Send(new IndexedDBHostMsg_CursorPrefetchReset(idb_cursor_id,
|
| - used_prefetches,
|
| - unused_prefetches));
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBCursorDelete(
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_cursor_id,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_CursorDelete(idb_cursor_id, CurrentWorkerId(),
|
| - response_id, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBFactoryOpen(
|
| - const string16& name,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - const string16& origin,
|
| - WebFrame* web_frame) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - if (!web_frame)
|
| - return; // We must be shutting down.
|
| - RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view());
|
| - if (!render_view)
|
| - return; // We must be shutting down.
|
| -
|
| - IndexedDBHostMsg_FactoryOpen_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.origin = origin;
|
| - params.name = name;
|
| - Send(new IndexedDBHostMsg_FactoryOpen(params));
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames(
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - const string16& origin,
|
| - WebFrame* web_frame) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - if (!web_frame)
|
| - return; // We must be shutting down.
|
| - RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view());
|
| - if (!render_view)
|
| - return; // We must be shutting down.
|
| -
|
| - IndexedDBHostMsg_FactoryGetDatabaseNames_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.origin = origin;
|
| - Send(new IndexedDBHostMsg_FactoryGetDatabaseNames(params));
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase(
|
| - const string16& name,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - const string16& origin,
|
| - WebFrame* web_frame) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - if (!web_frame)
|
| - return; // We must be shutting down.
|
| - RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view());
|
| - if (!render_view)
|
| - return; // We must be shutting down.
|
| -
|
| - IndexedDBHostMsg_FactoryDeleteDatabase_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.origin = origin;
|
| - params.name = name;
|
| - Send(new IndexedDBHostMsg_FactoryDeleteDatabase(params));
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBDatabaseClose(int32 idb_database_id) {
|
| - ResetCursorPrefetchCaches();
|
| - Send(new IndexedDBHostMsg_DatabaseClose(idb_database_id));
|
| - pending_database_callbacks_.Remove(idb_database_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBDatabaseOpen(
|
| - WebIDBDatabaseCallbacks* callbacks_ptr,
|
| - int32 idb_database_id) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBDatabaseCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - DCHECK(!pending_database_callbacks_.Lookup(idb_database_id));
|
| - pending_database_callbacks_.AddWithID(callbacks.release(), idb_database_id);
|
| - Send(new IndexedDBHostMsg_DatabaseOpen(idb_database_id, CurrentWorkerId(),
|
| - idb_database_id));
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBDatabaseSetVersion(
|
| - const string16& version,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_database_id,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_DatabaseSetVersion(idb_database_id,
|
| - CurrentWorkerId(),
|
| - response_id, version, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBIndexOpenObjectCursor(
|
| - const WebIDBKeyRange& idb_key_range,
|
| - unsigned short direction,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_index_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - IndexedDBHostMsg_IndexOpenCursor_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.lower_key.Set(idb_key_range.lower());
|
| - params.upper_key.Set(idb_key_range.upper());
|
| - params.lower_open = idb_key_range.lowerOpen();
|
| - params.upper_open = idb_key_range.upperOpen();
|
| - params.direction = direction;
|
| - params.idb_index_id = idb_index_id;
|
| - params.transaction_id = TransactionId(transaction);
|
| - Send(new IndexedDBHostMsg_IndexOpenObjectCursor(params, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(params.response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBIndexOpenKeyCursor(
|
| - const WebIDBKeyRange& idb_key_range,
|
| - unsigned short direction,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_index_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - IndexedDBHostMsg_IndexOpenCursor_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - // TODO(jorlow): We really should just create a Chromium abstraction for
|
| - // KeyRange rather than doing it ad-hoc like this.
|
| - params.lower_key.Set(idb_key_range.lower());
|
| - params.upper_key.Set(idb_key_range.upper());
|
| - params.lower_open = idb_key_range.lowerOpen();
|
| - params.upper_open = idb_key_range.upperOpen();
|
| - params.direction = direction;
|
| - params.idb_index_id = idb_index_id;
|
| - params.transaction_id = TransactionId(transaction);
|
| - Send(new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(params.response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBIndexCount(
|
| - const WebIDBKeyRange& idb_key_range,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_index_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - IndexedDBHostMsg_IndexCount_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.lower_key.Set(idb_key_range.lower());
|
| - params.upper_key.Set(idb_key_range.upper());
|
| - params.lower_open = idb_key_range.lowerOpen();
|
| - params.upper_open = idb_key_range.upperOpen();
|
| - params.idb_index_id = idb_index_id;
|
| - params.transaction_id = TransactionId(transaction);
|
| - Send(new IndexedDBHostMsg_IndexCount(params, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(params.response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBIndexGetObject(
|
| - const IndexedDBKey& key,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_index_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, CurrentWorkerId(),
|
| - response_id, key,
|
| - TransactionId(transaction), ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBIndexGetKey(
|
| - const IndexedDBKey& key,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_index_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_IndexGetKey(
|
| - idb_index_id, CurrentWorkerId(), response_id, key,
|
| - TransactionId(transaction), ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBObjectStoreGet(
|
| - const IndexedDBKey& key,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_object_store_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_ObjectStoreGet(
|
| - idb_object_store_id, CurrentWorkerId(), response_id,
|
| - key, TransactionId(transaction), ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBObjectStorePut(
|
| - const content::SerializedScriptValue& value,
|
| - const IndexedDBKey& key,
|
| - WebKit::WebIDBObjectStore::PutMode put_mode,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_object_store_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - IndexedDBHostMsg_ObjectStorePut_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.idb_object_store_id = idb_object_store_id;
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.serialized_value = value;
|
| - params.key = key;
|
| - params.put_mode = put_mode;
|
| - params.transaction_id = TransactionId(transaction);
|
| - Send(new IndexedDBHostMsg_ObjectStorePut(params, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(params.response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBObjectStoreDelete(
|
| - const IndexedDBKey& key,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_object_store_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_ObjectStoreDelete(
|
| - idb_object_store_id, CurrentWorkerId(), response_id, key,
|
| - TransactionId(transaction), ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBObjectStoreClear(
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_object_store_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| -
|
| - int32 response_id = pending_callbacks_.Add(callbacks.release());
|
| - Send(new IndexedDBHostMsg_ObjectStoreClear(
|
| - idb_object_store_id, CurrentWorkerId(), response_id,
|
| - TransactionId(transaction), ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBObjectStoreOpenCursor(
|
| - const WebIDBKeyRange& idb_key_range,
|
| - unsigned short direction,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_object_store_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - IndexedDBHostMsg_ObjectStoreOpenCursor_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.lower_key.Set(idb_key_range.lower());
|
| - params.upper_key.Set(idb_key_range.upper());
|
| - params.lower_open = idb_key_range.lowerOpen();
|
| - params.upper_open = idb_key_range.upperOpen();
|
| - params.direction = direction;
|
| - params.idb_object_store_id = idb_object_store_id;
|
| - params.transaction_id = TransactionId(transaction);
|
| - Send(new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(params.response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RequestIDBObjectStoreCount(
|
| - const WebIDBKeyRange& idb_key_range,
|
| - WebIDBCallbacks* callbacks_ptr,
|
| - int32 idb_object_store_id,
|
| - const WebIDBTransaction& transaction,
|
| - WebExceptionCode* ec) {
|
| - ResetCursorPrefetchCaches();
|
| - scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
|
| - IndexedDBHostMsg_ObjectStoreCount_Params params;
|
| - params.thread_id = CurrentWorkerId();
|
| - params.response_id = pending_callbacks_.Add(callbacks.release());
|
| - params.lower_key.Set(idb_key_range.lower());
|
| - params.upper_key.Set(idb_key_range.upper());
|
| - params.lower_open = idb_key_range.lowerOpen();
|
| - params.upper_open = idb_key_range.upperOpen();
|
| - params.idb_object_store_id = idb_object_store_id;
|
| - params.transaction_id = TransactionId(transaction);
|
| - Send(new IndexedDBHostMsg_ObjectStoreCount(params, ec));
|
| - if (*ec)
|
| - pending_callbacks_.Remove(params.response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::RegisterWebIDBTransactionCallbacks(
|
| - WebIDBTransactionCallbacks* callbacks,
|
| - int32 id) {
|
| - pending_transaction_callbacks_.AddWithID(callbacks, id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::CursorDestroyed(int32 cursor_id) {
|
| - cursors_.erase(cursor_id);
|
| -}
|
| -
|
| -int32 IndexedDBDispatcher::TransactionId(
|
| - const WebIDBTransaction& transaction) {
|
| - const RendererWebIDBTransactionImpl* impl =
|
| - static_cast<const RendererWebIDBTransactionImpl*>(&transaction);
|
| - return impl->id();
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessIDBDatabase(int32 thread_id,
|
| - int32 response_id,
|
| - int32 object_id) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onSuccess(new RendererWebIDBDatabaseImpl(object_id));
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessIndexedDBKey(int32 thread_id,
|
| - int32 response_id,
|
| - const IndexedDBKey& key) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onSuccess(key);
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessIDBTransaction(int32 thread_id,
|
| - int32 response_id,
|
| - int32 object_id) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onSuccess(new RendererWebIDBTransactionImpl(object_id));
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessStringList(
|
| - int32 thread_id, int32 response_id, const std::vector<string16>& value) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - WebDOMStringList string_list;
|
| - for (std::vector<string16>::const_iterator it = value.begin();
|
| - it != value.end(); ++it)
|
| - string_list.append(*it);
|
| - callbacks->onSuccess(string_list);
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessSerializedScriptValue(
|
| - int32 thread_id, int32 response_id,
|
| - const content::SerializedScriptValue& value) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onSuccess(value);
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessOpenCursor(
|
| - const IndexedDBMsg_CallbacksSuccessIDBCursor_Params& p) {
|
| - DCHECK_EQ(p.thread_id, CurrentWorkerId());
|
| - int32 response_id = p.response_id;
|
| - int32 object_id = p.cursor_id;
|
| - const IndexedDBKey& key = p.key;
|
| - const IndexedDBKey& primary_key = p.primary_key;
|
| - const content::SerializedScriptValue& value = p.serialized_value;
|
| -
|
| - WebIDBCallbacks* callbacks =
|
| - pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| -
|
| - RendererWebIDBCursorImpl* cursor = new RendererWebIDBCursorImpl(object_id);
|
| - cursors_[object_id] = cursor;
|
| - cursor->SetKeyAndValue(key, primary_key, value);
|
| - callbacks->onSuccess(cursor);
|
| -
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessCursorContinue(
|
| - const IndexedDBMsg_CallbacksSuccessCursorContinue_Params& p) {
|
| - DCHECK_EQ(p.thread_id, CurrentWorkerId());
|
| - int32 response_id = p.response_id;
|
| - int32 cursor_id = p.cursor_id;
|
| - const IndexedDBKey& key = p.key;
|
| - const IndexedDBKey& primary_key = p.primary_key;
|
| - const content::SerializedScriptValue& value = p.serialized_value;
|
| -
|
| - RendererWebIDBCursorImpl* cursor = cursors_[cursor_id];
|
| - DCHECK(cursor);
|
| - cursor->SetKeyAndValue(key, primary_key, value);
|
| -
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onSuccessWithContinuation();
|
| -
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnSuccessCursorPrefetch(
|
| - const IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params& p) {
|
| - DCHECK_EQ(p.thread_id, CurrentWorkerId());
|
| - int32 response_id = p.response_id;
|
| - int32 cursor_id = p.cursor_id;
|
| - const std::vector<IndexedDBKey>& keys = p.keys;
|
| - const std::vector<IndexedDBKey>& primary_keys = p.primary_keys;
|
| - const std::vector<content::SerializedScriptValue>& values = p.values;
|
| - RendererWebIDBCursorImpl* cursor = cursors_[cursor_id];
|
| - DCHECK(cursor);
|
| - cursor->SetPrefetchData(keys, primary_keys, values);
|
| -
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - DCHECK(callbacks);
|
| - cursor->CachedContinue(callbacks);
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnBlocked(int32 thread_id, int32 response_id) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - DCHECK(callbacks);
|
| - callbacks->onBlocked();
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnError(int32 thread_id, int32 response_id, int code,
|
| - const string16& message) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onError(WebIDBDatabaseError(code, message));
|
| - pending_callbacks_.Remove(response_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnAbort(int32 thread_id, int32 transaction_id) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBTransactionCallbacks* callbacks =
|
| - pending_transaction_callbacks_.Lookup(transaction_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onAbort();
|
| - pending_transaction_callbacks_.Remove(transaction_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnComplete(int32 thread_id, int32 transaction_id) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBTransactionCallbacks* callbacks =
|
| - pending_transaction_callbacks_.Lookup(transaction_id);
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onComplete();
|
| - pending_transaction_callbacks_.Remove(transaction_id);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::OnVersionChange(int32 thread_id,
|
| - int32 database_id,
|
| - const string16& newVersion) {
|
| - DCHECK_EQ(thread_id, CurrentWorkerId());
|
| - WebIDBDatabaseCallbacks* callbacks =
|
| - pending_database_callbacks_.Lookup(database_id);
|
| - // callbacks would be NULL if a versionchange event is received after close
|
| - // has been called.
|
| - if (!callbacks)
|
| - return;
|
| - callbacks->onVersionChange(newVersion);
|
| -}
|
| -
|
| -void IndexedDBDispatcher::ResetCursorPrefetchCaches(int32 exception_cursor_id) {
|
| - typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator;
|
| - for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) {
|
| - if (i->first == exception_cursor_id)
|
| - continue;
|
| - i->second->ResetPrefetchCache();
|
| - }
|
| -}
|
|
|