diff options
author | dgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-12 18:10:03 +0000 |
---|---|---|
committer | dgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-12 18:10:03 +0000 |
commit | 988aacf1156e012bfd7f9804ca3ebec66ebdf8d7 (patch) | |
tree | 8db90a0d21a012b9a433f7a5e82d0349a7f17e42 /content/renderer | |
parent | 433d20a17f62cf7da3c496d159a6f40051f2bfba (diff) | |
download | chromium_src-988aacf1156e012bfd7f9804ca3ebec66ebdf8d7.zip chromium_src-988aacf1156e012bfd7f9804ca3ebec66ebdf8d7.tar.gz chromium_src-988aacf1156e012bfd7f9804ca3ebec66ebdf8d7.tar.bz2 |
Move indexed db files from content/renderer to content/common.
http://codereview.chromium.org/9375024/ enables indexed db in shared workers.
BUG=112855
TEST=
Review URL: http://codereview.chromium.org/9368053
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121669 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
20 files changed, 18 insertions, 2109 deletions
diff --git a/content/renderer/indexed_db/OWNERS b/content/renderer/indexed_db/OWNERS deleted file mode 100644 index 65287b4..0000000 --- a/content/renderer/indexed_db/OWNERS +++ /dev/null @@ -1,4 +0,0 @@ -dgrogan@chromium.org -hans@chromium.org -michaeln@chromium.org -jsbell@chromium.org 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 2770fbb..0000000 --- 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(); - } -} diff --git a/content/renderer/indexed_db/indexed_db_dispatcher.h b/content/renderer/indexed_db/indexed_db_dispatcher.h deleted file mode 100644 index 29d520a..0000000 --- a/content/renderer/indexed_db/indexed_db_dispatcher.h +++ /dev/null @@ -1,250 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_INDEXED_DB_DISPATCHER_H_ -#define CONTENT_RENDERER_INDEXED_DB_INDEXED_DB_DISPATCHER_H_ -#pragma once - -#include <map> -#include <vector> - -#include "base/id_map.h" -#include "base/nullable_string16.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebExceptionCode.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBObjectStore.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransactionCallbacks.h" -#include "webkit/glue/worker_task_runner.h" - -class IndexedDBKey; -struct IndexedDBMsg_CallbacksSuccessCursorContinue_Params; -struct IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params; -struct IndexedDBMsg_CallbacksSuccessIDBCursor_Params; -class RendererWebIDBCursorImpl; - -namespace IPC { -class Message; -} - -namespace WebKit { -class WebFrame; -class WebIDBKeyRange; -class WebIDBTransaction; -} - -namespace content { -class SerializedScriptValue; -} - -// Handle the indexed db related communication for this context thread - the -// main thread and each worker thread have their own copies. -class IndexedDBDispatcher : public webkit_glue::WorkerTaskRunner::Observer { - public: - virtual ~IndexedDBDispatcher(); - static IndexedDBDispatcher* ThreadSpecificInstance(); - - // webkit_glue::WorkerTaskRunner::Observer implementation. - virtual void OnWorkerRunLoopStopped() OVERRIDE; - - void OnMessageReceived(const IPC::Message& msg); - void Send(IPC::Message* msg); - - void RequestIDBFactoryGetDatabaseNames( - WebKit::WebIDBCallbacks* callbacks, - const string16& origin, - WebKit::WebFrame* web_frame); - - void RequestIDBFactoryOpen( - const string16& name, - WebKit::WebIDBCallbacks* callbacks, - const string16& origin, - WebKit::WebFrame* web_frame); - - void RequestIDBFactoryDeleteDatabase( - const string16& name, - WebKit::WebIDBCallbacks* callbacks, - const string16& origin, - WebKit::WebFrame* web_frame); - - void RequestIDBCursorUpdate( - const content::SerializedScriptValue& value, - WebKit::WebIDBCallbacks* callbacks_ptr, - int32 idb_cursor_id, - WebKit::WebExceptionCode* ec); - - void RequestIDBCursorContinue( - const IndexedDBKey& key, - WebKit::WebIDBCallbacks* callbacks_ptr, - int32 idb_cursor_id, - WebKit::WebExceptionCode* ec); - - void RequestIDBCursorPrefetch( - int n, - WebKit::WebIDBCallbacks* callbacks_ptr, - int32 idb_cursor_id, - WebKit::WebExceptionCode* ec); - - void RequestIDBCursorPrefetchReset(int used_prefetches, int unused_prefetches, - int32 idb_cursor_id); - - void RequestIDBCursorDelete( - WebKit::WebIDBCallbacks* callbacks_ptr, - int32 idb_cursor_id, - WebKit::WebExceptionCode* ec); - - void RequestIDBDatabaseClose( - int32 idb_database_id); - - void RequestIDBDatabaseOpen( - WebKit::WebIDBDatabaseCallbacks* callbacks_ptr, - int32 idb_database_id); - - void RequestIDBDatabaseSetVersion( - const string16& version, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_database_id, - WebKit::WebExceptionCode* ec); - - void RequestIDBIndexOpenObjectCursor( - const WebKit::WebIDBKeyRange& idb_key_range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_index_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBIndexOpenKeyCursor( - const WebKit::WebIDBKeyRange& idb_key_range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_index_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBIndexCount( - const WebKit::WebIDBKeyRange& idb_key_range, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_index_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBIndexGetObject(const IndexedDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_index_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBIndexGetKey(const IndexedDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_index_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBObjectStoreGet(const IndexedDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_object_store_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBObjectStorePut(const content::SerializedScriptValue& value, - const IndexedDBKey& key, - WebKit::WebIDBObjectStore::PutMode putMode, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_object_store_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBObjectStoreDelete( - const IndexedDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_object_store_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBObjectStoreClear( - WebKit::WebIDBCallbacks* callbacks, - int32 idb_object_store_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBObjectStoreOpenCursor( - const WebKit::WebIDBKeyRange& idb_key_range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_object_store_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RequestIDBObjectStoreCount( - const WebKit::WebIDBKeyRange& idb_key_range, - WebKit::WebIDBCallbacks* callbacks, - int32 idb_object_store_id, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode* ec); - - void RegisterWebIDBTransactionCallbacks( - WebKit::WebIDBTransactionCallbacks* callbacks, - int32 id); - - void CursorDestroyed(int32 cursor_id); - - static int32 TransactionId(const WebKit::WebIDBTransaction& transaction); - - private: - IndexedDBDispatcher(); - // IDBCallback message handlers. - void OnSuccessNull(int32 response_id); - void OnSuccessIDBDatabase(int32 thread_id, - int32 response_id, - int32 object_id); - void OnSuccessIndexedDBKey(int32 thread_id, - int32 response_id, - const IndexedDBKey& key); - void OnSuccessIDBTransaction(int32 thread_id, - int32 response_id, - int32 object_id); - void OnSuccessOpenCursor( - const IndexedDBMsg_CallbacksSuccessIDBCursor_Params& p); - void OnSuccessCursorContinue( - const IndexedDBMsg_CallbacksSuccessCursorContinue_Params& p); - void OnSuccessCursorPrefetch( - const IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params& p); - void OnSuccessStringList(int32 thread_id, - int32 response_id, - const std::vector<string16>& value); - void OnSuccessSerializedScriptValue( - int32 thread_id, - int32 response_id, - const content::SerializedScriptValue& value); - void OnError(int32 thread_id, - int32 response_id, - int code, - const string16& message); - void OnBlocked(int32 thread_id, int32 response_id); - void OnAbort(int32 thread_id, int32 transaction_id); - void OnComplete(int32 thread_id, int32 transaction_id); - void OnVersionChange(int32 thread_id, - int32 database_id, - const string16& newVersion); - - // Reset cursor prefetch caches for all cursors except exception_cursor_id. - void ResetCursorPrefetchCaches(int32 exception_cursor_id = -1); - - // Careful! WebIDBCallbacks wraps non-threadsafe data types. It must be - // destroyed and used on the same thread it was created on. - IDMap<WebKit::WebIDBCallbacks, IDMapOwnPointer> pending_callbacks_; - IDMap<WebKit::WebIDBTransactionCallbacks, IDMapOwnPointer> - pending_transaction_callbacks_; - IDMap<WebKit::WebIDBDatabaseCallbacks, IDMapOwnPointer> - pending_database_callbacks_; - - // Map from cursor id to RendererWebIDBCursorImpl. - std::map<int32, RendererWebIDBCursorImpl*> cursors_; - - DISALLOW_COPY_AND_ASSIGN(IndexedDBDispatcher); -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_INDEXED_DB_DISPATCHER_H_ diff --git a/content/renderer/indexed_db/indexed_db_message_filter.cc b/content/renderer/indexed_db/indexed_db_message_filter.cc deleted file mode 100644 index 3e6b04b..0000000 --- a/content/renderer/indexed_db/indexed_db_message_filter.cc +++ /dev/null @@ -1,37 +0,0 @@ -// 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. - -#include "content/renderer/indexed_db/indexed_db_message_filter.h" - -#include "base/bind.h" -#include "base/location.h" -#include "content/common/indexed_db/indexed_db_messages.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "webkit/glue/worker_task_runner.h" - -using webkit_glue::WorkerTaskRunner; - -IndexedDBMessageFilter::IndexedDBMessageFilter() : - main_thread_loop_proxy_(base::MessageLoopProxy::current()) { -} - -IndexedDBMessageFilter::~IndexedDBMessageFilter() { -} - -bool IndexedDBMessageFilter::OnMessageReceived(const IPC::Message& msg) { - if (IPC_MESSAGE_CLASS(msg) != IndexedDBMsgStart) - return false; - int thread_id = IPC::MessageIterator(msg).NextInt(); - base::Closure closure = base::Bind( - &IndexedDBMessageFilter::DispatchMessage, this, msg); - if (thread_id) - WorkerTaskRunner::Instance()->PostTask(thread_id, closure); - else - main_thread_loop_proxy_->PostTask(FROM_HERE, closure); - return true; -} - -void IndexedDBMessageFilter::DispatchMessage(const IPC::Message& msg) { - IndexedDBDispatcher::ThreadSpecificInstance()->OnMessageReceived(msg); -} diff --git a/content/renderer/indexed_db/indexed_db_message_filter.h b/content/renderer/indexed_db/indexed_db_message_filter.h deleted file mode 100644 index e7d37f9..0000000 --- a/content/renderer/indexed_db/indexed_db_message_filter.h +++ /dev/null @@ -1,28 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_INDEXED_DB_MESSAGE_FILTER_H_ -#define CONTENT_RENDERER_INDEXED_DB_INDEXED_DB_MESSAGE_FILTER_H_ -#pragma once - -#include "ipc/ipc_channel_proxy.h" - -class IndexedDBDispatcher; - -class IndexedDBMessageFilter : public IPC::ChannelProxy::MessageFilter { - public: - IndexedDBMessageFilter(); - virtual ~IndexedDBMessageFilter(); - - // IPC::Channel::Listener implementation. - virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; - - private: - void DispatchMessage(const IPC::Message& msg); - scoped_refptr<base::MessageLoopProxy> main_thread_loop_proxy_; - - DISALLOW_COPY_AND_ASSIGN(IndexedDBMessageFilter); -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_INDEXED_DB_DISPATCHER_H_ diff --git a/content/renderer/indexed_db/renderer_webidbcursor_impl.cc b/content/renderer/indexed_db/renderer_webidbcursor_impl.cc deleted file mode 100644 index 52eaf57..0000000 --- a/content/renderer/indexed_db/renderer_webidbcursor_impl.cc +++ /dev/null @@ -1,181 +0,0 @@ -// 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. - -#include "content/renderer/indexed_db/renderer_webidbcursor_impl.h" - -#include "content/common/indexed_db/indexed_db_messages.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "content/renderer/render_thread_impl.h" - -using WebKit::WebExceptionCode; -using WebKit::WebIDBCallbacks; -using WebKit::WebIDBKey; -using WebKit::WebSerializedScriptValue; - -RendererWebIDBCursorImpl::RendererWebIDBCursorImpl(int32 idb_cursor_id) - : idb_cursor_id_(idb_cursor_id), - continue_count_(0), - used_prefetches_(0), - pending_onsuccess_callbacks_(0), - prefetch_amount_(kMinPrefetchAmount) { -} - -RendererWebIDBCursorImpl::~RendererWebIDBCursorImpl() { - // It's not possible for there to be pending callbacks that address this - // 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. - ChildThread::current()->Send(new IndexedDBHostMsg_CursorDestroyed( - idb_cursor_id_)); - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->CursorDestroyed(idb_cursor_id_); -} - -unsigned short RendererWebIDBCursorImpl::direction() const { - int direction; - ChildThread::current()->Send( - new IndexedDBHostMsg_CursorDirection(idb_cursor_id_, &direction)); - return direction; -} - -WebIDBKey RendererWebIDBCursorImpl::key() const { - return key_; -} - -WebIDBKey RendererWebIDBCursorImpl::primaryKey() const { - return primary_key_; -} - -WebSerializedScriptValue RendererWebIDBCursorImpl::value() const { - return value_; -} - -void RendererWebIDBCursorImpl::update(const WebSerializedScriptValue& value, - WebIDBCallbacks* callbacks, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBCursorUpdate( - content::SerializedScriptValue(value), callbacks, idb_cursor_id_, &ec); -} - -void RendererWebIDBCursorImpl::continueFunction(const WebIDBKey& key, - WebIDBCallbacks* callbacks, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - - if (key.type() == WebIDBKey::InvalidType) { - // No key, so this would qualify for a prefetch. - ++continue_count_; - - if (!prefetch_keys_.empty()) { - // We have a prefetch cache, so serve the result from that. - CachedContinue(callbacks); - return; - } - - if (continue_count_ > kPrefetchContinueThreshold) { - // Request pre-fetch. - dispatcher->RequestIDBCursorPrefetch(prefetch_amount_, callbacks, - idb_cursor_id_, &ec); - - // Increase prefetch_amount_ exponentially. - prefetch_amount_ *= 2; - if (prefetch_amount_ > kMaxPrefetchAmount) - prefetch_amount_ = kMaxPrefetchAmount; - - return; - } - } else { - // Key argument supplied. We couldn't prefetch this. - ResetPrefetchCache(); - } - - dispatcher->RequestIDBCursorContinue(IndexedDBKey(key), callbacks, - idb_cursor_id_, &ec); -} - -void RendererWebIDBCursorImpl::deleteFunction(WebIDBCallbacks* callbacks, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBCursorDelete(callbacks, idb_cursor_id_, &ec); -} - -void RendererWebIDBCursorImpl::postSuccessHandlerCallback() -{ - pending_onsuccess_callbacks_--; - - // If the onsuccess callback called continue() on the cursor again, - // and that continue was served by the prefetch cache, then - // pending_onsuccess_callbacks_ would be incremented. - // If not, it means the callback did something else, or nothing at all, - // in which case we need to reset the cache. - - if (pending_onsuccess_callbacks_ == 0) - ResetPrefetchCache(); -} - -void RendererWebIDBCursorImpl::SetKeyAndValue( - const IndexedDBKey& key, - const IndexedDBKey& primary_key, - const content::SerializedScriptValue& value) { - key_ = key; - primary_key_ = primary_key; - value_ = value; -} - -void RendererWebIDBCursorImpl::SetPrefetchData( - const std::vector<IndexedDBKey>& keys, - const std::vector<IndexedDBKey>& primary_keys, - const std::vector<content::SerializedScriptValue>& values) { - prefetch_keys_.assign(keys.begin(), keys.end()); - prefetch_primary_keys_.assign(primary_keys.begin(), primary_keys.end()); - prefetch_values_.assign(values.begin(), values.end()); - - used_prefetches_ = 0; - pending_onsuccess_callbacks_ = 0; -} - -void RendererWebIDBCursorImpl::CachedContinue( - WebKit::WebIDBCallbacks* callbacks) { - DCHECK(prefetch_keys_.size() > 0); - DCHECK(prefetch_primary_keys_.size() == prefetch_keys_.size()); - DCHECK(prefetch_values_.size() == prefetch_keys_.size()); - - key_ = prefetch_keys_.front(); - primary_key_ = prefetch_primary_keys_.front(); - value_ = prefetch_values_.front(); - - prefetch_keys_.pop_front(); - prefetch_primary_keys_.pop_front(); - prefetch_values_.pop_front(); - used_prefetches_++; - - pending_onsuccess_callbacks_++; - callbacks->onSuccessWithContinuation(); -} - -void RendererWebIDBCursorImpl::ResetPrefetchCache() { - continue_count_ = 0; - prefetch_amount_ = kMinPrefetchAmount; - - if (!prefetch_keys_.size()) { - // No prefetch cache, so no need to reset the cursor in the back-end. - return; - } - - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBCursorPrefetchReset(used_prefetches_, - prefetch_keys_.size(), - idb_cursor_id_); - prefetch_keys_.clear(); - prefetch_primary_keys_.clear(); - prefetch_values_.clear(); - - pending_onsuccess_callbacks_ = 0; -} diff --git a/content/renderer/indexed_db/renderer_webidbcursor_impl.h b/content/renderer/indexed_db/renderer_webidbcursor_impl.h deleted file mode 100644 index aa386bb..0000000 --- a/content/renderer/indexed_db/renderer_webidbcursor_impl.h +++ /dev/null @@ -1,75 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBCURSOR_IMPL_H_ -#define CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBCURSOR_IMPL_H_ - -#include <deque> - -#include "base/basictypes.h" -#include "content/common/indexed_db/indexed_db_key.h" -#include "content/public/common/serialized_script_value.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCursor.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerializedScriptValue.h" - -class RendererWebIDBCursorImpl : public WebKit::WebIDBCursor { - public: - RendererWebIDBCursorImpl(int32 idb_cursor_id); - virtual ~RendererWebIDBCursorImpl(); - - virtual unsigned short direction() const; - virtual WebKit::WebIDBKey key() const; - virtual WebKit::WebIDBKey primaryKey() const; - virtual WebKit::WebSerializedScriptValue value() const; - virtual void update(const WebKit::WebSerializedScriptValue& value, - WebKit::WebIDBCallbacks* callback, - WebKit::WebExceptionCode& ec); - virtual void continueFunction(const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callback, - WebKit::WebExceptionCode& ec); - virtual void deleteFunction(WebKit::WebIDBCallbacks* callback, - WebKit::WebExceptionCode& ec); - virtual void postSuccessHandlerCallback(); - - void SetKeyAndValue(const IndexedDBKey& key, const IndexedDBKey& primary_key, - const content::SerializedScriptValue& value); - void SetPrefetchData( - const std::vector<IndexedDBKey>& keys, - const std::vector<IndexedDBKey>& primary_keys, - const std::vector<content::SerializedScriptValue>& values); - - void CachedContinue(WebKit::WebIDBCallbacks* callbacks); - void ResetPrefetchCache(); - - private: - int32 idb_cursor_id_; - IndexedDBKey key_; - IndexedDBKey primary_key_; - content::SerializedScriptValue value_; - - // Prefetch cache. - std::deque<IndexedDBKey> prefetch_keys_; - std::deque<IndexedDBKey> prefetch_primary_keys_; - std::deque<content::SerializedScriptValue> prefetch_values_; - - // Number of continue calls that would qualify for a pre-fetch. - int continue_count_; - - // Number of items used from the last prefetch. - int used_prefetches_; - - // Number of onsuccess handlers we are waiting for. - int pending_onsuccess_callbacks_; - - // Number of items to request in next prefetch. - int prefetch_amount_; - - enum { kPrefetchContinueThreshold = 2 }; - enum { kMinPrefetchAmount = 5 }; - enum { kMaxPrefetchAmount = 100 }; -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBCURSOR_IMPL_H_ diff --git a/content/renderer/indexed_db/renderer_webidbdatabase_impl.cc b/content/renderer/indexed_db/renderer_webidbdatabase_impl.cc deleted file mode 100644 index 6a07cc0..0000000 --- a/content/renderer/indexed_db/renderer_webidbdatabase_impl.cc +++ /dev/null @@ -1,136 +0,0 @@ -// 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. - -#include "content/renderer/indexed_db/renderer_webidbdatabase_impl.h" - -#include "content/common/indexed_db/indexed_db_messages.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.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 "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" -#include "webkit/glue/worker_task_runner.h" - -using WebKit::WebDOMStringList; -using WebKit::WebExceptionCode; -using WebKit::WebFrame; -using WebKit::WebIDBCallbacks; -using WebKit::WebIDBDatabaseCallbacks; -using WebKit::WebIDBTransaction; -using WebKit::WebString; -using WebKit::WebVector; -using webkit_glue::WorkerTaskRunner; - -RendererWebIDBDatabaseImpl::RendererWebIDBDatabaseImpl(int32 idb_database_id) - : idb_database_id_(idb_database_id) { -} - -RendererWebIDBDatabaseImpl::~RendererWebIDBDatabaseImpl() { - // It's not possible for there to be pending callbacks that address this - // 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. - ChildThread::current()->Send(new IndexedDBHostMsg_DatabaseDestroyed( - idb_database_id_)); -} - -WebString RendererWebIDBDatabaseImpl::name() const { - string16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_DatabaseName(idb_database_id_, &result)); - return result; -} - -WebString RendererWebIDBDatabaseImpl::version() const { - string16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_DatabaseVersion(idb_database_id_, &result)); - return result; -} - -WebDOMStringList RendererWebIDBDatabaseImpl::objectStoreNames() const { - std::vector<string16> result; - ChildThread::current()->Send( - new IndexedDBHostMsg_DatabaseObjectStoreNames(idb_database_id_, &result)); - WebDOMStringList webResult; - for (std::vector<string16>::const_iterator it = result.begin(); - it != result.end(); ++it) { - webResult.append(*it); - } - return webResult; -} - -WebKit::WebIDBObjectStore* RendererWebIDBDatabaseImpl::createObjectStore( - const WebKit::WebString& name, - const WebKit::WebString& key_path, - bool auto_increment, - const WebKit::WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBHostMsg_DatabaseCreateObjectStore_Params params; - params.name = name; - params.key_path = key_path; - params.auto_increment = auto_increment; - params.transaction_id = IndexedDBDispatcher::TransactionId(transaction); - params.idb_database_id = idb_database_id_; - - int object_store; - ChildThread::current()->Send( - new IndexedDBHostMsg_DatabaseCreateObjectStore( - params, &object_store, &ec)); - if (!object_store) - return NULL; - return new RendererWebIDBObjectStoreImpl(object_store); -} - -void RendererWebIDBDatabaseImpl::deleteObjectStore( - const WebString& name, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - ChildThread::current()->Send( - new IndexedDBHostMsg_DatabaseDeleteObjectStore( - idb_database_id_, name, - IndexedDBDispatcher::TransactionId(transaction), &ec)); -} - -void RendererWebIDBDatabaseImpl::setVersion( - const WebString& version, - WebIDBCallbacks* callbacks, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBDatabaseSetVersion( - version, callbacks, idb_database_id_, &ec); -} - -WebKit::WebIDBTransaction* RendererWebIDBDatabaseImpl::transaction( - const WebDOMStringList& names, - unsigned short mode, - WebExceptionCode& ec) { - std::vector<string16> object_stores; - object_stores.reserve(names.length()); - for (unsigned int i = 0; i < names.length(); ++i) - object_stores.push_back(names.item(i)); - - int transaction_id; - ChildThread::current()->Send(new IndexedDBHostMsg_DatabaseTransaction( - WorkerTaskRunner::Instance()->CurrentWorkerId(), - idb_database_id_, object_stores, mode, &transaction_id, &ec)); - if (!transaction_id) - return NULL; - return new RendererWebIDBTransactionImpl(transaction_id); -} - -void RendererWebIDBDatabaseImpl::close() { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBDatabaseClose(idb_database_id_); -} - -void RendererWebIDBDatabaseImpl::open(WebIDBDatabaseCallbacks* callbacks) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - DCHECK(dispatcher); - dispatcher->RequestIDBDatabaseOpen(callbacks, idb_database_id_); -} diff --git a/content/renderer/indexed_db/renderer_webidbdatabase_impl.h b/content/renderer/indexed_db/renderer_webidbdatabase_impl.h deleted file mode 100644 index 1f9b080..0000000 --- a/content/renderer/indexed_db/renderer_webidbdatabase_impl.h +++ /dev/null @@ -1,52 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBDATABASE_IMPL_H_ -#define CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBDATABASE_IMPL_H_ -#pragma once - -#include "base/basictypes.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h" - -namespace WebKit { -class WebIDBCallbacks; -class WebIDBDatabaseCallbacks; -class WebString; -class WebIDBTransaction; -} - -class RendererWebIDBDatabaseImpl : public WebKit::WebIDBDatabase { - public: - explicit RendererWebIDBDatabaseImpl(int32 idb_database_id); - virtual ~RendererWebIDBDatabaseImpl(); - - // WebKit::WebIDBDatabase - virtual WebKit::WebString name() const; - virtual WebKit::WebString version() const; - virtual WebKit::WebDOMStringList objectStoreNames() const; - virtual WebKit::WebIDBObjectStore* createObjectStore( - const WebKit::WebString& name, - const WebKit::WebString& key_path, - bool auto_increment, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void deleteObjectStore( - const WebKit::WebString& name, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void setVersion( - const WebKit::WebString& version, WebKit::WebIDBCallbacks* callbacks, - WebKit::WebExceptionCode& ec); - virtual WebKit::WebIDBTransaction* transaction( - const WebKit::WebDOMStringList& names, - unsigned short mode, - WebKit::WebExceptionCode& ec); - virtual void close(); - virtual void open(WebKit::WebIDBDatabaseCallbacks*); - - private: - int32 idb_database_id_; -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBDATABASE_IMPL_H_ diff --git a/content/renderer/indexed_db/renderer_webidbfactory_impl.cc b/content/renderer/indexed_db/renderer_webidbfactory_impl.cc deleted file mode 100644 index 166d92c..0000000 --- a/content/renderer/indexed_db/renderer_webidbfactory_impl.cc +++ /dev/null @@ -1,62 +0,0 @@ -// 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. - -#include "content/renderer/indexed_db/renderer_webidbfactory_impl.h" - -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "content/renderer/render_thread_impl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMStringList.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" - -using WebKit::WebDOMStringList; -using WebKit::WebFrame; -using WebKit::WebIDBCallbacks; -using WebKit::WebIDBDatabase; -using WebKit::WebSecurityOrigin; -using WebKit::WebString; - -RendererWebIDBFactoryImpl::RendererWebIDBFactoryImpl() { -} - -RendererWebIDBFactoryImpl::~RendererWebIDBFactoryImpl() { -} - -void RendererWebIDBFactoryImpl::getDatabaseNames( - WebIDBCallbacks* callbacks, - const WebSecurityOrigin& origin, - WebFrame* web_frame, - const WebString& data_dir_unused) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBFactoryGetDatabaseNames( - callbacks, origin.databaseIdentifier(), web_frame); -} - -void RendererWebIDBFactoryImpl::open( - const WebString& name, - WebIDBCallbacks* callbacks, - const WebSecurityOrigin& origin, - WebFrame* web_frame, - const WebString& data_dir) { - // Don't send the data_dir. We know what we want on the Browser side of - // things. - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBFactoryOpen( - name, callbacks, origin.databaseIdentifier(), web_frame); -} - -void RendererWebIDBFactoryImpl::deleteDatabase( - const WebString& name, - WebIDBCallbacks* callbacks, - const WebSecurityOrigin& origin, - WebFrame* web_frame, - const WebString& data_dir) { - // Don't send the data_dir. We know what we want on the Browser side of - // things. - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBFactoryDeleteDatabase( - name, callbacks, origin.databaseIdentifier(), web_frame); -} diff --git a/content/renderer/indexed_db/renderer_webidbfactory_impl.h b/content/renderer/indexed_db/renderer_webidbfactory_impl.h deleted file mode 100644 index 87fcdfe7..0000000 --- a/content/renderer/indexed_db/renderer_webidbfactory_impl.h +++ /dev/null @@ -1,45 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBFACTORY_IMPL_H_ -#define CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBFACTORY_IMPL_H_ -#pragma once - -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" - -namespace WebKit { -class WebFrame; -class WebSecurityOrigin; -class WebString; -} - -class RendererWebIDBFactoryImpl : public WebKit::WebIDBFactory { - public: - RendererWebIDBFactoryImpl(); - virtual ~RendererWebIDBFactoryImpl(); - - // See WebIDBFactory.h for documentation on these functions. - virtual void getDatabaseNames( - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebSecurityOrigin& origin, - WebKit::WebFrame* web_frame, - const WebKit::WebString& data_dir); - - virtual void open( - const WebKit::WebString& name, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebSecurityOrigin& origin, - WebKit::WebFrame* web_frame, - const WebKit::WebString& data_dir); - virtual void deleteDatabase( - const WebKit::WebString& name, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebSecurityOrigin& origin, - WebKit::WebFrame* web_frame, - const WebKit::WebString& data_dir); -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBFACTORY_IMPL_H_ diff --git a/content/renderer/indexed_db/renderer_webidbindex_impl.cc b/content/renderer/indexed_db/renderer_webidbindex_impl.cc deleted file mode 100644 index c7446e4..0000000 --- a/content/renderer/indexed_db/renderer_webidbindex_impl.cc +++ /dev/null @@ -1,122 +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/renderer_webidbindex_impl.h" - -#include "content/common/indexed_db/indexed_db_messages.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "content/renderer/indexed_db/renderer_webidbtransaction_impl.h" -#include "content/renderer/render_thread_impl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" - -using WebKit::WebExceptionCode; -using WebKit::WebDOMStringList; -using WebKit::WebString; -using WebKit::WebVector; - -RendererWebIDBIndexImpl::RendererWebIDBIndexImpl(int32 idb_index_id) - : idb_index_id_(idb_index_id) { -} - -RendererWebIDBIndexImpl::~RendererWebIDBIndexImpl() { - // It's not possible for there to be pending callbacks that address this - // 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. - ChildThread::current()->Send(new IndexedDBHostMsg_IndexDestroyed( - idb_index_id_)); -} - -WebString RendererWebIDBIndexImpl::name() const { - string16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_IndexName(idb_index_id_, &result)); - return result; -} - -WebString RendererWebIDBIndexImpl::storeName() const { - string16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_IndexStoreName(idb_index_id_, &result)); - return result; -} - -WebString RendererWebIDBIndexImpl::keyPath() const { - NullableString16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_IndexKeyPath(idb_index_id_, &result)); - return result; -} - -bool RendererWebIDBIndexImpl::unique() const { - bool result; - ChildThread::current()->Send( - new IndexedDBHostMsg_IndexUnique(idb_index_id_, &result)); - return result; -} - -bool RendererWebIDBIndexImpl::multiEntry() const { - bool result; - ChildThread::current()->Send( - new IndexedDBHostMsg_IndexMultiEntry(idb_index_id_, &result)); - return result; -} - -void RendererWebIDBIndexImpl::openObjectCursor( - const WebKit::WebIDBKeyRange& range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBIndexOpenObjectCursor( - range, direction, callbacks, idb_index_id_, transaction, &ec); -} - -void RendererWebIDBIndexImpl::openKeyCursor( - const WebKit::WebIDBKeyRange& range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBIndexOpenKeyCursor( - range, direction, callbacks, idb_index_id_, transaction, &ec); -} - -void RendererWebIDBIndexImpl::count( - const WebKit::WebIDBKeyRange& range, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBIndexCount( - range, callbacks, idb_index_id_, transaction, &ec); -} - -void RendererWebIDBIndexImpl::getObject( - const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBIndexGetObject( - IndexedDBKey(key), callbacks, idb_index_id_, transaction, &ec); -} - -void RendererWebIDBIndexImpl::getKey( - const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBIndexGetKey( - IndexedDBKey(key), callbacks, idb_index_id_, transaction, &ec); -} diff --git a/content/renderer/indexed_db/renderer_webidbindex_impl.h b/content/renderer/indexed_db/renderer_webidbindex_impl.h deleted file mode 100644 index 29e2c8f..0000000 --- a/content/renderer/indexed_db/renderer_webidbindex_impl.h +++ /dev/null @@ -1,52 +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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBINDEX_IMPL_H_ -#define CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBINDEX_IMPL_H_ -#pragma once - -#include "base/basictypes.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBIndex.h" - -class RendererWebIDBIndexImpl : public WebKit::WebIDBIndex { - public: - explicit RendererWebIDBIndexImpl(int32 idb_index_id); - virtual ~RendererWebIDBIndexImpl(); - - // WebKit::WebIDBIndex - virtual WebKit::WebString name() const; - virtual WebKit::WebString storeName() const; - virtual WebKit::WebString keyPath() const; - virtual bool unique() const; - virtual bool multiEntry() const; - - virtual void openObjectCursor(const WebKit::WebIDBKeyRange& range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void openKeyCursor(const WebKit::WebIDBKeyRange& range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void count(const WebKit::WebIDBKeyRange& range, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void getObject(const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void getKey(const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - - private: - int32 idb_index_id_; -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBINDEX_IMPL_H_ diff --git a/content/renderer/indexed_db/renderer_webidbobjectstore_impl.cc b/content/renderer/indexed_db/renderer_webidbobjectstore_impl.cc deleted file mode 100644 index 9e1a002..0000000 --- a/content/renderer/indexed_db/renderer_webidbobjectstore_impl.cc +++ /dev/null @@ -1,185 +0,0 @@ -// 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. - -#include "content/renderer/indexed_db/renderer_webidbobjectstore_impl.h" - -#include "content/common/indexed_db/indexed_db_messages.h" -#include "content/public/common/serialized_script_value.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "content/renderer/indexed_db/renderer_webidbindex_impl.h" -#include "content/renderer/indexed_db/renderer_webidbtransaction_impl.h" -#include "content/renderer/render_thread_impl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMStringList.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKeyRange.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransaction.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerializedScriptValue.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" - -using WebKit::WebDOMStringList; -using WebKit::WebExceptionCode; -using WebKit::WebFrame; -using WebKit::WebIDBCallbacks; -using WebKit::WebIDBKeyRange; -using WebKit::WebIDBIndex; -using WebKit::WebIDBKey; -using WebKit::WebIDBTransaction; -using WebKit::WebSerializedScriptValue; -using WebKit::WebString; - -RendererWebIDBObjectStoreImpl::RendererWebIDBObjectStoreImpl( - int32 idb_object_store_id) - : idb_object_store_id_(idb_object_store_id) { -} - -RendererWebIDBObjectStoreImpl::~RendererWebIDBObjectStoreImpl() { - // It's not possible for there to be pending callbacks that address this - // 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. - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreDestroyed(idb_object_store_id_)); -} - -WebString RendererWebIDBObjectStoreImpl::name() const { - string16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreName(idb_object_store_id_, &result)); - return result; -} - -WebString RendererWebIDBObjectStoreImpl::keyPath() const { - NullableString16 result; - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreKeyPath(idb_object_store_id_, &result)); - return result; -} - -WebDOMStringList RendererWebIDBObjectStoreImpl::indexNames() const { - std::vector<string16> result; - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreIndexNames( - idb_object_store_id_, &result)); - WebDOMStringList web_result; - for (std::vector<string16>::const_iterator it = result.begin(); - it != result.end(); ++it) { - web_result.append(*it); - } - return web_result; -} - -void RendererWebIDBObjectStoreImpl::get( - const WebIDBKey& key, - WebIDBCallbacks* callbacks, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBObjectStoreGet( - IndexedDBKey(key), callbacks, idb_object_store_id_, transaction, &ec); -} - -void RendererWebIDBObjectStoreImpl::put( - const WebSerializedScriptValue& value, - const WebIDBKey& key, - PutMode put_mode, - WebIDBCallbacks* callbacks, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBObjectStorePut( - content::SerializedScriptValue(value), IndexedDBKey(key), put_mode, - callbacks, idb_object_store_id_, transaction, &ec); -} - -void RendererWebIDBObjectStoreImpl::deleteFunction( - const WebIDBKey& key, - WebIDBCallbacks* callbacks, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBObjectStoreDelete( - IndexedDBKey(key), callbacks, idb_object_store_id_, transaction, &ec); -} - -void RendererWebIDBObjectStoreImpl::clear( - WebIDBCallbacks* callbacks, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBObjectStoreClear( - callbacks, idb_object_store_id_, transaction, &ec); -} - -WebIDBIndex* RendererWebIDBObjectStoreImpl::createIndex( - const WebString& name, - const WebString& key_path, - bool unique, - bool multi_entry, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBHostMsg_ObjectStoreCreateIndex_Params params; - params.name = name; - params.key_path = key_path; - params.unique = unique; - params.multi_entry = multi_entry; - params.transaction_id = IndexedDBDispatcher::TransactionId(transaction); - params.idb_object_store_id = idb_object_store_id_; - - int32 index_id; - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreCreateIndex(params, &index_id, &ec)); - if (!index_id) - return NULL; - return new RendererWebIDBIndexImpl(index_id); -} - -WebIDBIndex* RendererWebIDBObjectStoreImpl::index( - const WebString& name, - WebExceptionCode& ec) { - int32 idb_index_id; - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreIndex(idb_object_store_id_, name, - &idb_index_id, &ec)); - if (!idb_index_id) - return NULL; - return new RendererWebIDBIndexImpl(idb_index_id); -} - -void RendererWebIDBObjectStoreImpl::deleteIndex( - const WebString& name, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - ChildThread::current()->Send( - new IndexedDBHostMsg_ObjectStoreDeleteIndex( - idb_object_store_id_, name, - IndexedDBDispatcher::TransactionId(transaction), &ec)); -} - -void RendererWebIDBObjectStoreImpl::openCursor( - const WebIDBKeyRange& idb_key_range, - unsigned short direction, WebIDBCallbacks* callbacks, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBObjectStoreOpenCursor( - idb_key_range, direction, callbacks, idb_object_store_id_, - transaction, &ec); -} - -void RendererWebIDBObjectStoreImpl::count( - const WebIDBKeyRange& idb_key_range, - WebIDBCallbacks* callbacks, - const WebIDBTransaction& transaction, - WebExceptionCode& ec) { - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RequestIDBObjectStoreCount( - idb_key_range, callbacks, idb_object_store_id_, - transaction, &ec); -} diff --git a/content/renderer/indexed_db/renderer_webidbobjectstore_impl.h b/content/renderer/indexed_db/renderer_webidbobjectstore_impl.h deleted file mode 100644 index 18c4589..0000000 --- a/content/renderer/indexed_db/renderer_webidbobjectstore_impl.h +++ /dev/null @@ -1,78 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBOBJECTSTORE_IMPL_H_ -#define CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBOBJECTSTORE_IMPL_H_ -#pragma once - -#include "base/basictypes.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBObjectStore.h" - -namespace WebKit { -class WebIDBCallbacks; -class WebIDBIndex; -class WebIDBKey; -class WebIDBKeyRange; -class WebString; -} - -class RendererWebIDBObjectStoreImpl : public WebKit::WebIDBObjectStore { - public: - explicit RendererWebIDBObjectStoreImpl(int32 idb_object_store_id); - virtual ~RendererWebIDBObjectStoreImpl(); - - // WebKit::WebIDBObjectStore - virtual WebKit::WebString name() const; - virtual WebKit::WebString keyPath() const; - virtual WebKit::WebDOMStringList indexNames() const; - - virtual void get(const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void put(const WebKit::WebSerializedScriptValue& value, - const WebKit::WebIDBKey& key, - PutMode put_mode, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void deleteFunction(const WebKit::WebIDBKey& key, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - virtual void clear(WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - - virtual WebKit::WebIDBIndex* createIndex( - const WebKit::WebString& name, - const WebKit::WebString& key_path, - bool unique, - bool multi_entry, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - // Transfers ownership of the WebIDBIndex to the caller. - virtual WebKit::WebIDBIndex* index(const WebKit::WebString& name, - WebKit::WebExceptionCode& ec); - virtual void deleteIndex(const WebKit::WebString& name, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - - virtual void openCursor(const WebKit::WebIDBKeyRange& idb_key_range, - unsigned short direction, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - - virtual void count(const WebKit::WebIDBKeyRange& idb_key_range, - WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebIDBTransaction& transaction, - WebKit::WebExceptionCode& ec); - - private: - int32 idb_object_store_id_; -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBOBJECTSTORE_IMPL_H_ diff --git a/content/renderer/indexed_db/renderer_webidbtransaction_impl.cc b/content/renderer/indexed_db/renderer_webidbtransaction_impl.cc deleted file mode 100644 index f3db376..0000000 --- a/content/renderer/indexed_db/renderer_webidbtransaction_impl.cc +++ /dev/null @@ -1,74 +0,0 @@ -// 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. - -#include "content/renderer/indexed_db/renderer_webidbtransaction_impl.h" - -#include "content/common/indexed_db/indexed_db_messages.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "content/renderer/indexed_db/renderer_webidbobjectstore_impl.h" -#include "content/renderer/render_thread_impl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBObjectStore.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransactionCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" - -using WebKit::WebIDBObjectStore; -using WebKit::WebIDBTransactionCallbacks; -using WebKit::WebString; - -RendererWebIDBTransactionImpl::RendererWebIDBTransactionImpl( - int32 idb_transaction_id) - : idb_transaction_id_(idb_transaction_id) { -} - -RendererWebIDBTransactionImpl::~RendererWebIDBTransactionImpl() { - // It's not possible for there to be pending callbacks that address this - // 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. - ChildThread::current()->Send(new IndexedDBHostMsg_TransactionDestroyed( - idb_transaction_id_)); -} - -int RendererWebIDBTransactionImpl::mode() const -{ - int mode; - ChildThread::current()->Send(new IndexedDBHostMsg_TransactionMode( - idb_transaction_id_, &mode)); - return mode; -} - -WebIDBObjectStore* RendererWebIDBTransactionImpl::objectStore( - const WebString& name, - WebKit::WebExceptionCode& ec) -{ - int object_store_id; - ChildThread::current()->Send( - new IndexedDBHostMsg_TransactionObjectStore( - idb_transaction_id_, name, &object_store_id, &ec)); - if (!object_store_id) - return NULL; - return new RendererWebIDBObjectStoreImpl(object_store_id); -} - -void RendererWebIDBTransactionImpl::abort() -{ - ChildThread::current()->Send(new IndexedDBHostMsg_TransactionAbort( - idb_transaction_id_)); -} - -void RendererWebIDBTransactionImpl::didCompleteTaskEvents() -{ - ChildThread::current()->Send( - new IndexedDBHostMsg_TransactionDidCompleteTaskEvents( - idb_transaction_id_)); -} - -void RendererWebIDBTransactionImpl::setCallbacks( - WebIDBTransactionCallbacks* callbacks) -{ - IndexedDBDispatcher* dispatcher = - IndexedDBDispatcher::ThreadSpecificInstance(); - dispatcher->RegisterWebIDBTransactionCallbacks(callbacks, - idb_transaction_id_); -} diff --git a/content/renderer/indexed_db/renderer_webidbtransaction_impl.h b/content/renderer/indexed_db/renderer_webidbtransaction_impl.h deleted file mode 100644 index 164cdad..0000000 --- a/content/renderer/indexed_db/renderer_webidbtransaction_impl.h +++ /dev/null @@ -1,36 +0,0 @@ -// 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. - -#ifndef CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBTRANSACTION_IMPL_H_ -#define CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBTRANSACTION_IMPL_H_ -#pragma once - -#include "base/basictypes.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransaction.h" - -namespace WebKit { -class WebIDBObjectStore; -class WebIDBTransactionCallbacks; -class WebString; -} - -class RendererWebIDBTransactionImpl : public WebKit::WebIDBTransaction { - public: - explicit RendererWebIDBTransactionImpl(int32 idb_transaction_id); - virtual ~RendererWebIDBTransactionImpl(); - - virtual int mode() const; - virtual WebKit::WebIDBObjectStore* objectStore(const WebKit::WebString& name, - WebKit::WebExceptionCode&); - virtual void abort(); - virtual void didCompleteTaskEvents(); - virtual void setCallbacks(WebKit::WebIDBTransactionCallbacks*); - - int id() const { return idb_transaction_id_; } - - private: - int32 idb_transaction_id_; -}; - -#endif // CONTENT_RENDERER_INDEXED_DB_RENDERER_WEBIDBTRANSACTION_IMPL_H_ diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 27996e8..bb50ee5 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -28,6 +28,9 @@ #include "content/common/dom_storage_messages.h" #include "content/common/gpu/client/gpu_channel_host.h" #include "content/common/gpu/gpu_messages.h" +#include "content/common/indexed_db/indexed_db_dispatcher.h" +#include "content/common/indexed_db/indexed_db_message_filter.h" +#include "content/common/indexed_db/proxy_webidbfactory_impl.h" #include "content/common/npobject_util.h" #include "content/common/plugin_messages.h" #include "content/common/resource_dispatcher.h" @@ -41,9 +44,6 @@ #include "content/public/renderer/render_view_visitor.h" #include "content/renderer/devtools_agent_filter.h" #include "content/renderer/gpu/compositor_thread.h" -#include "content/renderer/indexed_db/indexed_db_dispatcher.h" -#include "content/renderer/indexed_db/indexed_db_message_filter.h" -#include "content/renderer/indexed_db/renderer_webidbfactory_impl.h" #include "content/renderer/media/audio_input_message_filter.h" #include "content/renderer/media/audio_message_filter.h" #include "content/renderer/media/video_capture_impl_manager.h" @@ -683,6 +683,17 @@ void RenderThreadImpl::ReleaseCachedFonts() { #endif // OS_WIN +bool RenderThreadImpl::IsWebFrameValid(WebKit::WebFrame* web_frame) { + if (!web_frame) + return false; // We must be shutting down. + + RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view()); + if (!render_view) + return false; // We must be shutting down. + + return true; +} + bool RenderThreadImpl::IsMainThread() { return !!current(); } diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h index 505f585..04c096d 100644 --- a/content/renderer/render_thread_impl.h +++ b/content/renderer/render_thread_impl.h @@ -121,6 +121,9 @@ class CONTENT_EXPORT RenderThreadImpl : public content::RenderThread, virtual void ReleaseCachedFonts() OVERRIDE; #endif + // content::ChildThread: + virtual bool IsWebFrameValid(WebKit::WebFrame* frame) OVERRIDE; + // GpuChannelHostFactory implementation: virtual bool IsMainThread() OVERRIDE; virtual bool IsIOThread() OVERRIDE; diff --git a/content/renderer/renderer_webkitplatformsupport_impl.cc b/content/renderer/renderer_webkitplatformsupport_impl.cc index 063e5cf..2c1654a 100644 --- a/content/renderer/renderer_webkitplatformsupport_impl.cc +++ b/content/renderer/renderer_webkitplatformsupport_impl.cc @@ -14,6 +14,7 @@ #include "content/common/file_system/webfilesystem_impl.h" #include "content/common/file_utilities_messages.h" #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" +#include "content/common/indexed_db/proxy_webidbfactory_impl.h" #include "content/common/mime_registry_messages.h" #include "content/common/npobject_util.h" #include "content/common/view_messages.h" @@ -22,7 +23,6 @@ #include "content/public/common/content_switches.h" #include "content/public/renderer/content_renderer_client.h" #include "content/renderer/gamepad_shared_memory_reader.h" -#include "content/renderer/indexed_db/renderer_webidbfactory_impl.h" #include "content/renderer/media/audio_device.h" #include "content/renderer/media/audio_hardware.h" #include "content/renderer/media/renderer_webaudiodevice_impl.h" |