Changeset 252893 in webkit


Ignore:
Timestamp:
Nov 26, 2019 12:15:39 PM (4 years ago)
Author:
Antti Koivisto
Message:

[LFC][Render tree] Add LFC line layout path to RenderBlockFlow
https://bugs.webkit.org/show_bug.cgi?id=204613

Reviewed by Zalan Bujtas.

Source/WebCore:

Add a basic LFC line layout implementation for RenderBlockFlow.
It can layout lines and do simple painting but doesn't do anything else (like hit testing) yet.

Add a new layoutFormattingContextRenderTreeIntegrationEnabled feature flag, default to false.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/RenderBlockFlowLineLayout.cpp: Added.

(WebCore::Layout::RenderBlockFlowLineLayout::RenderBlockFlowLineLayout):
(WebCore::Layout::RenderBlockFlowLineLayout::canUseFor):
(WebCore::Layout::RenderBlockFlowLineLayout::layout):
(WebCore::Layout::RenderBlockFlowLineLayout::height const):
(WebCore::Layout::RenderBlockFlowLineLayout::paint):

  • layout/RenderBlockFlowLineLayout.h: Copied from Source/WebCore/layout/displaytree/DisplayPainter.h.
  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::Painter::paintInlineFlow):

  • layout/displaytree/DisplayPainter.h:
  • layout/invalidation/InvalidationState.cpp:

(WebCore::Layout::InvalidationState::markNeedsUpdate):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::buildLayoutTree):

  • layout/layouttree/LayoutTreeBuilder.h:
  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setLayoutFormattingContextRenderTreeIntegrationEnabled):
(WebCore::RuntimeEnabledFeatures::layoutFormattingContextRenderTreeIntegrationEnabled const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::addOverflowFromInlineChildren):
(WebCore::RenderBlockFlow::paintInlineChildren):
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):
(WebCore::RenderBlockFlow::layoutSimpleLines):
(WebCore::RenderBlockFlow::layoutLFCLines):
(WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::hasLFCLineLayout const):
(WebCore::RenderBlockFlow::lfcLineLayout const):
(WebCore::RenderBlockFlow::lfcLineLayout):

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Location:
trunk/Source
Files:
1 added
14 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252891 r252893  
     12019-11-26  Antti Koivisto  <antti@apple.com>
     2
     3        [LFC][Render tree] Add LFC line layout path to RenderBlockFlow
     4        https://bugs.webkit.org/show_bug.cgi?id=204613
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Add a basic LFC line layout implementation for RenderBlockFlow.
     9        It can layout lines and do simple painting but doesn't do anything else (like hit testing) yet.
     10
     11        Add a new layoutFormattingContextRenderTreeIntegrationEnabled feature flag, default to false.
     12
     13        * Sources.txt:
     14        * WebCore.xcodeproj/project.pbxproj:
     15        * layout/RenderBlockFlowLineLayout.cpp: Added.
     16        (WebCore::Layout::RenderBlockFlowLineLayout::RenderBlockFlowLineLayout):
     17        (WebCore::Layout::RenderBlockFlowLineLayout::canUseFor):
     18        (WebCore::Layout::RenderBlockFlowLineLayout::layout):
     19        (WebCore::Layout::RenderBlockFlowLineLayout::height const):
     20        (WebCore::Layout::RenderBlockFlowLineLayout::paint):
     21        * layout/RenderBlockFlowLineLayout.h: Copied from Source/WebCore/layout/displaytree/DisplayPainter.h.
     22        * layout/displaytree/DisplayPainter.cpp:
     23        (WebCore::Display::Painter::paintInlineFlow):
     24        * layout/displaytree/DisplayPainter.h:
     25        * layout/invalidation/InvalidationState.cpp:
     26        (WebCore::Layout::InvalidationState::markNeedsUpdate):
     27        * layout/layouttree/LayoutTreeBuilder.cpp:
     28        (WebCore::Layout::TreeBuilder::buildLayoutTree):
     29        * layout/layouttree/LayoutTreeBuilder.h:
     30        * page/RuntimeEnabledFeatures.h:
     31        (WebCore::RuntimeEnabledFeatures::setLayoutFormattingContextRenderTreeIntegrationEnabled):
     32        (WebCore::RuntimeEnabledFeatures::layoutFormattingContextRenderTreeIntegrationEnabled const):
     33        * rendering/RenderBlockFlow.cpp:
     34        (WebCore::RenderBlockFlow::layoutInlineChildren):
     35        (WebCore::RenderBlockFlow::addOverflowFromInlineChildren):
     36        (WebCore::RenderBlockFlow::paintInlineChildren):
     37        (WebCore::RenderBlockFlow::invalidateLineLayoutPath):
     38        (WebCore::RenderBlockFlow::layoutSimpleLines):
     39        (WebCore::RenderBlockFlow::layoutLFCLines):
     40        (WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):
     41        * rendering/RenderBlockFlow.h:
     42        (WebCore::RenderBlockFlow::hasLFCLineLayout const):
     43        (WebCore::RenderBlockFlow::lfcLineLayout const):
     44        (WebCore::RenderBlockFlow::lfcLineLayout):
     45   
    1462019-11-26  Antti Koivisto  <antti@apple.com>
    247
  • trunk/Source/WebCore/Sources.txt

    r252865 r252893  
    14221422layout/LayoutState.cpp
    14231423layout/LayoutUnits.cpp
     1424layout/RenderBlockFlowLineLayout.cpp
    14241425layout/Verification.cpp
    14251426layout/blockformatting/BlockFormattingContext.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r252865 r252893  
    48524852                E4A814E01C7338EB00BF85AC /* IdChangeInvalidation.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A814DF1C7338EB00BF85AC /* IdChangeInvalidation.h */; };
    48534853                E4A8D21622578DB700A8463C /* EventRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A8D21422578DA000A8463C /* EventRegion.h */; settings = {ATTRIBUTES = (Private, ); }; };
     4854                E4ABABDD236088FE00FA4345 /* RenderBlockFlowLineLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E4ABABDB236088FD00FA4345 /* RenderBlockFlowLineLayout.h */; };
    48544855                E4ABABE42361A32900FA4345 /* PropertyCascade.h in Headers */ = {isa = PBXBuildFile; fileRef = E4ABABE22361A32900FA4345 /* PropertyCascade.h */; };
    48554856                E4ABABF32368B95900FA4345 /* StyleBuilderState.h in Headers */ = {isa = PBXBuildFile; fileRef = E4ABABF22368B95800FA4345 /* StyleBuilderState.h */; };
     
    1521415215                E4A8D21422578DA000A8463C /* EventRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventRegion.h; sourceTree = "<group>"; };
    1521515216                E4A8D21522578DA000A8463C /* EventRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventRegion.cpp; sourceTree = "<group>"; };
     15217                E4ABABDB236088FD00FA4345 /* RenderBlockFlowLineLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderBlockFlowLineLayout.h; sourceTree = "<group>"; };
     15218                E4ABABDE2360893D00FA4345 /* RenderBlockFlowLineLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderBlockFlowLineLayout.cpp; sourceTree = "<group>"; };
    1521615219                E4ABABE22361A32900FA4345 /* PropertyCascade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyCascade.h; sourceTree = "<group>"; };
    1521715220                E4ABABE52361A34200FA4345 /* PropertyCascade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PropertyCascade.cpp; sourceTree = "<group>"; };
     
    1663616639                                6F73918C2106CEDD006AF262 /* LayoutUnits.h */,
    1663716640                                6FE7AA2621C37B6300296DCD /* MarginTypes.h */,
     16641                                E4ABABDB236088FD00FA4345 /* RenderBlockFlowLineLayout.h */,
     16642                                E4ABABDE2360893D00FA4345 /* RenderBlockFlowLineLayout.cpp */,
    1663816643                                11FF02D520BA3C810083F25B /* Verification.cpp */,
    1663916644                        );
     
    3245832463                                081093DC1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h in Headers */,
    3245932464                                081668DA125603D5006F25DE /* SVGTextLayoutEngine.h in Headers */,
     32465                                E4ABABDD236088FE00FA4345 /* RenderBlockFlowLineLayout.h in Headers */,
    3246032466                                080E49261255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h in Headers */,
    3246132467                                080E49281255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h in Headers */,
  • trunk/Source/WebCore/layout/RenderBlockFlowLineLayout.h

    r252892 r252893  
    2828#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    2929
     30#include "LayoutPoint.h"
     31
    3032namespace WebCore {
    3133
    3234class GraphicsContext;
    33 class IntRect;
     35class RenderBlockFlow;
     36struct PaintInfo;
    3437
    3538namespace Layout {
     39
     40class LayoutTreeContent;
    3641class LayoutState;
    37 }
    3842
    39 namespace Display {
     43class RenderBlockFlowLineLayout {
     44    WTF_MAKE_FAST_ALLOCATED;
     45public:
     46    RenderBlockFlowLineLayout(const RenderBlockFlow&);
     47    ~RenderBlockFlowLineLayout();
    4048
    41 class Painter {
    42 public:
    43     static void paint(const Layout::LayoutState&, GraphicsContext&, const IntRect& dirtyRect);
     49    static bool canUseFor(const RenderBlockFlow&);
     50
     51    void layout();
     52   
     53    LayoutUnit contentBoxHeight() const;
     54
     55    void paint(PaintInfo&, const LayoutPoint& paintOffset);
     56
     57private:
     58    const RenderBlockFlow& m_flow;
     59    std::unique_ptr<LayoutTreeContent> m_treeContent;
     60    std::unique_ptr<LayoutState> m_layoutState;
    4461};
    4562
    4663}
    4764}
     65
    4866#endif
  • trunk/Source/WebCore/layout/displaytree/DisplayPainter.cpp

    r251917 r252893  
    197197}
    198198
     199void Painter::paintInlineFlow(const Layout::LayoutState& layoutState, GraphicsContext& context)
     200{
     201    auto& layoutRoot = layoutState.root();
     202
     203    ASSERT(layoutRoot.establishesInlineFormattingContext());
     204
     205    auto& displayBox = layoutState.displayBoxForLayoutBox(layoutRoot);
     206
     207    paintInlineContent(context, displayBox, downcast<Layout::InlineFormattingState>(layoutState.establishedFormattingState(layoutRoot)));
     208}
     209
    199210}
    200211}
  • trunk/Source/WebCore/layout/displaytree/DisplayPainter.h

    r251640 r252893  
    4242public:
    4343    static void paint(const Layout::LayoutState&, GraphicsContext&, const IntRect& dirtyRect);
     44    static void paintInlineFlow(const Layout::LayoutState&, GraphicsContext&);
    4445};
    4546
  • trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp

    r252888 r252893  
    137137
    138138    auto layoutTreeContent = makeUnique<LayoutTreeContent>(renderView, makeUnique<Container>(WTF::nullopt, WTFMove(style)));
     139    TreeBuilder(*layoutTreeContent).buildTree();
     140    return layoutTreeContent;
     141}
     142
     143std::unique_ptr<Layout::LayoutTreeContent> TreeBuilder::buildLayoutTree(const RenderBlockFlow& renderBlockFlow)
     144{
     145    PhaseScope scope(Phase::Type::TreeBuilding);
     146
     147    auto style = RenderStyle::clone(renderBlockFlow.style());
     148    auto layoutTreeContent = makeUnique<LayoutTreeContent>(renderBlockFlow, makeUnique<Container>(WTF::nullopt, WTFMove(style)));
    139149    TreeBuilder(*layoutTreeContent).buildTree();
    140150    return layoutTreeContent;
  • trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.h

    r252888 r252893  
    3434namespace WebCore {
    3535
     36class RenderBlockFlow;
    3637class RenderElement;
    3738class RenderObject;
     
    7172public:
    7273    static std::unique_ptr<Layout::LayoutTreeContent> buildLayoutTree(const RenderView&);
     74    static std::unique_ptr<Layout::LayoutTreeContent> buildLayoutTree(const RenderBlockFlow&);
    7375
    7476private:
  • trunk/Source/WebCore/layout/tableformatting/TableGrid.h

    r251283 r252893  
    2828#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    2929
     30#include "FormattingContext.h"
    3031#include "IntPointHash.h"
    3132#include <wtf/HashMap.h>
  • trunk/Source/WebCore/page/RuntimeEnabledFeatures.h

    r251630 r252893  
    189189    void setLayoutFormattingContextEnabled(bool isEnabled) { m_layoutFormattingContextEnabled = isEnabled; }
    190190    bool layoutFormattingContextEnabled() const { return m_layoutFormattingContextEnabled; }
     191   
     192    void setLayoutFormattingContextRenderTreeIntegrationEnabled(bool isEnabled) { m_layoutFormattingContextRenderTreeIntegrationEnabled = isEnabled; }
     193    bool layoutFormattingContextRenderTreeIntegrationEnabled() const { return m_layoutFormattingContextRenderTreeIntegrationEnabled; }
    191194#endif
    192195
     
    444447#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    445448    bool m_layoutFormattingContextEnabled { false };
     449    bool m_layoutFormattingContextRenderTreeIntegrationEnabled { false };
    446450#endif
    447451
  • trunk/Source/WebCore/rendering/RenderBlockFlow.cpp

    r252891 r252893  
    3838#include "LayoutRepainter.h"
    3939#include "Logging.h"
     40#include "RenderBlockFlowLineLayout.h"
    4041#include "RenderCombineText.h"
    4142#include "RenderFlexibleBox.h"
     
    668669void RenderBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& repaintLogicalTop, LayoutUnit& repaintLogicalBottom)
    669670{
     671    auto computeLineLayoutPath = [&] {
     672#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     673        if (Layout::RenderBlockFlowLineLayout::canUseFor(*this))
     674            return LFCPath;
     675#endif
     676        if (SimpleLineLayout::canUseFor(*this))
     677            return SimpleLinesPath;
     678        return LineBoxesPath;
     679    };
     680
    670681    if (lineLayoutPath() == UndeterminedPath)
    671         setLineLayoutPath(SimpleLineLayout::canUseFor(*this) ? SimpleLinesPath : LineBoxesPath);
     682        setLineLayoutPath(computeLineLayoutPath());
    672683
    673684    if (lineLayoutPath() == SimpleLinesPath) {
     
    675686        return;
    676687    }
     688
     689#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     690    if (lineLayoutPath() == LFCPath) {
     691        layoutLFCLines(relayoutChildren, repaintLogicalTop, repaintLogicalBottom);
     692        return;
     693    }
     694#endif
    677695
    678696    if (!complexLineLayout())
     
    35313549    ASSERT(childrenInline());
    35323550
     3551#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     3552    if (lfcLineLayout()) {
     3553        lfcLineLayout()->paint(paintInfo, paintOffset);
     3554        return;
     3555    }
     3556#endif
     3557
    35333558    if (auto simpleLineLayout = this->simpleLineLayout()) {
    35343559        SimpleLineLayout::paintFlow(*this, *simpleLineLayout, paintInfo, paintOffset);
     
    36033628        return;
    36043629    case LineBoxesPath:
     3630    case LFCPath:
    36053631        ASSERT(!simpleLineLayout());
    36063632        setLineLayoutPath(UndeterminedPath);
     
    36413667    setLogicalHeight(lineLayoutTop + lineLayoutHeight + borderAndPaddingAfter());
    36423668}
     3669
     3670#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     3671void RenderBlockFlow::layoutLFCLines(bool, LayoutUnit& repaintLogicalTop, LayoutUnit& repaintLogicalBottom)
     3672{
     3673    if (!lfcLineLayout())
     3674        m_lineLayout = makeUnique<Layout::RenderBlockFlowLineLayout>(*this);
     3675
     3676    auto& lfcLineLayout = *this->lfcLineLayout();
     3677
     3678    for (auto& renderer : childrenOfType<RenderObject>(*this))
     3679        renderer.clearNeedsLayout();
     3680
     3681    lfcLineLayout.layout();
     3682
     3683    LayoutUnit lineLayoutHeight = lfcLineLayout.contentBoxHeight();
     3684    LayoutUnit lineLayoutTop = borderAndPaddingBefore();
     3685    repaintLogicalTop = lineLayoutTop;
     3686    repaintLogicalBottom = repaintLogicalTop + lineLayoutHeight + borderAndPaddingAfter();
     3687    setLogicalHeight(lineLayoutTop + lineLayoutHeight + borderAndPaddingAfter());
     3688}
     3689#endif
    36433690
    36443691void RenderBlockFlow::ensureLineBoxes()
  • trunk/Source/WebCore/rendering/RenderBlockFlow.h

    r252891 r252893  
    3838class RenderRubyRun;
    3939
     40#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     41namespace Layout {
     42class RenderBlockFlowLineLayout;
     43}
     44#endif
     45
    4046#if ENABLE(TEXT_AUTOSIZING)
    4147enum LineCount {
     
    339345    void invalidateLineLayoutPath() final;
    340346
    341     enum LineLayoutPath { UndeterminedPath = 0, SimpleLinesPath, LineBoxesPath, ForceLineBoxesPath };
     347    enum LineLayoutPath { UndeterminedPath = 0, SimpleLinesPath, LineBoxesPath, LFCPath, ForceLineBoxesPath };
    342348    LineLayoutPath lineLayoutPath() const { return static_cast<LineLayoutPath>(renderBlockFlowLineLayoutPath()); }
    343349    void setLineLayoutPath(LineLayoutPath path) { setRenderBlockFlowLineLayoutPath(path); }
     
    358364    const ComplexLineLayout* complexLineLayout() const;
    359365    ComplexLineLayout* complexLineLayout();
     366#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     367    const Layout::RenderBlockFlowLineLayout* lfcLineLayout() const;
     368    Layout::RenderBlockFlowLineLayout* lfcLineLayout();
     369#endif
    360370
    361371    void ensureLineBoxes();
     
    536546    void layoutSimpleLines(bool relayoutChildren, LayoutUnit& repaintLogicalTop, LayoutUnit& repaintLogicalBottom);
    537547
     548#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     549    bool hasLFCLineLayout() const;
     550    void layoutLFCLines(bool relayoutChildren, LayoutUnit& repaintLogicalTop, LayoutUnit& repaintLogicalBottom);
     551#endif
     552
    538553    void adjustIntrinsicLogicalWidthsForColumns(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const;
    539554    void computeInlinePreferredLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const;
     
    573588
    574589private:
    575     Variant<std::nullptr_t, std::unique_ptr<ComplexLineLayout>, Ref<SimpleLineLayout::Layout>> m_lineLayout;
     590    Variant<
     591        std::nullptr_t,
     592        Ref<SimpleLineLayout::Layout>,
     593#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     594        std::unique_ptr<Layout::RenderBlockFlowLineLayout>,
     595#endif
     596        std::unique_ptr<ComplexLineLayout>
     597    > m_lineLayout;
    576598
    577599    friend class LineBreaker;
     
    610632}
    611633
     634#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     635inline bool RenderBlockFlow::hasLFCLineLayout() const
     636{
     637    return WTF::holds_alternative<std::unique_ptr<Layout::RenderBlockFlowLineLayout>>(m_lineLayout);
     638}
     639
     640inline const Layout::RenderBlockFlowLineLayout* RenderBlockFlow::lfcLineLayout() const
     641{
     642    return hasLFCLineLayout() ? WTF::get<std::unique_ptr<Layout::RenderBlockFlowLineLayout>>(m_lineLayout).get() : nullptr;
     643}
     644
     645inline Layout::RenderBlockFlowLineLayout* RenderBlockFlow::lfcLineLayout()
     646{
     647    return hasLFCLineLayout() ? WTF::get<std::unique_ptr<Layout::RenderBlockFlowLineLayout>>(m_lineLayout).get() : nullptr;
     648}
     649#endif
     650
    612651} // namespace WebCore
    613652
  • trunk/Source/WebKit/ChangeLog

    r252886 r252893  
     12019-11-26  Antti Koivisto  <antti@apple.com>
     2
     3        [LFC][Render tree] Add LFC line layout path to RenderBlockFlow
     4        https://bugs.webkit.org/show_bug.cgi?id=204613
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        * Shared/WebPreferences.yaml:
     9        * WebProcess/InjectedBundle/InjectedBundle.cpp:
     10        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
     11
    1122019-11-26  Carlos Garcia Campos  <cgarcia@igalia.com>
    213
  • trunk/Source/WebKit/Shared/WebPreferences.yaml

    r252840 r252893  
    16431643  type: bool
    16441644  defaultValue: false
    1645   humanReadableName: "Next-gen layout"
    1646   humanReadableDescription: "Enable next-gen layout"
     1645  humanReadableName: "Next-generation layout"
     1646  humanReadableDescription: "Enable next-generation layout"
     1647  category: internal
     1648  webcoreBinding: RuntimeEnabledFeatures
     1649  condition: ENABLE(LAYOUT_FORMATTING_CONTEXT)
     1650
     1651LayoutFormattingContextRenderTreeIntegrationEnabled:
     1652  type: bool
     1653  defaultValue: false
     1654  humanReadableName: "Next-generation inline layout in render tree"
     1655  humanReadableDescription: "Enable next-generation inline layout in render tree"
    16471656  category: internal
    16481657  webcoreBinding: RuntimeEnabledFeatures
  • trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp

    r251950 r252893  
    262262    if (preference == "LayoutFormattingContextEnabled")
    263263        RuntimeEnabledFeatures::sharedFeatures().setLayoutFormattingContextEnabled(enabled);
     264    if (preference == "LayoutFormattingContextRenderTreeIntegrationEnabled")
     265        RuntimeEnabledFeatures::sharedFeatures().setLayoutFormattingContextRenderTreeIntegrationEnabled(enabled);
    264266#endif
    265267
Note: See TracChangeset for help on using the changeset viewer.