Title: [285324] trunk/Source/WebCore
- Revision
- 285324
- Author
- [email protected]
- Date
- 2021-11-04 18:35:44 -0700 (Thu, 04 Nov 2021)
Log Message
[LFC][IFC] Use objectReplacementCharacter to mark atomic inline box position.
https://bugs.webkit.org/show_bug.cgi?id=232718
Reviewed by Antti Koivisto.
objectReplacementCharacter is input to the bidi code as atomic inline level box marker.
* layout/formattingContexts/inline/InlineItemsBuilder.cpp:
(WebCore::Layout::InlineItemsBuilder::handleInlineLevelBox):
(WebCore::Layout::InlineItemsBuilder::buildPreviousTextContent): Take the atomic inline level boxes into account when building previous content for bidi processing.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (285323 => 285324)
--- trunk/Source/WebCore/ChangeLog 2021-11-05 01:01:37 UTC (rev 285323)
+++ trunk/Source/WebCore/ChangeLog 2021-11-05 01:35:44 UTC (rev 285324)
@@ -1,3 +1,16 @@
+2021-11-04 Alan Bujtas <[email protected]>
+
+ [LFC][IFC] Use objectReplacementCharacter to mark atomic inline box position.
+ https://bugs.webkit.org/show_bug.cgi?id=232718
+
+ Reviewed by Antti Koivisto.
+
+ objectReplacementCharacter is input to the bidi code as atomic inline level box marker.
+
+ * layout/formattingContexts/inline/InlineItemsBuilder.cpp:
+ (WebCore::Layout::InlineItemsBuilder::handleInlineLevelBox):
+ (WebCore::Layout::InlineItemsBuilder::buildPreviousTextContent): Take the atomic inline level boxes into account when building previous content for bidi processing.
+
2021-11-04 Kate Cheney <[email protected]>
Form action with a redirect should report correct blocked URI
Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp (285323 => 285324)
--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp 2021-11-05 01:01:37 UTC (rev 285323)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp 2021-11-05 01:35:44 UTC (rev 285324)
@@ -402,11 +402,17 @@
void InlineItemsBuilder::handleInlineLevelBox(const Box& layoutBox, InlineItems& inlineItems)
{
- if (layoutBox.isAtomicInlineLevelBox())
- return inlineItems.append({ layoutBox, InlineItem::Type::Box });
+ if (layoutBox.isAtomicInlineLevelBox()) {
+ inlineItems.append({ layoutBox, InlineItem::Type::Box });
+ if (hasSeenBidiContent())
+ m_paragraphContentBuilder.append(objectReplacementCharacter);
+ return;
+ }
- if (layoutBox.isLineBreakBox())
+ if (layoutBox.isLineBreakBox()) {
+ // FIXME: Figure out what (if any) character to append to the bidi paragraph.
return inlineItems.append({ layoutBox, downcast<LineBreakBox>(layoutBox).isOptional() ? InlineItem::Type::WordBreakOpportunity : InlineItem::Type::HardLineBreak });
+ }
ASSERT_NOT_REACHED();
}
@@ -431,18 +437,19 @@
ASSERT(!hasSeenBidiContent());
ASSERT(m_contentOffsetMap.isEmpty());
- const Box* lastLayoutBox = nullptr;
+ const Box* lastInlineTextBox = nullptr;
for (auto& inlineItem : inlineItems) {
- if (!inlineItem.isText())
- continue;
- auto& layoutBox = inlineItem.layoutBox();
- if (lastLayoutBox == &layoutBox) {
- // We've already appended this content.
- continue;
- }
- m_contentOffsetMap.set(&layoutBox, m_paragraphContentBuilder.length());
- m_paragraphContentBuilder.append(downcast<InlineTextBox>(layoutBox).content());
- lastLayoutBox = &layoutBox;
+ if (inlineItem.isText()) {
+ auto& layoutBox = inlineItem.layoutBox();
+ if (lastInlineTextBox != &layoutBox) {
+ m_contentOffsetMap.set(&layoutBox, m_paragraphContentBuilder.length());
+ m_paragraphContentBuilder.append(downcast<InlineTextBox>(layoutBox).content());
+ lastInlineTextBox = &layoutBox;
+ }
+ } else if (inlineItem.isBox())
+ m_paragraphContentBuilder.append(objectReplacementCharacter);
+ else
+ ASSERT_NOT_IMPLEMENTED_YET();
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes