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

Unified Diff: content/child/indexed_db/webidbcursor_impl.cc

Issue 240003010: The chromium-side backchannel plumbing for blobs in IDB. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged out Created 6 years, 8 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
Index: content/child/indexed_db/webidbcursor_impl.cc
diff --git a/content/child/indexed_db/webidbcursor_impl.cc b/content/child/indexed_db/webidbcursor_impl.cc
index ad039d8481a7a3c255dee33a1756822fa0e98f5a..c3d97ba3eca6e5254caa3f6c36ca37ae65fdef15 100644
--- a/content/child/indexed_db/webidbcursor_impl.cc
+++ b/content/child/indexed_db/webidbcursor_impl.cc
@@ -122,10 +122,12 @@ void WebIDBCursorImpl::postSuccessHandlerCallback() {
void WebIDBCursorImpl::SetPrefetchData(
const std::vector<IndexedDBKey>& keys,
const std::vector<IndexedDBKey>& primary_keys,
- const std::vector<WebData>& values) {
+ const std::vector<WebData>& values,
+ const std::vector<blink::WebVector<blink::WebBlobInfo> >& blob_info) {
prefetch_keys_.assign(keys.begin(), keys.end());
prefetch_primary_keys_.assign(primary_keys.begin(), primary_keys.end());
prefetch_values_.assign(values.begin(), values.end());
+ prefetch_blob_info_.assign(blob_info.begin(), blob_info.end());
used_prefetches_ = 0;
pending_onsuccess_callbacks_ = 0;
@@ -136,11 +138,13 @@ void WebIDBCursorImpl::CachedAdvance(unsigned long count,
DCHECK_GE(prefetch_keys_.size(), count);
DCHECK_EQ(prefetch_primary_keys_.size(), prefetch_keys_.size());
DCHECK_EQ(prefetch_values_.size(), prefetch_keys_.size());
+ DCHECK_EQ(prefetch_blob_info_.size(), prefetch_keys_.size());
while (count > 1) {
prefetch_keys_.pop_front();
prefetch_primary_keys_.pop_front();
prefetch_values_.pop_front();
+ prefetch_blob_info_.pop_front();
++used_prefetches_;
--count;
}
@@ -152,14 +156,17 @@ void WebIDBCursorImpl::CachedContinue(WebIDBCallbacks* callbacks) {
DCHECK_GT(prefetch_keys_.size(), 0ul);
DCHECK_EQ(prefetch_primary_keys_.size(), prefetch_keys_.size());
DCHECK_EQ(prefetch_values_.size(), prefetch_keys_.size());
+ DCHECK_EQ(prefetch_blob_info_.size(), prefetch_keys_.size());
IndexedDBKey key = prefetch_keys_.front();
IndexedDBKey primary_key = prefetch_primary_keys_.front();
WebData value = prefetch_values_.front();
+ blink::WebVector<blink::WebBlobInfo> blob_info = prefetch_blob_info_.front();
prefetch_keys_.pop_front();
prefetch_primary_keys_.pop_front();
prefetch_values_.pop_front();
+ prefetch_blob_info_.pop_front();
++used_prefetches_;
++pending_onsuccess_callbacks_;
@@ -174,7 +181,8 @@ void WebIDBCursorImpl::CachedContinue(WebIDBCallbacks* callbacks) {
callbacks->onSuccess(WebIDBKeyBuilder::Build(key),
WebIDBKeyBuilder::Build(primary_key),
- value);
+ value,
+ blob_info);
}
void WebIDBCursorImpl::ResetPrefetchCache() {
@@ -193,6 +201,7 @@ void WebIDBCursorImpl::ResetPrefetchCache() {
prefetch_keys_.clear();
prefetch_primary_keys_.clear();
prefetch_values_.clear();
+ prefetch_blob_info_.clear();
pending_onsuccess_callbacks_ = 0;
}
« no previous file with comments | « content/child/indexed_db/webidbcursor_impl.h ('k') | content/child/indexed_db/webidbcursor_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698