Commit bc49bd88 authored by Dave Tapuska's avatar Dave Tapuska Committed by Commit Bot

Fix 64 bit truncations in indexdb

Cursor advance IDL didn't match the C++ code for types. Make them match.

BUG=879657

Change-Id: I5248e1e40aa35ef471e62d818eafe9c335d82b3f
Reviewed-on: https://chromium-review.googlesource.com/c/1348866Reviewed-by: default avatarChris Mumford <cmumford@chromium.org>
Reviewed-by: default avatarKen Buchanan <kenrb@chromium.org>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#610891}
parent 8ab9f1ef
......@@ -13,6 +13,7 @@
#include "third_party/blink/public/common/indexeddb/indexeddb_metadata.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_key_range.h"
#include "third_party/blink/renderer/platform/mojo/string16_mojom_traits.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
using blink::mojom::IDBCursorDirection;
......@@ -149,7 +150,7 @@ UnionTraits<blink::mojom::IDBKeyDataDataView, blink::WebIDBKey>::key_array(
const auto& array_view = key.View().ArrayView();
const size_t array_size = array_view.size();
Vector<blink::WebIDBKey> result;
result.ReserveInitialCapacity(array_view.size());
result.ReserveInitialCapacity(SafeCast<wtf_size_t>(array_view.size()));
// |array_view| is of type WebIDBKeyArrayView which only implements size()
// and operator[]. Since it doesn't have other typical array functions, we
// must use an iterator-style for loop.
......@@ -164,7 +165,7 @@ UnionTraits<blink::mojom::IDBKeyDataDataView, blink::WebIDBKey>::binary(
const blink::WebIDBKey& key) {
const auto& data = key.View().Binary();
Vector<uint8_t> result;
result.ReserveInitialCapacity(data.size());
result.ReserveInitialCapacity(SafeCast<wtf_size_t>(data.size()));
data.ForEachSegment([&result](const char* segment, size_t segment_size,
size_t segment_offset) {
const auto& segment_span = base::make_span(segment, segment + segment_size);
......@@ -207,7 +208,7 @@ StructTraits<blink::mojom::IDBKeyPathDataView, blink::WebIDBKeyPath>::data(
case blink::kWebIDBKeyPathTypeArray: {
const auto& array = key_path.Array();
Vector<String> result;
result.ReserveInitialCapacity(array.size());
result.ReserveInitialCapacity(SafeCast<wtf_size_t>(array.size()));
for (const auto& item : array)
result.push_back(item);
data->set_string_array(result);
......
......@@ -39,7 +39,7 @@ class MODULES_EXPORT WebIDBCursor {
virtual ~WebIDBCursor() = default;
// Used to implement IDBCursor.advance().
virtual void Advance(unsigned long count, WebIDBCallbacks*) = 0;
virtual void Advance(uint32_t count, WebIDBCallbacks*) = 0;
// Used to implement IDBCursor.continue() and IDBCursor.continuePrimaryKey().
//
......
......@@ -48,8 +48,7 @@ WebIDBCursorImpl::~WebIDBCursorImpl() {
IndexedDBDispatcher::UnregisterCursor(this);
}
void WebIDBCursorImpl::Advance(unsigned long count,
WebIDBCallbacks* callbacks_ptr) {
void WebIDBCursorImpl::Advance(uint32_t count, WebIDBCallbacks* callbacks_ptr) {
std::unique_ptr<WebIDBCallbacks> callbacks(callbacks_ptr);
if (count <= prefetch_keys_.size()) {
CachedAdvance(count, callbacks.get());
......
......@@ -28,7 +28,7 @@ class MODULES_EXPORT WebIDBCursorImpl : public WebIDBCursor {
int64_t transaction_id);
~WebIDBCursorImpl() override;
void Advance(unsigned long count, WebIDBCallbacks* callback) override;
void Advance(uint32_t count, WebIDBCallbacks* callback) override;
void CursorContinue(WebIDBKeyView key,
WebIDBKeyView primary_key,
WebIDBCallbacks* callback) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment