Bug 1939220 - part 6: Make TextFragmentData free from the editing host r=m_kato

It stores the editing host. However, its role is scan the DOM from a point in
a block containing the point.  Therefore, it can know which node is editing
host when it scans without computing the editing host.  So, it does not need
to be specified the editing host.

Then, it can scan non-editable DOM too.  Therefore, this extends some utility
methods of `HTMLEditUtils` which are used by `TextFragmentData` and
`BoundaryData`.

Differential Revision: https://phabricator.services.mozilla.com/D232937
This commit is contained in:
Masayuki Nakano
2025-01-20 08:03:59 +00:00
parent 0e10d664fc
commit c6b4e944ef
11 changed files with 233 additions and 209 deletions

View File

@@ -1250,7 +1250,7 @@ Result<EditActionResult, nsresult> HTMLEditor::HandleInsertText(
WhiteSpaceVisibilityKeeper::ReplaceText(
*this, aInsertionString,
EditorDOMRange(pointToInsert, compositionEndPoint),
InsertTextTo::ExistingTextNodeIfAvailable, *editingHost);
InsertTextTo::ExistingTextNodeIfAvailable);
if (MOZ_UNLIKELY(replaceTextResult.isErr())) {
NS_WARNING("WhiteSpaceVisibilityKeeper::ReplaceText() failed");
return replaceTextResult.propagateErr();
@@ -1452,15 +1452,14 @@ Result<EditActionResult, nsresult> HTMLEditor::HandleInsertText(
if (!lineText.Contains(u'\t')) {
return WhiteSpaceVisibilityKeeper::InsertText(
*this, lineText, currentPoint,
GetInsertTextTo(inclusiveNextLinefeedOffset, lineStartOffset),
*editingHost);
GetInsertTextTo(inclusiveNextLinefeedOffset,
lineStartOffset));
}
nsAutoString formattedLineText(lineText);
formattedLineText.ReplaceSubstring(u"\t"_ns, u" "_ns);
return WhiteSpaceVisibilityKeeper::InsertText(
*this, formattedLineText, currentPoint,
GetInsertTextTo(inclusiveNextLinefeedOffset, lineStartOffset),
*editingHost);
GetInsertTextTo(inclusiveNextLinefeedOffset, lineStartOffset));
}();
if (MOZ_UNLIKELY(insertTextResult.isErr())) {
NS_WARNING("WhiteSpaceVisibilityKeeper::InsertText() failed");
@@ -1481,8 +1480,8 @@ Result<EditActionResult, nsresult> HTMLEditor::HandleInsertText(
}
Result<CreateLineBreakResult, nsresult> insertLineBreakResultOrError =
WhiteSpaceVisibilityKeeper::InsertLineBreak(
*lineBreakType, *this, currentPoint, *editingHost);
WhiteSpaceVisibilityKeeper::InsertLineBreak(*lineBreakType, *this,
currentPoint);
if (MOZ_UNLIKELY(insertLineBreakResultOrError.isErr())) {
NS_WARNING(
nsPrintfCString(
@@ -1701,8 +1700,7 @@ nsresult HTMLEditor::InsertLineBreakAsSubAction() {
Result<CreateLineBreakResult, nsresult>
insertPaddingBRElementResultOrError =
WhiteSpaceVisibilityKeeper::InsertLineBreak(
LineBreakType::BRElement, *this, pointToPutCaret,
*editingHost);
LineBreakType::BRElement, *this, pointToPutCaret);
if (MOZ_UNLIKELY(insertPaddingBRElementResultOrError.isErr())) {
NS_WARNING(
"WhiteSpaceVisibilityKeeper::InsertLineBreak(LineBreakType::"
@@ -2404,8 +2402,8 @@ Result<CreateElementResult, nsresult> HTMLEditor::HandleInsertBRElement(
splitLinkNodeResult.inspect().AtSplitPoint<EditorDOMPoint>();
}
Result<CreateLineBreakResult, nsresult> insertBRElementResultOrError =
WhiteSpaceVisibilityKeeper::InsertLineBreak(
LineBreakType::BRElement, *this, pointToBreak, aEditingHost);
WhiteSpaceVisibilityKeeper::InsertLineBreak(LineBreakType::BRElement,
*this, pointToBreak);
if (MOZ_UNLIKELY(insertBRElementResultOrError.isErr())) {
NS_WARNING(
"WhiteSpaceVisibilityKeeper::InsertLineBreak(LineBreakType::"
@@ -2434,7 +2432,7 @@ Result<CreateElementResult, nsresult> HTMLEditor::HandleInsertBRElement(
Result<CreateLineBreakResult, nsresult>
insertPaddingBRElementResultOrError =
WhiteSpaceVisibilityKeeper::InsertLineBreak(
LineBreakType::BRElement, *this, afterBRElement, aEditingHost);
LineBreakType::BRElement, *this, afterBRElement);
NS_WARNING_ASSERTION(insertPaddingBRElementResultOrError.isOk(),
"WhiteSpaceVisibilityKeeper::InsertLineBreak("
"LineBreakType::BRElement) failed");