Title: [286543] trunk/Source
- Revision
- 286543
- Author
- [email protected]
- Date
- 2021-12-06 06:35:01 -0800 (Mon, 06 Dec 2021)
Log Message
[LBSE] Toggling the Settings -> Enabled LBSE flag has no immediate effect
https://bugs.webkit.org/show_bug.cgi?id=233871
Reviewed by Rob Buis.
Toggling "Enable layer-based SVG engine" in e.g. MiniBrowser or from JS has no immediate effect.
A relayout is not enough: a full style / render tree rebuild is needed.
Source/WebCore:
Covered by existing tests.
* page/SettingsBase.cpp:
(WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged): Rebuild style / renderers upon changes.
* page/SettingsBase.h:
Source/WTF:
* Scripts/Preferences/WebPreferencesInternal.yaml: When "LayerBasedSVGEngineEnabled" changes call
WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged() to assure the switch from legacy to
LBSE engine and vice-versa is live and doesn't need reloads to take effect.
Modified Paths
Diff
Modified: trunk/Source/WTF/ChangeLog (286542 => 286543)
--- trunk/Source/WTF/ChangeLog 2021-12-06 14:28:26 UTC (rev 286542)
+++ trunk/Source/WTF/ChangeLog 2021-12-06 14:35:01 UTC (rev 286543)
@@ -1,3 +1,17 @@
+2021-12-06 Nikolas Zimmermann <[email protected]>
+
+ [LBSE] Toggling the Settings -> Enabled LBSE flag has no immediate effect
+ https://bugs.webkit.org/show_bug.cgi?id=233871
+
+ Reviewed by Rob Buis.
+
+ Toggling "Enable layer-based SVG engine" in e.g. MiniBrowser or from JS has no immediate effect.
+ A relayout is not enough: a full style / render tree rebuild is needed.
+
+ * Scripts/Preferences/WebPreferencesInternal.yaml: When "LayerBasedSVGEngineEnabled" changes call
+ WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged() to assure the switch from legacy to
+ LBSE engine and vice-versa is live and doesn't need reloads to take effect.
+
2021-12-06 Youenn Fablet <[email protected]>
Enable NavigationPreloadManager by default
Modified: trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml (286542 => 286543)
--- trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml 2021-12-06 14:28:26 UTC (rev 286542)
+++ trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml 2021-12-06 14:35:01 UTC (rev 286543)
@@ -450,7 +450,7 @@
humanReadableName: "Layer-based SVG Engine (LBSE)"
humanReadableDescription: "Enable next-generation layer-based SVG Engine (LBSE)"
condition: ENABLE(LAYER_BASED_SVG_ENGINE)
- webcoreOnChange: setNeedsRelayoutAllFrames
+ webcoreOnChange: layerBasedSVGEngineEnabledChanged
defaultValue:
WebCore:
default: false
Modified: trunk/Source/WebCore/ChangeLog (286542 => 286543)
--- trunk/Source/WebCore/ChangeLog 2021-12-06 14:28:26 UTC (rev 286542)
+++ trunk/Source/WebCore/ChangeLog 2021-12-06 14:35:01 UTC (rev 286543)
@@ -1,5 +1,21 @@
2021-12-06 Nikolas Zimmermann <[email protected]>
+ [LBSE] Toggling the Settings -> Enabled LBSE flag has no immediate effect
+ https://bugs.webkit.org/show_bug.cgi?id=233871
+
+ Reviewed by Rob Buis.
+
+ Toggling "Enable layer-based SVG engine" in e.g. MiniBrowser or from JS has no immediate effect.
+ A relayout is not enough: a full style / render tree rebuild is needed.
+
+ Covered by existing tests.
+
+ * page/SettingsBase.cpp:
+ (WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged): Rebuild style / renderers upon changes.
+ * page/SettingsBase.h:
+
+2021-12-06 Nikolas Zimmermann <[email protected]>
+
[LBSE] Add RenderObject::isSVGRootOrLegacySVGRoot() helper
https://bugs.webkit.org/show_bug.cgi?id=233870
Modified: trunk/Source/WebCore/page/SettingsBase.cpp (286542 => 286543)
--- trunk/Source/WebCore/page/SettingsBase.cpp 2021-12-06 14:28:26 UTC (rev 286542)
+++ trunk/Source/WebCore/page/SettingsBase.cpp 2021-12-06 14:35:01 UTC (rev 286543)
@@ -308,6 +308,29 @@
#endif
+#if ENABLE(LAYER_BASED_SVG_ENGINE)
+
+void SettingsBase::layerBasedSVGEngineEnabledChanged()
+{
+ if (!m_page)
+ return;
+
+ for (auto* frame = &m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ auto* document = frame->document();
+ if (!document)
+ continue;
+
+ auto* documentElement = document->documentElement();
+ if (!documentElement)
+ continue;
+
+ documentElement->invalidateStyleAndRenderersForSubtree();
+ document->scheduleFullStyleRebuild();
+ }
+}
+
+#endif
+
void SettingsBase::userStyleSheetLocationChanged()
{
if (m_page)
Modified: trunk/Source/WebCore/page/SettingsBase.h (286542 => 286543)
--- trunk/Source/WebCore/page/SettingsBase.h 2021-12-06 14:28:26 UTC (rev 286542)
+++ trunk/Source/WebCore/page/SettingsBase.h 2021-12-06 14:35:01 UTC (rev 286543)
@@ -139,6 +139,9 @@
#if ENABLE(MEDIA_STREAM)
void mockCaptureDevicesEnabledChanged();
#endif
+#if ENABLE(LAYER_BASED_SVG_ENGINE)
+ void layerBasedSVGEngineEnabledChanged();
+#endif
Page* m_page;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes