[webkit-changes] [WebKit/WebKit] b1f1e0: [IFC] fast/canvas/imageData-consistency.html is a ...

Alan Baradlay noreply at github.com
Tue Sep 12 11:52:23 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b1f1e04f4d8db6c4ddbe79c0102e55f6e557ad44
      https://github.com/WebKit/WebKit/commit/b1f1e04f4d8db6c4ddbe79c0102e55f6e557ad44
  Author: Alan Baradlay <zalan at apple.com>
  Date:   2023-09-12 (Tue, 12 Sep 2023)

  Changed paths:
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingState.h
    M Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp
    M Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp

  Log Message:
  -----------
  [IFC] fast/canvas/imageData-consistency.html is a flaky timeout in debug
https://bugs.webkit.org/show_bug.cgi?id=261452

Reviewed by Antti Koivisto.

fast/canvas/imageData-consistency.html produces over 30K boxes by appending multiple
boxes at a time followed by a forced layout.
Calling LineLayout::contentNeedsVisualReordering in debug mode on such an extended content is costly.

This patch caches the "content needs visual reordering" bit during inline items building so that
we don't have to traverse the content at invalidation time to see if it is eligible for partial layout.

Introducing this bit also helps with the upcoming bidi content invalidation.

* Source/WebCore/layout/formattingContexts/inline/InlineFormattingState.h:
(WebCore::Layout::InlineFormattingState::setContentRequiresVisualReordering):
(WebCore::Layout::InlineFormattingState::contentRequiresVisualReordering const):
* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp:
(WebCore::Layout::requiresVisualReordering):
(WebCore::Layout::InlineItemsBuilder::traverseUntilDamaged):
(WebCore::Layout::InlineItemsBuilder::initializeLayoutQueue): remove redundant check. traverseUntilDamaged takes care of the first child.
(WebCore::Layout::InlineItemsBuilder::collectInlineItems):
(WebCore::Layout::InlineItemsBuilder::handleTextContent):
(WebCore::Layout::InlineItemsBuilder::handleInlineBoxStart):
(WebCore::Layout::isNonBidiTextOrForcedLineBreak): Deleted.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::contentNeedsVisualReordering const):

Canonical link: https://commits.webkit.org/267910@main




More information about the webkit-changes mailing list