#pragma once
#include <wtf/Forward.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class LinkHeader {
public:
template<typename CharacterType> LinkHeader(StringParsingBuffer<CharacterType>&);
const String& url() const { return m_url; }
const String& rel() const { return m_rel; }
const String& as() const { return m_as; }
const String& mimeType() const { return m_mimeType; }
const String& media() const { return m_media; }
const String& crossOrigin() const { return m_crossOrigin; }
const String& imageSrcSet() const { return m_imageSrcSet; }
const String& imageSizes() const { return m_imageSizes; }
bool valid() const { return m_isValid; }
bool isViewportDependent() const { return !media().isEmpty() || !imageSrcSet().isEmpty() || !imageSizes().isEmpty(); }
enum LinkParameterName {
LinkParameterRel,
LinkParameterAnchor,
LinkParameterTitle,
LinkParameterMedia,
LinkParameterType,
LinkParameterRev,
LinkParameterHreflang,
LinkParameterUnknown,
LinkParameterCrossOrigin,
LinkParameterAs,
LinkParameterImageSrcSet,
LinkParameterImageSizes,
};
private:
void setValue(LinkParameterName, String&& value);
String m_url;
String m_rel;
String m_as;
String m_mimeType;
String m_media;
String m_crossOrigin;
String m_imageSrcSet;
String m_imageSizes;
bool m_isValid { true };
};
class LinkHeaderSet {
public:
LinkHeaderSet(const String& header);
Vector<LinkHeader>::const_iterator begin() const { return m_headerSet.begin(); }
Vector<LinkHeader>::const_iterator end() const { return m_headerSet.end(); }
private:
Vector<LinkHeader> m_headerSet;
};
}