User installed fonts are not always disabled when they should be
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Oct 2018 17:57:41 +0000 (17:57 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Oct 2018 17:57:41 +0000 (17:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=190195

Reviewed by Geoffrey Garen.

SVG images and some theme cases fail to respect the setting. Besides the obvious problem this
is also a performance issue as various font caches include this setting in the key.

* platform/graphics/FontDescription.cpp:
(WebCore::m_shouldAllowUserInstalledFonts):

Initialize to 'No' by default. All paths where user fonts make sense already set the bit from
settings. This fixes some cases in system themes that construct FontDescriptions from scratch.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):

Add assertion. This verified the change with the existing tests.

* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):

Always disallow user fonts in SVG used as images.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236753 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/FontDescription.cpp
Source/WebCore/rendering/RenderElement.cpp
Source/WebCore/svg/graphics/SVGImage.cpp

index 0d63b74..e4b3cee 100644 (file)
@@ -1,3 +1,29 @@
+2018-10-02  Antti Koivisto  <antti@apple.com>
+
+        User installed fonts are not always disabled when they should be
+        https://bugs.webkit.org/show_bug.cgi?id=190195
+
+        Reviewed by Geoffrey Garen.
+
+        SVG images and some theme cases fail to respect the setting. Besides the obvious problem this
+        is also a performance issue as various font caches include this setting in the key.
+
+        * platform/graphics/FontDescription.cpp:
+        (WebCore::m_shouldAllowUserInstalledFonts):
+
+        Initialize to 'No' by default. All paths where user fonts make sense already set the bit from
+        settings. This fixes some cases in system themes that construct FontDescriptions from scratch.
+
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::styleWillChange):
+
+        Add assertion. This verified the change with the existing tests.
+
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::dataChanged):
+
+        Always disallow user fonts in SVG used as images.
+
 2018-10-01  Dean Jackson  <dino@apple.com>
 
         Remove CSS Animation Triggers
index 130002d..afa01f8 100644 (file)
@@ -80,7 +80,7 @@ FontDescription::FontDescription()
     , m_variantEastAsianRuby(static_cast<unsigned>(FontVariantEastAsianRuby::Normal))
     , m_opticalSizing(static_cast<unsigned>(FontOpticalSizing::Enabled))
     , m_fontStyleAxis(FontCascadeDescription::initialFontStyleAxis() == FontStyleAxis::ital)
-    , m_shouldAllowUserInstalledFonts(static_cast<unsigned>(AllowUserInstalledFonts::Yes))
+    , m_shouldAllowUserInstalledFonts(static_cast<unsigned>(AllowUserInstalledFonts::No))
 {
 }
 
index c692b7c..d63e79e 100644 (file)
@@ -701,6 +701,8 @@ void RenderElement::invalidateCachedFirstLineStyle()
 
 void RenderElement::styleWillChange(StyleDifference diff, const RenderStyle& newStyle)
 {
+    ASSERT(settings().shouldAllowUserInstalledFonts() || newStyle.fontDescription().shouldAllowUserInstalledFonts() == AllowUserInstalledFonts::No);
+
     auto* oldStyle = hasInitializedStyle() ? &style() : nullptr;
     if (oldStyle) {
         // If our z-index changes value or our visibility changes,
index e70ea8c..bdf92bd 100644 (file)
@@ -474,6 +474,7 @@ EncodedDataStatus SVGImage::dataChanged(bool allDataReceived)
         m_page->settings().setScriptEnabled(false);
         m_page->settings().setPluginsEnabled(false);
         m_page->settings().setAcceleratedCompositingEnabled(false);
+        m_page->settings().setShouldAllowUserInstalledFonts(false);
 
         Frame& frame = m_page->mainFrame();
         frame.setView(FrameView::create(frame));