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

Unified Diff: content/common/indexed_db/proxy_webidbcursor_impl.cc

Issue 12326023: Proxy new WebData-based onSuccess() calls. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix more .data()-related android bustage Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/indexed_db/proxy_webidbcursor_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « content/common/indexed_db/proxy_webidbcursor_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698