CSSFontFaceSrcValue.h [plain text]
#pragma once
#include "CSSValue.h"
#include "CachedResourceHandle.h"
#include "ResourceLoaderOptions.h"
#include <wtf/Function.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class CachedFont;
class Document;
class SVGFontFaceElement;
class CSSFontFaceSrcValue final : public CSSValue {
public:
static Ref<CSSFontFaceSrcValue> create(const String& resource, LoadedFromOpaqueSource loadedFromOpaqueSource)
{
return adoptRef(*new CSSFontFaceSrcValue(resource, false, loadedFromOpaqueSource));
}
static Ref<CSSFontFaceSrcValue> createLocal(const String& resource)
{
return adoptRef(*new CSSFontFaceSrcValue(resource, true, LoadedFromOpaqueSource::No));
}
const String& resource() const { return m_resource; }
const String& format() const { return m_format; }
bool isLocal() const { return m_isLocal; }
void setFormat(const String& format) { m_format = format; }
bool isSupportedFormat() const;
bool isSVGFontFaceSrc() const;
bool isSVGFontTarget() const;
SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement; }
void setSVGFontFaceElement(SVGFontFaceElement* element) { m_svgFontFaceElement = element; }
String customCSSText() const;
bool traverseSubresources(const WTF::Function<bool (const CachedResource&)>& handler) const;
CachedFont* cachedFont(Document*, bool isSVG, bool isInitiatingElementInUserAgentShadowTree);
bool equals(const CSSFontFaceSrcValue&) const;
private:
CSSFontFaceSrcValue(const String& resource, bool local, LoadedFromOpaqueSource loadedFromOpaqueSource)
: CSSValue(FontFaceSrcClass)
, m_resource(resource)
, m_isLocal(local)
, m_loadedFromOpaqueSource(loadedFromOpaqueSource)
, m_svgFontFaceElement(0)
{
}
String m_resource;
String m_format;
bool m_isLocal;
LoadedFromOpaqueSource m_loadedFromOpaqueSource { LoadedFromOpaqueSource::No };
CachedResourceHandle<CachedFont> m_cachedFont;
SVGFontFaceElement* m_svgFontFaceElement;
};
}
SPECIALIZE_TYPE_TRAITS_CSS_VALUE(CSSFontFaceSrcValue, isFontFaceSrcValue())