// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_INDEXEDDB_IDB_REQUEST_LOADER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_INDEXEDDB_IDB_REQUEST_LOADER_H_ #include <cstdint> #include <memory> #include "base/dcheck_is_on.h" #include "base/functional/callback.h" #include "base/memory/raw_ref.h" #include "third_party/blink/renderer/core/fileapi/file_reader_client.h" #include "third_party/blink/renderer/core/fileapi/file_reader_loader.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/heap/member.h" #include "third_party/blink/renderer/platform/wtf/vector.h" namespace blink { class IDBValue; // Loads IndexedDB values that have been wrapped in Blobs by IDBValueWrapper. // // An IDBRequestLoader unwraps the result of a single IDBRequest. While most // IndexedDB requests result in a single value, getAll() in IDBObjectStore and // IDBIndex results in an array of values. In the interest of simplicity, // IDBRequestLoader only knows how to unwrap an array of values, even though // most of the time the array will consist of a single element. This design // assumes that the overhead of creating and destroying a Vector is much smaller // than the IPC overhead required to load the Blob data into the renderer. class IDBRequestLoader : public GarbageCollected<IDBRequestLoader>, public FileReaderClient { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_INDEXEDDB_IDB_REQUEST_LOADER_H_