#include "third_party/blink/renderer/platform/mhtml/mhtml_parser.h"
#include <stddef.h>
#include <utility>
#include "base/containers/contains.h"
#include "base/logging.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/mhtml/archive_resource.h"
#include "third_party/blink/renderer/platform/network/http_parsers.h"
#include "third_party/blink/renderer/platform/network/parsed_content_type.h"
#include "third_party/blink/renderer/platform/wtf/hash_map.h"
#include "third_party/blink/renderer/platform/wtf/text/ascii_ctype.h"
#include "third_party/blink/renderer/platform/wtf/text/base64.h"
#include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
#include "third_party/blink/renderer/platform/wtf/text/string_concatenate.h"
#include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"
namespace blink {
namespace {
void QuotedPrintableDecode(base::span<const char> data, Vector<char>& out) { … }
}
class MIMEHeader final : public GarbageCollected<MIMEHeader> { … };
KeyValueMap;
static KeyValueMap RetrieveKeyValuePairs(SharedBufferChunkReader* buffer) { … }
MIMEHeader* MIMEHeader::ParseHeader(SharedBufferChunkReader* buffer) { … }
MIMEHeader::Encoding MIMEHeader::ParseContentTransferEncoding(
const String& text) { … }
MIMEHeader::MIMEHeader() : … { … }
static bool SkipLinesUntilBoundaryFound(SharedBufferChunkReader& line_reader,
const String& boundary) { … }
MHTMLParser::MHTMLParser(scoped_refptr<const SharedBuffer> data)
: … { … }
HeapVector<Member<ArchiveResource>> MHTMLParser::ParseArchive() { … }
base::Time MHTMLParser::CreationDate() const { … }
bool MHTMLParser::ParseArchiveWithHeader(
MIMEHeader* header,
HeapVector<Member<ArchiveResource>>& resources) { … }
ArchiveResource* MHTMLParser::ParseNextPart(
const MIMEHeader& mime_header,
const String& end_of_part_boundary,
const String& end_of_document_boundary,
bool& end_of_archive_reached) { … }
KURL MHTMLParser::ConvertContentIDToURI(const String& content_id) { … }
}