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; |