Title: [271742] trunk/Source/WebCore
Revision
271742
Author
[email protected]
Date
2021-01-22 02:59:50 -0800 (Fri, 22 Jan 2021)

Log Message

Move FontGenericFamilies storage from SettingsBase to Settings::Values
https://bugs.webkit.org/show_bug.cgi?id=220801

Reviewed by Myles C. Maxfield.

Move FontGenericFamilies member from SettingsBase to Settings::Values
so that it can potentially be used within Workers. This will aid with
font usage off the main thread.

No new tests, no behavior change.

* Headers.cmake:
* Scripts/SettingsTemplates/Settings.cpp.erb:
* Scripts/SettingsTemplates/Settings.h.erb:
* css/CSSFontSelector.cpp:
(WebCore::resolveGenericFamily):
(WebCore::CSSFontSelector::fallbackFontAt):
* page/SettingsBase.cpp:
(WebCore::SettingsBase::SettingsBase):
(WebCore::SettingsBase::standardFontFamily const):
(WebCore::SettingsBase::setStandardFontFamily):
(WebCore::SettingsBase::fixedFontFamily const):
(WebCore::SettingsBase::setFixedFontFamily):
(WebCore::SettingsBase::serifFontFamily const):
(WebCore::SettingsBase::setSerifFontFamily):
(WebCore::SettingsBase::sansSerifFontFamily const):
(WebCore::SettingsBase::setSansSerifFontFamily):
(WebCore::SettingsBase::cursiveFontFamily const):
(WebCore::SettingsBase::setCursiveFontFamily):
(WebCore::SettingsBase::fantasyFontFamily const):
(WebCore::SettingsBase::setFantasyFontFamily):
(WebCore::SettingsBase::pictographFontFamily const):
(WebCore::SettingsBase::setPictographFontFamily):
* page/SettingsBase.h:
* platform/graphics/FontGenericFamilies.cpp:
(WebCore::setGenericFontFamilyForScript):
(WebCore::genericFontFamilyForScript):
(WebCore::FontGenericFamilies::FontGenericFamilies):
(WebCore::FontGenericFamilies::isolatedCopy const):
(WebCore::FontGenericFamilies::standardFontFamily const):
(WebCore::FontGenericFamilies::fixedFontFamily const):
(WebCore::FontGenericFamilies::serifFontFamily const):
(WebCore::FontGenericFamilies::sansSerifFontFamily const):
(WebCore::FontGenericFamilies::cursiveFontFamily const):
(WebCore::FontGenericFamilies::fantasyFontFamily const):
(WebCore::FontGenericFamilies::pictographFontFamily const):
(WebCore::FontGenericFamilies::setStandardFontFamily):
(WebCore::FontGenericFamilies::setFixedFontFamily):
(WebCore::FontGenericFamilies::setSerifFontFamily):
(WebCore::FontGenericFamilies::setSansSerifFontFamily):
(WebCore::FontGenericFamilies::setCursiveFontFamily):
(WebCore::FontGenericFamilies::setFantasyFontFamily):
(WebCore::FontGenericFamilies::setPictographFontFamily):
* platform/graphics/FontGenericFamilies.h:
* style/StyleResolveForFontRaw.cpp:
(WebCore::Style::resolveForFontRaw):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (271741 => 271742)


--- trunk/Source/WebCore/ChangeLog	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/ChangeLog	2021-01-22 10:59:50 UTC (rev 271742)
@@ -1,3 +1,62 @@
+2021-01-22  Chris Lord  <[email protected]>
+
+        Move FontGenericFamilies storage from SettingsBase to Settings::Values
+        https://bugs.webkit.org/show_bug.cgi?id=220801
+
+        Reviewed by Myles C. Maxfield.
+
+        Move FontGenericFamilies member from SettingsBase to Settings::Values
+        so that it can potentially be used within Workers. This will aid with
+        font usage off the main thread.
+
+        No new tests, no behavior change.
+
+        * Headers.cmake:
+        * Scripts/SettingsTemplates/Settings.cpp.erb:
+        * Scripts/SettingsTemplates/Settings.h.erb:
+        * css/CSSFontSelector.cpp:
+        (WebCore::resolveGenericFamily):
+        (WebCore::CSSFontSelector::fallbackFontAt):
+        * page/SettingsBase.cpp:
+        (WebCore::SettingsBase::SettingsBase):
+        (WebCore::SettingsBase::standardFontFamily const):
+        (WebCore::SettingsBase::setStandardFontFamily):
+        (WebCore::SettingsBase::fixedFontFamily const):
+        (WebCore::SettingsBase::setFixedFontFamily):
+        (WebCore::SettingsBase::serifFontFamily const):
+        (WebCore::SettingsBase::setSerifFontFamily):
+        (WebCore::SettingsBase::sansSerifFontFamily const):
+        (WebCore::SettingsBase::setSansSerifFontFamily):
+        (WebCore::SettingsBase::cursiveFontFamily const):
+        (WebCore::SettingsBase::setCursiveFontFamily):
+        (WebCore::SettingsBase::fantasyFontFamily const):
+        (WebCore::SettingsBase::setFantasyFontFamily):
+        (WebCore::SettingsBase::pictographFontFamily const):
+        (WebCore::SettingsBase::setPictographFontFamily):
+        * page/SettingsBase.h:
+        * platform/graphics/FontGenericFamilies.cpp:
+        (WebCore::setGenericFontFamilyForScript):
+        (WebCore::genericFontFamilyForScript):
+        (WebCore::FontGenericFamilies::FontGenericFamilies):
+        (WebCore::FontGenericFamilies::isolatedCopy const):
+        (WebCore::FontGenericFamilies::standardFontFamily const):
+        (WebCore::FontGenericFamilies::fixedFontFamily const):
+        (WebCore::FontGenericFamilies::serifFontFamily const):
+        (WebCore::FontGenericFamilies::sansSerifFontFamily const):
+        (WebCore::FontGenericFamilies::cursiveFontFamily const):
+        (WebCore::FontGenericFamilies::fantasyFontFamily const):
+        (WebCore::FontGenericFamilies::pictographFontFamily const):
+        (WebCore::FontGenericFamilies::setStandardFontFamily):
+        (WebCore::FontGenericFamilies::setFixedFontFamily):
+        (WebCore::FontGenericFamilies::setSerifFontFamily):
+        (WebCore::FontGenericFamilies::setSansSerifFontFamily):
+        (WebCore::FontGenericFamilies::setCursiveFontFamily):
+        (WebCore::FontGenericFamilies::setFantasyFontFamily):
+        (WebCore::FontGenericFamilies::setPictographFontFamily):
+        * platform/graphics/FontGenericFamilies.h:
+        * style/StyleResolveForFontRaw.cpp:
+        (WebCore::Style::resolveForFontRaw):
+
 2021-01-22  Youenn Fablet  <[email protected]>
 
         Validate ItemHandles when decoding them in GPUProcess

Modified: trunk/Source/WebCore/Headers.cmake (271741 => 271742)


--- trunk/Source/WebCore/Headers.cmake	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/Headers.cmake	2021-01-22 10:59:50 UTC (rev 271742)
@@ -1177,6 +1177,7 @@
     platform/graphics/FontCascadeFonts.h
     platform/graphics/FontDescription.h
     platform/graphics/FontFamilySpecificationNull.h
+    platform/graphics/FontGenericFamilies.h
     platform/graphics/FontMetrics.h
     platform/graphics/FontPlatformData.h
     platform/graphics/FontRanges.h

Modified: trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb (271741 => 271742)


--- trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb	2021-01-22 10:59:50 UTC (rev 271742)
@@ -68,6 +68,10 @@
     : SettingsBase(page)
 {
     m_values.initialize();
+
+    m_page = nullptr; // Page is not yet fully initialized when constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.
+    initializeDefaultFontFamilies();
+    m_page = page;
 }
 
 void Settings::Values::initialize()
@@ -106,6 +110,7 @@
 <%- for @setting in @allSettingsSet.inspectorOverrideSettings do -%>
         crossThreadCopy(<%= @setting.name %>InspectorOverride),
 <%- end -%>
+        crossThreadCopy(fontGenericFamilies),
 <%- for @condition in @allSettingsSet.conditions do -%>
 <%- if @condition.nonBoolSettingsNeedingImplementation.length != 0 -%>
 <%- if @condition.condition -%>

Modified: trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb (271741 => 271742)


--- trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb	2021-01-22 10:59:50 UTC (rev 271742)
@@ -38,7 +38,7 @@
     WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
 public:
     WEBCORE_EXPORT static Ref<Settings> create(Page*);
-    WEBCORE_EXPORT ~Settings();
+    WEBCORE_EXPORT virtual ~Settings();
 
 <%- for @condition in @allSettingsSet.conditions do -%>
 <%- if @condition.condition -%>
@@ -68,6 +68,8 @@
     void <%= @setting.setterFunctionName %>InspectorOverride(Optional<<%= @setting.parameterType %>> <%= @setting.name %>InspectorOverride) { m_values.<%= @setting.name %>InspectorOverride = <%= @setting.name %>InspectorOverride; }
     <%- end -%>
 <%- end -%>
+    FontGenericFamilies& fontGenericFamilies() final { return m_values.fontGenericFamilies; }
+    const FontGenericFamilies& fontGenericFamilies() const final { return m_values.fontGenericFamilies; }
 
     struct Values {
         void initialize();
@@ -77,6 +79,7 @@
         Optional<<%= @setting.type %>> <%= @setting.name %>InspectorOverride;
 <%- end -%>
 
+        FontGenericFamilies fontGenericFamilies;
 <%- for @condition in @allSettingsSet.conditions do -%>
 <%- if @condition.nonBoolSettingsNeedingImplementation.length != 0 -%>
 <%- if @condition.condition -%>

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (271741 => 271742)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2021-01-22 10:59:50 UTC (rev 271742)
@@ -5112,6 +5112,7 @@
 		E446143C0CD689CC00FADA75 /* JSHTMLSourceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B423720CBFB6E000AF2ECE /* JSHTMLSourceElement.h */; };
 		E44614520CD68A3500FADA75 /* RenderVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B41E340CBFB60900AF2ECE /* RenderVideo.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		E44B4BB4141650D7002B1D8B /* SelectorChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = E44B4BB2141650D7002B1D8B /* SelectorChecker.h */; };
+		E42EE3A717576E5500EEE8CF /* FontGenericFamilies.h in Headers */ = {isa = PBXBuildFile; fileRef = E44EE3A717576E5500EEE8CF /* FontGenericFamilies.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		E44FA1851BCA6B5A0091B6EF /* ComposedTreeIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = E44FA1841BCA6B5A0091B6EF /* ComposedTreeIterator.h */; };
 		E451C6312394027900993190 /* LayoutUnits.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F73918C2106CEDD006AF262 /* LayoutUnits.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		E451C6322394031A00993190 /* MarginTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FE7AA2621C37B6300296DCD /* MarginTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -32133,6 +32134,7 @@
 				1C6626111C6E7CA600AB527C /* FontFace.h in Headers */,
 				1C24EEA51C729CE40080F8FC /* FontFaceSet.h in Headers */,
 				1C12AC2B1EE778AE0079E0A0 /* FontFamilySpecificationCoreText.h in Headers */,
+				E42EE3A717576E5500EEE8CF /* FontGenericFamilies.h in Headers */,
 				BC4A532F256057CD0028C592 /* FontLoadTimingOverride.h in Headers */,
 				0845680812B90DA600960A9F /* FontMetrics.h in Headers */,
 				B5320D6B122A24E9002D1440 /* FontPlatformData.h in Headers */,

Modified: trunk/Source/WebCore/css/CSSFontSelector.cpp (271741 => 271742)


--- trunk/Source/WebCore/css/CSSFontSelector.cpp	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/css/CSSFontSelector.cpp	2021-01-22 10:59:50 UTC (rev 271742)
@@ -277,19 +277,19 @@
 
     UScriptCode script = fontDescription.script();
     if (familyName == serifFamily)
-        return settings.serifFontFamily(script);
+        return AtomString(settings.serifFontFamily(script));
     if (familyName == sansSerifFamily)
-        return settings.sansSerifFontFamily(script);
+        return AtomString(settings.sansSerifFontFamily(script));
     if (familyName == cursiveFamily)
-        return settings.cursiveFontFamily(script);
+        return AtomString(settings.cursiveFontFamily(script));
     if (familyName == fantasyFamily)
-        return settings.fantasyFontFamily(script);
+        return AtomString(settings.fantasyFontFamily(script));
     if (familyName == monospaceFamily)
-        return settings.fixedFontFamily(script);
+        return AtomString(settings.fixedFontFamily(script));
     if (familyName == pictographFamily)
-        return settings.pictographFontFamily(script);
+        return AtomString(settings.pictographFontFamily(script));
     if (familyName == standardFamily)
-        return settings.standardFontFamily(script);
+        return AtomString(settings.standardFontFamily(script));
 
     return WTF::nullopt;
 }
@@ -429,8 +429,8 @@
     auto& pictographFontFamily = m_document->settings().pictographFontFamily();
     auto font = FontCache::singleton().fontForFamily(fontDescription, pictographFontFamily);
     if (RuntimeEnabledFeatures::sharedFeatures().webAPIStatisticsEnabled())
-        ResourceLoadObserver::shared().logFontLoad(*m_document, pictographFontFamily.string(), !!font);
-    
+        ResourceLoadObserver::shared().logFontLoad(*m_document, pictographFontFamily, !!font);
+
     return font;
 }
 

Modified: trunk/Source/WebCore/page/SettingsBase.cpp (271741 => 271742)


--- trunk/Source/WebCore/page/SettingsBase.cpp	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/page/SettingsBase.cpp	2021-01-22 10:59:50 UTC (rev 271742)
@@ -35,7 +35,6 @@
 #include "Database.h"
 #include "Document.h"
 #include "FontCascade.h"
-#include "FontGenericFamilies.h"
 #include "Frame.h"
 #include "FrameTree.h"
 #include "FrameView.h"
@@ -62,16 +61,10 @@
 }
 
 SettingsBase::SettingsBase(Page* page)
-    : m_page(nullptr)
-    , m_fontGenericFamilies(makeUnique<FontGenericFamilies>())
+    : m_page(page)
     , m_minimumDOMTimerInterval(DOMTimer::defaultMinimumInterval())
     , m_setImageLoadingSettingsTimer(*this, &SettingsBase::imageLoadingSettingsTimerFired)
 {
-    // A Frame may not have been created yet, so we initialize the AtomString
-    // hash before trying to use it.
-    AtomString::init();
-    initializeDefaultFontFamilies();
-    m_page = page; // Page is not yet fully initialized when constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.
 }
 
 SettingsBase::~SettingsBase() = default;
@@ -92,86 +85,86 @@
 
 #endif
 
-const AtomString& SettingsBase::standardFontFamily(UScriptCode script) const
+const String& SettingsBase::standardFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->standardFontFamily(script);
+    return fontGenericFamilies().standardFontFamily(script);
 }
 
-void SettingsBase::setStandardFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setStandardFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setStandardFontFamily(family, script);
+    bool changes = fontGenericFamilies().setStandardFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }
 
-const AtomString& SettingsBase::fixedFontFamily(UScriptCode script) const
+const String& SettingsBase::fixedFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->fixedFontFamily(script);
+    return fontGenericFamilies().fixedFontFamily(script);
 }
 
-void SettingsBase::setFixedFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setFixedFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setFixedFontFamily(family, script);
+    bool changes = fontGenericFamilies().setFixedFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }
 
-const AtomString& SettingsBase::serifFontFamily(UScriptCode script) const
+const String& SettingsBase::serifFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->serifFontFamily(script);
+    return fontGenericFamilies().serifFontFamily(script);
 }
 
-void SettingsBase::setSerifFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setSerifFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setSerifFontFamily(family, script);
+    bool changes = fontGenericFamilies().setSerifFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }
 
-const AtomString& SettingsBase::sansSerifFontFamily(UScriptCode script) const
+const String& SettingsBase::sansSerifFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->sansSerifFontFamily(script);
+    return fontGenericFamilies().sansSerifFontFamily(script);
 }
 
-void SettingsBase::setSansSerifFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setSansSerifFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setSansSerifFontFamily(family, script);
+    bool changes = fontGenericFamilies().setSansSerifFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }
 
-const AtomString& SettingsBase::cursiveFontFamily(UScriptCode script) const
+const String& SettingsBase::cursiveFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->cursiveFontFamily(script);
+    return fontGenericFamilies().cursiveFontFamily(script);
 }
 
-void SettingsBase::setCursiveFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setCursiveFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setCursiveFontFamily(family, script);
+    bool changes = fontGenericFamilies().setCursiveFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }
 
-const AtomString& SettingsBase::fantasyFontFamily(UScriptCode script) const
+const String& SettingsBase::fantasyFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->fantasyFontFamily(script);
+    return fontGenericFamilies().fantasyFontFamily(script);
 }
 
-void SettingsBase::setFantasyFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setFantasyFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setFantasyFontFamily(family, script);
+    bool changes = fontGenericFamilies().setFantasyFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }
 
-const AtomString& SettingsBase::pictographFontFamily(UScriptCode script) const
+const String& SettingsBase::pictographFontFamily(UScriptCode script) const
 {
-    return m_fontGenericFamilies->pictographFontFamily(script);
+    return fontGenericFamilies().pictographFontFamily(script);
 }
 
-void SettingsBase::setPictographFontFamily(const AtomString& family, UScriptCode script)
+void SettingsBase::setPictographFontFamily(const String& family, UScriptCode script)
 {
-    bool changes = m_fontGenericFamilies->setPictographFontFamily(family, script);
+    bool changes = fontGenericFamilies().setPictographFontFamily(family, script);
     if (changes)
         invalidateAfterGenericFamilyChange(m_page);
 }

Modified: trunk/Source/WebCore/page/SettingsBase.h (271741 => 271742)


--- trunk/Source/WebCore/page/SettingsBase.h	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/page/SettingsBase.h	2021-01-22 10:59:50 UTC (rev 271742)
@@ -30,6 +30,7 @@
 #include "ContentType.h"
 #include "EditableLinkBehavior.h"
 #include "EditingBehaviorType.h"
+#include "FontGenericFamilies.h"
 #include "FontLoadTimingOverride.h"
 #include "FontRenderingMode.h"
 #include "ForcedAccessibilityValue.h"
@@ -49,7 +50,6 @@
 #include <wtf/Seconds.h>
 #include <wtf/URL.h>
 #include <wtf/Vector.h>
-#include <wtf/text/AtomString.h>
 
 #if ENABLE(DATA_DETECTION)
 #include "DataDetectorType.h"
@@ -57,14 +57,11 @@
 
 namespace WebCore {
 
-class FontGenericFamilies;
 class Page;
 
 class SettingsBase {
     WTF_MAKE_NONCOPYABLE(SettingsBase); WTF_MAKE_FAST_ALLOCATED;
 public:
-    ~SettingsBase();
-
     void pageDestroyed() { m_page = nullptr; }
 
 #if ENABLE(MEDIA_SOURCE)
@@ -74,27 +71,30 @@
     static const unsigned defaultMaximumHTMLParserDOMTreeDepth = 512;
     static const unsigned defaultMaximumRenderTreeDepth = 512;
 
-    WEBCORE_EXPORT void setStandardFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    virtual FontGenericFamilies& fontGenericFamilies() = 0;
+    virtual const FontGenericFamilies& fontGenericFamilies() const = 0;
 
-    WEBCORE_EXPORT void setFixedFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    WEBCORE_EXPORT void setStandardFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
-    WEBCORE_EXPORT void setSerifFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& serifFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    WEBCORE_EXPORT void setFixedFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
-    WEBCORE_EXPORT void setSansSerifFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    WEBCORE_EXPORT void setSerifFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& serifFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
-    WEBCORE_EXPORT void setCursiveFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    WEBCORE_EXPORT void setSansSerifFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
-    WEBCORE_EXPORT void setFantasyFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    WEBCORE_EXPORT void setCursiveFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
-    WEBCORE_EXPORT void setPictographFontFamily(const AtomString&, UScriptCode = USCRIPT_COMMON);
-    WEBCORE_EXPORT const AtomString& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    WEBCORE_EXPORT void setFantasyFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
+    WEBCORE_EXPORT void setPictographFontFamily(const String&, UScriptCode = USCRIPT_COMMON);
+    WEBCORE_EXPORT const String& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const;
+
     WEBCORE_EXPORT void setMinimumDOMTimerInterval(Seconds); // Initialized to DOMTimer::defaultMinimumInterval().
     Seconds minimumDOMTimerInterval() const { return m_minimumDOMTimerInterval; }
 
@@ -110,6 +110,7 @@
 
 protected:
     explicit SettingsBase(Page*);
+    virtual ~SettingsBase();
 
     void initializeDefaultFontFamilies();
 
@@ -140,7 +141,6 @@
 
     Page* m_page;
 
-    const std::unique_ptr<FontGenericFamilies> m_fontGenericFamilies;
     Seconds m_minimumDOMTimerInterval;
 
     Timer m_setImageLoadingSettingsTimer;

Modified: trunk/Source/WebCore/platform/graphics/FontGenericFamilies.cpp (271741 => 271742)


--- trunk/Source/WebCore/platform/graphics/FontGenericFamilies.cpp	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/platform/graphics/FontGenericFamilies.cpp	2021-01-22 10:59:50 UTC (rev 271742)
@@ -30,11 +30,11 @@
 
 namespace WebCore {
 
-static bool setGenericFontFamilyForScript(ScriptFontFamilyMap& fontMap, const AtomString& family, UScriptCode script)
+static bool setGenericFontFamilyForScript(ScriptFontFamilyMap& fontMap, const String& family, UScriptCode script)
 {
     if (family.isEmpty())
         return fontMap.remove(static_cast<int>(script));
-    auto& familyInMap = fontMap.add(static_cast<int>(script), AtomString { }).iterator->value;
+    auto& familyInMap = fontMap.add(static_cast<int>(script), String { }).iterator->value;
     if (familyInMap == family)
         return false;
     familyInMap = family;
@@ -64,7 +64,7 @@
     cachedUserPrefersSimplified() = computeUserPrefersSimplified();
 }
 
-static const AtomString& genericFontFamilyForScript(const ScriptFontFamilyMap& fontMap, UScriptCode script)
+static const String& genericFontFamilyForScript(const ScriptFontFamilyMap& fontMap, UScriptCode script)
 {
     ScriptFontFamilyMap::const_iterator it = fontMap.find(static_cast<int>(script));
     if (it != fontMap.end())
@@ -83,76 +83,99 @@
 
 FontGenericFamilies::FontGenericFamilies()
 {
-    addLanguageChangeObserver(this, &languageChanged);
-    languageChanged(nullptr);
+    static std::once_flag once;
+    std::call_once(once, [&] {
+        addLanguageChangeObserver(&once, &languageChanged);
+        languageChanged(nullptr);
+    });
 }
 
-const AtomString& FontGenericFamilies::standardFontFamily(UScriptCode script) const
+FontGenericFamilies FontGenericFamilies::isolatedCopy() const
 {
+    FontGenericFamilies copy;
+    for (auto &keyValue : m_standardFontFamilyMap)
+        copy.m_standardFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    for (auto &keyValue : m_serifFontFamilyMap)
+        copy.m_serifFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    for (auto &keyValue : m_fixedFontFamilyMap)
+        copy.m_fixedFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    for (auto &keyValue : m_sansSerifFontFamilyMap)
+        copy.m_sansSerifFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    for (auto &keyValue : m_cursiveFontFamilyMap)
+        copy.m_cursiveFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    for (auto &keyValue : m_fantasyFontFamilyMap)
+        copy.m_fantasyFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    for (auto &keyValue : m_pictographFontFamilyMap)
+        copy.m_pictographFontFamilyMap.add(keyValue.key, keyValue.value.isolatedCopy());
+    return copy;
+}
+
+const String& FontGenericFamilies::standardFontFamily(UScriptCode script) const
+{
     return genericFontFamilyForScript(m_standardFontFamilyMap, script);
 }
 
-const AtomString& FontGenericFamilies::fixedFontFamily(UScriptCode script) const
+const String& FontGenericFamilies::fixedFontFamily(UScriptCode script) const
 {
     return genericFontFamilyForScript(m_fixedFontFamilyMap, script);
 }
 
-const AtomString& FontGenericFamilies::serifFontFamily(UScriptCode script) const
+const String& FontGenericFamilies::serifFontFamily(UScriptCode script) const
 {
     return genericFontFamilyForScript(m_serifFontFamilyMap, script);
 }
 
-const AtomString& FontGenericFamilies::sansSerifFontFamily(UScriptCode script) const
+const String& FontGenericFamilies::sansSerifFontFamily(UScriptCode script) const
 {
     return genericFontFamilyForScript(m_sansSerifFontFamilyMap, script);
 }
 
-const AtomString& FontGenericFamilies::cursiveFontFamily(UScriptCode script) const
+const String& FontGenericFamilies::cursiveFontFamily(UScriptCode script) const
 {
     return genericFontFamilyForScript(m_cursiveFontFamilyMap, script);
 }
 
-const AtomString& FontGenericFamilies::fantasyFontFamily(UScriptCode script) const
+const String& FontGenericFamilies::fantasyFontFamily(UScriptCode script) const
 {
     return genericFontFamilyForScript(m_fantasyFontFamilyMap, script);
 }
 
-const AtomString& FontGenericFamilies::pictographFontFamily(UScriptCode script) const
+const String& FontGenericFamilies::pictographFontFamily(UScriptCode script) const
 {
     return genericFontFamilyForScript(m_pictographFontFamilyMap, script);
 }
 
-bool FontGenericFamilies::setStandardFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setStandardFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_standardFontFamilyMap, family, script);
 }
 
-bool FontGenericFamilies::setFixedFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setFixedFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_fixedFontFamilyMap, family, script);
 }
 
-bool FontGenericFamilies::setSerifFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setSerifFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_serifFontFamilyMap, family, script);
 }
 
-bool FontGenericFamilies::setSansSerifFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setSansSerifFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_sansSerifFontFamilyMap, family, script);
 }
 
-bool FontGenericFamilies::setCursiveFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setCursiveFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_cursiveFontFamilyMap, family, script);
 }
 
-bool FontGenericFamilies::setFantasyFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setFantasyFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_fantasyFontFamilyMap, family, script);
 }
 
-bool FontGenericFamilies::setPictographFontFamily(const AtomString& family, UScriptCode script)
+bool FontGenericFamilies::setPictographFontFamily(const String& family, UScriptCode script)
 {
     return setGenericFontFamilyForScript(m_pictographFontFamilyMap, family, script);
 }

Modified: trunk/Source/WebCore/platform/graphics/FontGenericFamilies.h (271741 => 271742)


--- trunk/Source/WebCore/platform/graphics/FontGenericFamilies.h	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/platform/graphics/FontGenericFamilies.h	2021-01-22 10:59:50 UTC (rev 271742)
@@ -42,7 +42,7 @@
     static bool isDeletedValue(int value) { return value == -3; }
 };
 
-typedef HashMap<int, AtomString, DefaultHash<int>, UScriptCodeHashTraits> ScriptFontFamilyMap;
+typedef HashMap<int, String, DefaultHash<int>, UScriptCodeHashTraits> ScriptFontFamilyMap;
 
 class FontGenericFamilies {
     WTF_MAKE_FAST_ALLOCATED;
@@ -49,22 +49,24 @@
 public:
     FontGenericFamilies();
 
-    const AtomString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
-    const AtomString& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const;
-    const AtomString& serifFontFamily(UScriptCode = USCRIPT_COMMON) const;
-    const AtomString& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const;
-    const AtomString& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const;
-    const AtomString& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const;
-    const AtomString& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    FontGenericFamilies isolatedCopy() const;
 
-    bool setStandardFontFamily(const AtomString&, UScriptCode);
-    bool setFixedFontFamily(const AtomString&, UScriptCode);
-    bool setSerifFontFamily(const AtomString&, UScriptCode);
-    bool setSansSerifFontFamily(const AtomString&, UScriptCode);
-    bool setCursiveFontFamily(const AtomString&, UScriptCode);
-    bool setFantasyFontFamily(const AtomString&, UScriptCode);
-    bool setPictographFontFamily(const AtomString&, UScriptCode);
+    const String& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    const String& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    const String& serifFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    const String& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    const String& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    const String& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const;
+    const String& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const;
 
+    bool setStandardFontFamily(const String&, UScriptCode);
+    bool setFixedFontFamily(const String&, UScriptCode);
+    bool setSerifFontFamily(const String&, UScriptCode);
+    bool setSansSerifFontFamily(const String&, UScriptCode);
+    bool setCursiveFontFamily(const String&, UScriptCode);
+    bool setFantasyFontFamily(const String&, UScriptCode);
+    bool setPictographFontFamily(const String&, UScriptCode);
+
 private:
     ScriptFontFamilyMap m_standardFontFamilyMap;
     ScriptFontFamilyMap m_serifFontFamilyMap;

Modified: trunk/Source/WebCore/style/StyleResolveForFontRaw.cpp (271741 => 271742)


--- trunk/Source/WebCore/style/StyleResolveForFontRaw.cpp	2021-01-22 09:34:10 UTC (rev 271741)
+++ trunk/Source/WebCore/style/StyleResolveForFontRaw.cpp	2021-01-22 10:59:50 UTC (rev 271742)
@@ -74,7 +74,7 @@
         switchOn(item, [&] (CSSValueID ident) {
             isGenericFamily = ident != CSSValueWebkitBody;
             family = isGenericFamily ? CSSPropertyParserHelpers::genericFontFamilyFromValueID(ident)
-                : document.settings().standardFontFamily();
+                : AtomString(document.settings().standardFontFamily());
         }, [&] (const String& familyString) {
             family = familyString;
         });
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to