blob: c927405bf4619b7fbc362446536b355c9fc94c43 [file]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_NETWORK_DEVTOOLS_DURABLE_MSG_WRITER_H_
#define SERVICES_NETWORK_DEVTOOLS_DURABLE_MSG_WRITER_H_
#include <vector>
#include "base/component_export.h"
#include "base/containers/span.h"
#include "net/filter/source_stream_type.h"
namespace network {
// Interface for a Durable Message writer, that will be passed into a URLLoader
// to collect response bodies for DevTools Durable Message collection.
// Typical implementation of this interface are handed over to URLLoader as
// WeakPtrs, to allow eviction when collector determines that the message can
// no longer be collected within allowed limits.
class COMPONENT_EXPORT(NETWORK_SERVICE) DevtoolsDurableMessageWriter {
public:
virtual ~DevtoolsDurableMessageWriter() = default;
// Adds bytes to the message. Durable Messages are collected and stored
// as they are seen by URLLoader, which may or may not be decoded.
virtual void AddBytes(base::span<const uint8_t> bytes) = 0;
// Mark that this message has completed writing. This usually means the
// message will be available for decoding and retrieval by the Durable
// Message collector.
virtual void MarkComplete() = 0;
// Set the client decoding types, if URLLoader has identified any.
// Since we are storing encoded bytes, we need to know the decoding types
// in order to decode the bytes on retrieval.
virtual void SetClientDecodingTypes(
std::vector<net::SourceStreamType> types) = 0;
};
} // namespace network
#endif // SERVICES_NETWORK_DEVTOOLS_DURABLE_MSG_WRITER_H_