#include "storage/browser/blob/blob_registry_impl.h"
#include <memory>
#include "base/barrier_closure.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/memory/raw_ptr.h"
#include "base/not_fatal_until.h"
#include "base/task/sequenced_task_runner.h"
#include "storage/browser/blob/blob_builder_from_stream.h"
#include "storage/browser/blob/blob_data_builder.h"
#include "storage/browser/blob/blob_impl.h"
#include "storage/browser/blob/blob_storage_context.h"
#include "storage/browser/blob/blob_transport_strategy.h"
#include "storage/browser/blob/blob_url_store_impl.h"
#include "third_party/blink/public/common/storage_key/storage_key.h"
#include "third_party/blink/public/mojom/blob/data_element.mojom.h"
#include "third_party/blink/public/mojom/blob/serialized_blob.mojom.h"
namespace storage {
namespace {
MemoryStrategy;
}
class BlobRegistryImpl::BlobUnderConstruction { … };
void BlobRegistryImpl::BlobUnderConstruction::StartTransportation(
base::WeakPtr<BlobImpl> blob_impl) { … }
void BlobRegistryImpl::BlobUnderConstruction::ReceivedBlobUUID(
size_t blob_index,
const std::string& uuid) { … }
void BlobRegistryImpl::BlobUnderConstruction::ResolvedAllBlobUUIDs() { … }
void BlobRegistryImpl::BlobUnderConstruction::DependentBlobReady(
BlobStatus status) { … }
void BlobRegistryImpl::BlobUnderConstruction::ResolvedAllBlobDependencies() { … }
void BlobRegistryImpl::BlobUnderConstruction::OnReadyForTransport(
BlobStatus status,
std::vector<BlobMemoryController::FileCreationInfo> file_infos) { … }
void BlobRegistryImpl::BlobUnderConstruction::TransportComplete(
BlobStatus result) { … }
#if DCHECK_IS_ON()
bool BlobRegistryImpl::BlobUnderConstruction::ContainsCycles(
std::unordered_set<BlobUnderConstruction*>* path_from_root) { … }
#endif
BlobRegistryImpl::BlobRegistryImpl(base::WeakPtr<BlobStorageContext> context)
: … { … }
BlobRegistryImpl::~BlobRegistryImpl() { … }
void BlobRegistryImpl::Bind(
mojo::PendingReceiver<blink::mojom::BlobRegistry> receiver,
std::unique_ptr<Delegate> delegate) { … }
void BlobRegistryImpl::Register(
mojo::PendingReceiver<blink::mojom::Blob> blob,
const std::string& uuid,
const std::string& content_type,
const std::string& content_disposition,
std::vector<blink::mojom::DataElementPtr> elements,
RegisterCallback callback) { … }
void BlobRegistryImpl::RegisterFromStream(
const std::string& content_type,
const std::string& content_disposition,
uint64_t expected_length,
mojo::ScopedDataPipeConsumerHandle data,
mojo::PendingAssociatedRemote<blink::mojom::ProgressClient> progress_client,
RegisterFromStreamCallback callback) { … }
void BlobRegistryImpl::GetBlobFromUUID(
mojo::PendingReceiver<blink::mojom::Blob> blob,
const std::string& uuid,
GetBlobFromUUIDCallback callback) { … }
void BlobRegistryImpl::BlobBuildAborted(const std::string& uuid) { … }
void BlobRegistryImpl::StreamingBlobDone(
RegisterFromStreamCallback callback,
BlobBuilderFromStream* builder,
std::unique_ptr<BlobDataHandle> result) { … }
}