// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_SHARED_DICTIONARY_SHARED_DICTIONARY_NETWORK_TRANSACTION_H_ #define NET_SHARED_DICTIONARY_SHARED_DICTIONARY_NETWORK_TRANSACTION_H_ #include <vector> #include "base/functional/callback.h" #include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "base/types/expected.h" #include "net/base/completion_once_callback.h" #include "net/base/net_errors.h" #include "net/base/net_export.h" #include "net/http/http_transaction.h" #include "net/shared_dictionary/shared_dictionary_getter.h" #include "net/socket/next_proto.h" class GURL; namespace net { class SharedDictionary; class SourceStream; struct TransportInfo; // A `HttpTransaction` that decodes shared dictionary compression. // If the `LOAD_CAN_USE_SHARED_DICTIONARY` flag is not set in the `request`'s // `load_flags`, this class delegates all function calls to the underlying // transaction. // Otherwise, this class registers a callback with the underlying transaction // that will be called just before the request is sent to the network. When this // callback is called, this class tries to get a registered dictionary from the // `shared_dictionary_manager`. If a matching dictionary is found, and the // "content-encoding" header of the response from the server is "dcb" or "dcz", // this class will decode the response body using a `BrotliSourceStream` or // `ZstdSourceStream` with the dictionary. class NET_EXPORT SharedDictionaryNetworkTransaction : public HttpTransaction { … }; } // namespace net #endif // NET_SHARED_DICTIONARY_SHARED_DICTIONARY_NETWORK_TRANSACTION_H_