⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 286543 in webkit


Ignore:
Timestamp:
Dec 6, 2021, 6:35:01 AM (5 years ago)
Author:
Nikolas Zimmermann
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.

Location:
trunk/Source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r286540 r286543  
     12021-12-06  Nikolas Zimmermann  <nzimmermann@igalia.com>
     2
     3        [LBSE] Toggling the Settings -> Enabled LBSE flag has no immediate effect
     4        https://bugs.webkit.org/show_bug.cgi?id=233871
     5
     6        Reviewed by Rob Buis.
     7
     8        Toggling "Enable layer-based SVG engine" in e.g. MiniBrowser or from JS has no immediate effect.
     9        A relayout is not enough: a full style / render tree rebuild is needed.
     10
     11        * Scripts/Preferences/WebPreferencesInternal.yaml: When "LayerBasedSVGEngineEnabled" changes call
     12        WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged() to assure the switch from legacy to
     13        LBSE engine and vice-versa is live and doesn't need reloads to take effect.
     14
    1152021-12-06  Youenn Fablet  <youenn@apple.com>
    216
  • trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml

    r286504 r286543  
    451451  humanReadableDescription: "Enable next-generation layer-based SVG Engine (LBSE)"
    452452  condition: ENABLE(LAYER_BASED_SVG_ENGINE)
    453   webcoreOnChange: setNeedsRelayoutAllFrames
     453  webcoreOnChange: layerBasedSVGEngineEnabledChanged
    454454  defaultValue:
    455455    WebCore:
  • trunk/Source/WebCore/ChangeLog

    r286542 r286543  
     12021-12-06  Nikolas Zimmermann  <nzimmermann@igalia.com>
     2
     3        [LBSE] Toggling the Settings -> Enabled LBSE flag has no immediate effect
     4        https://bugs.webkit.org/show_bug.cgi?id=233871
     5
     6        Reviewed by Rob Buis.
     7
     8        Toggling "Enable layer-based SVG engine" in e.g. MiniBrowser or from JS has no immediate effect.
     9        A relayout is not enough: a full style / render tree rebuild is needed.
     10
     11        Covered by existing tests.
     12
     13        * page/SettingsBase.cpp:
     14        (WebCore::SettingsBase::layerBasedSVGEngineEnabledChanged): Rebuild style / renderers upon changes.
     15        * page/SettingsBase.h:
     16
    1172021-12-06  Nikolas Zimmermann  <nzimmermann@igalia.com>
    218
  • trunk/Source/WebCore/page/SettingsBase.cpp

    r275480 r286543  
    309309#endif
    310310
     311#if ENABLE(LAYER_BASED_SVG_ENGINE)
     312
     313void SettingsBase::layerBasedSVGEngineEnabledChanged()
     314{
     315    if (!m_page)
     316        return;
     317
     318    for (auto* frame = &m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
     319        auto* document = frame->document();
     320        if (!document)
     321            continue;
     322
     323        auto* documentElement = document->documentElement();
     324        if (!documentElement)
     325            continue;
     326
     327        documentElement->invalidateStyleAndRenderersForSubtree();
     328        document->scheduleFullStyleRebuild();
     329    }
     330}
     331
     332#endif
     333
    311334void SettingsBase::userStyleSheetLocationChanged()
    312335{
  • trunk/Source/WebCore/page/SettingsBase.h

    r275480 r286543  
    140140    void mockCaptureDevicesEnabledChanged();
    141141#endif
     142#if ENABLE(LAYER_BASED_SVG_ENGINE)
     143    void layerBasedSVGEngineEnabledChanged();
     144#endif
    142145
    143146    Page* m_page;
Note: See TracChangeset for help on using the changeset viewer.