| Index: content/common/indexed_db/proxy_webidbcursor_impl.cc
|
| diff --git a/content/common/indexed_db/proxy_webidbcursor_impl.cc b/content/common/indexed_db/proxy_webidbcursor_impl.cc
|
| index eda56fc40fea8040aa9ce9a0420b717094d6fde6..97696901fe697ac02e2fe75628c41e5e405bd561 100644
|
| --- a/content/common/indexed_db/proxy_webidbcursor_impl.cc
|
| +++ b/content/common/indexed_db/proxy_webidbcursor_impl.cc
|
| @@ -9,7 +9,9 @@
|
| #include "content/common/child_thread.h"
|
| #include "content/common/indexed_db/indexed_db_messages.h"
|
| #include "content/common/indexed_db/indexed_db_dispatcher.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h"
|
|
|
| +using WebKit::WebData;
|
| using WebKit::WebExceptionCode;
|
| using WebKit::WebIDBCallbacks;
|
| using WebKit::WebIDBKey;
|
| @@ -65,7 +67,9 @@ void RendererWebIDBCursorImpl::continueFunction(const WebIDBKey& key,
|
| return;
|
| }
|
|
|
| - if (continue_count_ > kPrefetchContinueThreshold) {
|
| + // TODO(alecflett): Reenable prefetching after
|
| + // https://bugs.webkit.org/show_bug.cgi?id=110398 lands.
|
| + if (false && continue_count_ > kPrefetchContinueThreshold) {
|
| // Request pre-fetch.
|
| dispatcher->RequestIDBCursorPrefetch(prefetch_amount_,
|
| callbacks.release(),
|
| @@ -108,10 +112,17 @@ void RendererWebIDBCursorImpl::postSuccessHandlerCallback() {
|
| ResetPrefetchCache();
|
| }
|
|
|
| -void RendererWebIDBCursorImpl::SetPrefetchData(
|
| +void RendererWebIDBCursorImpl::SetPrefetchDataOld(
|
| const std::vector<IndexedDBKey>& keys,
|
| const std::vector<IndexedDBKey>& primary_keys,
|
| const std::vector<SerializedScriptValue>& values) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RendererWebIDBCursorImpl::SetPrefetchData(
|
| + const std::vector<IndexedDBKey>& keys,
|
| + const std::vector<IndexedDBKey>& primary_keys,
|
| + const std::vector<WebData>& 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());
|
| @@ -120,7 +131,7 @@ void RendererWebIDBCursorImpl::SetPrefetchData(
|
| pending_onsuccess_callbacks_ = 0;
|
| }
|
|
|
| -void RendererWebIDBCursorImpl::CachedContinue(
|
| +void RendererWebIDBCursorImpl::CachedContinueOld(
|
| WebKit::WebIDBCallbacks* callbacks) {
|
| DCHECK_GT(prefetch_keys_.size(), 0ul);
|
| DCHECK(prefetch_primary_keys_.size() == prefetch_keys_.size());
|
| @@ -128,7 +139,14 @@ void RendererWebIDBCursorImpl::CachedContinue(
|
|
|
| IndexedDBKey key = prefetch_keys_.front();
|
| IndexedDBKey primary_key = prefetch_primary_keys_.front();
|
| - SerializedScriptValue value = prefetch_values_.front();
|
| + // These casts are temporary as part of a refactoring.
|
| + // See https://code.google.com/p/chromium/issues/detail?id=156247
|
| + WebData prefetch_value = prefetch_values_.front();
|
| + string16 prefetch_string(
|
| + reinterpret_cast<string16::const_pointer>(prefetch_value.data()),
|
| + reinterpret_cast<string16::const_pointer>(prefetch_value.data() +
|
| + prefetch_value.size()));
|
| + SerializedScriptValue value(false, false, prefetch_string);
|
|
|
| prefetch_keys_.pop_front();
|
| prefetch_primary_keys_.pop_front();
|
| @@ -141,6 +159,27 @@ void RendererWebIDBCursorImpl::CachedContinue(
|
| WebSerializedScriptValue(value));
|
| }
|
|
|
| +void RendererWebIDBCursorImpl::CachedContinue(
|
| + WebKit::WebIDBCallbacks* callbacks) {
|
| + DCHECK_GT(prefetch_keys_.size(), 0ul);
|
| + DCHECK(prefetch_primary_keys_.size() == prefetch_keys_.size());
|
| + DCHECK(prefetch_values_.size() == prefetch_keys_.size());
|
| +
|
| + IndexedDBKey key = prefetch_keys_.front();
|
| + IndexedDBKey primary_key = prefetch_primary_keys_.front();
|
| + // this could be a real problem.. we need 2 CachedContinues
|
| + WebData value = prefetch_values_.front();
|
| +
|
| + prefetch_keys_.pop_front();
|
| + prefetch_primary_keys_.pop_front();
|
| + prefetch_values_.pop_front();
|
| + used_prefetches_++;
|
| +
|
| + pending_onsuccess_callbacks_++;
|
| +
|
| + callbacks->onSuccess(key, primary_key, value);
|
| +}
|
| +
|
| void RendererWebIDBCursorImpl::ResetPrefetchCache() {
|
| continue_count_ = 0;
|
| prefetch_amount_ = kMinPrefetchAmount;
|
|
|