From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WebCore/css/CSSFontSelector.h | 77 +++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 32 deletions(-) (limited to 'Source/WebCore/css/CSSFontSelector.h') diff --git a/Source/WebCore/css/CSSFontSelector.h b/Source/WebCore/css/CSSFontSelector.h index 8ad74cd77..623f2486a 100644 --- a/Source/WebCore/css/CSSFontSelector.h +++ b/Source/WebCore/css/CSSFontSelector.h @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -23,84 +23,97 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef CSSFontSelector_h -#define CSSFontSelector_h +#pragma once +#include "CSSFontFace.h" +#include "CSSFontFaceSet.h" #include "CachedResourceHandle.h" +#include "Font.h" #include "FontSelector.h" -#include "SimpleFontData.h" #include "Timer.h" #include #include -#include #include #include #include namespace WebCore { -class CSSFontFace; class CSSFontFaceRule; +class CSSPrimitiveValue; class CSSSegmentedFontFace; +class CSSValueList; class CachedFont; class Document; -class FontDescription; class StyleRuleFontFace; -class CSSFontSelector final : public FontSelector { +class CSSFontSelector final : public FontSelector, public CSSFontFaceSetClient { public: - static PassRefPtr create(Document* document) + static Ref create(Document& document) { - return adoptRef(new CSSFontSelector(document)); + return adoptRef(*new CSSFontSelector(document)); } virtual ~CSSFontSelector(); - virtual unsigned version() const override { return m_version; } - virtual unsigned uniqueId() const override { return m_uniqueId; } + unsigned version() const final { return m_version; } + unsigned uniqueId() const final { return m_uniqueId; } - virtual PassRefPtr getFontData(const FontDescription&, const AtomicString&) override; - virtual size_t fallbackFontDataCount() override; - virtual PassRefPtr getFallbackFontData(const FontDescription&, size_t) override; - CSSSegmentedFontFace* getFontFace(const FontDescription&, const AtomicString& family); - - virtual bool resolvesFamilyFor(const FontDescription&) const override; + FontRanges fontRangesForFamily(const FontDescription&, const AtomicString&) final; + size_t fallbackFontCount() final; + RefPtr fallbackFontAt(const FontDescription&, size_t) final; void clearDocument(); + void buildStarted(); + void buildCompleted(); - void addFontFaceRule(const StyleRuleFontFace*); + void addFontFaceRule(StyleRuleFontFace&, bool isInitiatingElementInUserAgentShadowTree); void fontLoaded(); - virtual void fontCacheInvalidated() override; + void fontCacheInvalidated() final; bool isEmpty() const; - virtual void registerForInvalidationCallbacks(FontSelectorClient*) override; - virtual void unregisterForInvalidationCallbacks(FontSelectorClient*) override; + void registerForInvalidationCallbacks(FontSelectorClient&) final; + void unregisterForInvalidationCallbacks(FontSelectorClient&) final; Document* document() const { return m_document; } - void beginLoadingFontSoon(CachedFont*); + void beginLoadingFontSoon(CachedFont&); + + FontFaceSet& fontFaceSet(); + + void setIsComputingRootStyleFont(bool value) { m_isComputingRootStyleFont = value; } private: - CSSFontSelector(Document*); + explicit CSSFontSelector(Document&); void dispatchInvalidationCallbacks(); - void beginLoadTimerFired(Timer&); + void fontModified() final; + + void beginLoadTimerFired(); + + struct PendingFontFaceRule { + StyleRuleFontFace& styleRuleFontFace; + bool isInitiatingElementInUserAgentShadowTree; + }; + Vector m_stagingArea; Document* m_document; - HashMap>>, CaseFoldingHash> m_fontFaces; - HashMap>>, CaseFoldingHash> m_locallyInstalledFontFaces; - HashMap>>, CaseFoldingHash> m_fonts; + RefPtr m_fontFaceSet; + Ref m_cssFontFaceSet; HashSet m_clients; Vector> m_fontsToBeginLoading; - Timer m_beginLoadingTimer; + HashSet> m_cssConnectionsPossiblyToRemove; + HashSet> m_cssConnectionsEncounteredDuringBuild; + Timer m_beginLoadingTimer; unsigned m_uniqueId; unsigned m_version; + bool m_creatingFont { false }; + bool m_buildIsUnderway { false }; + bool m_isComputingRootStyleFont { false }; }; } // namespace WebCore - -#endif // CSSFontSelector_h -- cgit v1.2.1