Backed out 2 changesets (bug 1840822) editor/libeditor/tests/test_htmleditor_keyevent_handling.html CLOSED TREE

Backed out changeset a4bcffd471cb (bug 1840822)
Backed out changeset 8d5b2fe1fb51 (bug 1840822)
This commit is contained in:
Sandor Molnar 2023-07-06 16:07:49 +03:00
parent 2379727c92
commit a81a88f6b1
3 changed files with 290 additions and 69 deletions

View File

@ -1565,43 +1565,23 @@ nsresult HTMLEditor::InsertLineBreakAsSubAction() {
CreateElementResult unwrappedInsertBRElementResult =
insertBRElementResult.unwrap();
MOZ_ASSERT(unwrappedInsertBRElementResult.GetNewNode());
unwrappedInsertBRElementResult.IgnoreCaretPointSuggestion();
auto pointToPutCaret =
EditorDOMPoint::After(*unwrappedInsertBRElementResult.GetNewNode());
WSScanResult forwardScanFromAfterBRElementResult =
WSRunScanner::ScanNextVisibleNodeOrBlockBoundary(editingHost,
pointToPutCaret);
if (MOZ_UNLIKELY(forwardScanFromAfterBRElementResult.Failed())) {
NS_WARNING("WSRunScanner::ScanNextVisibleNodeOrBlockBoundary() failed");
return Err(NS_ERROR_FAILURE);
}
if (forwardScanFromAfterBRElementResult.ReachedBlockBoundary()) {
// Empty last line is invisible if it's immediately before either parent
// or another block's boundary so that we need to put invisible <br>
// element here for making it visible.
Result<CreateElementResult, nsresult> invisibleAdditionalBRElementResult =
WhiteSpaceVisibilityKeeper::InsertBRElement(*this, pointToPutCaret,
*editingHost);
if (MOZ_UNLIKELY(invisibleAdditionalBRElementResult.isErr())) {
NS_WARNING("WhiteSpaceVisibilityKeeper::InsertBRElement() failed");
return invisibleAdditionalBRElementResult.unwrapErr();
// Next inserting text should be inserted into styled inline elements if
// they have first visible thing in the new line.
auto pointToPutCaret = [&]() -> EditorDOMPoint {
WSScanResult forwardScanResult =
WSRunScanner::ScanNextVisibleNodeOrBlockBoundary(
editingHost, EditorRawDOMPoint::After(
*unwrappedInsertBRElementResult.GetNewNode()));
if (forwardScanResult.InVisibleOrCollapsibleCharacters()) {
unwrappedInsertBRElementResult.IgnoreCaretPointSuggestion();
return forwardScanResult.Point<EditorDOMPoint>();
}
CreateElementResult unwrappedInvisibleAdditionalBRElement =
invisibleAdditionalBRElementResult.unwrap();
pointToPutCaret.Set(unwrappedInvisibleAdditionalBRElement.GetNewNode());
unwrappedInvisibleAdditionalBRElement.IgnoreCaretPointSuggestion();
} else if (forwardScanFromAfterBRElementResult
.InVisibleOrCollapsibleCharacters()) {
pointToPutCaret =
forwardScanFromAfterBRElementResult.Point<EditorDOMPoint>();
} else if (forwardScanFromAfterBRElementResult.ReachedSpecialContent()) {
// Next inserting text should be inserted into styled inline elements if
// they have first visible thing in the new line.
pointToPutCaret =
forwardScanFromAfterBRElementResult.PointAtContent<EditorDOMPoint>();
}
if (forwardScanResult.ReachedSpecialContent()) {
unwrappedInsertBRElementResult.IgnoreCaretPointSuggestion();
return forwardScanResult.PointAtContent<EditorDOMPoint>();
}
return unwrappedInsertBRElementResult.UnwrapCaretPoint();
}();
nsresult rv = CollapseSelectionTo(pointToPutCaret);
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
@ -2186,7 +2166,6 @@ Result<CreateElementResult, nsresult> HTMLEditor::HandleInsertBRElement(
MOZ_ASSERT(IsEditActionDataAvailable());
bool brElementIsAfterBlock = false, brElementIsBeforeBlock = false;
const bool editingHostIsEmpty = HTMLEditUtils::IsEmptyNode(aEditingHost);
// First, insert a <br> element.
RefPtr<Element> brElement;
@ -2272,25 +2251,6 @@ Result<CreateElementResult, nsresult> HTMLEditor::HandleInsertBRElement(
NS_WARNING("Inserted <br> element was removed by the web app");
return Err(NS_ERROR_EDITOR_UNEXPECTED_DOM_TREE);
}
auto afterBRElement = EditorDOMPoint::After(brElement);
auto InsertAdditionalInvisibleLineBreak =
[&]() MOZ_CAN_RUN_SCRIPT -> Result<CreateElementResult, nsresult> {
// Empty last line is invisible if it's immediately before either parent or
// another block's boundary so that we need to put invisible <br> element
// here for making it visible.
Result<CreateElementResult, nsresult> invisibleAdditionalBRElementResult =
WhiteSpaceVisibilityKeeper::InsertBRElement(*this, afterBRElement,
aEditingHost);
if (MOZ_UNLIKELY(invisibleAdditionalBRElementResult.isErr())) {
NS_WARNING("WhiteSpaceVisibilityKeeper::InsertBRElement() failed");
return invisibleAdditionalBRElementResult;
}
afterBRElement.Set(
invisibleAdditionalBRElementResult.inspect().GetNewNode());
invisibleAdditionalBRElementResult.inspect().IgnoreCaretPointSuggestion();
return invisibleAdditionalBRElementResult;
};
if (brElementIsAfterBlock && brElementIsBeforeBlock) {
// We just placed a <br> between block boundaries. This is the one case
@ -2299,19 +2259,13 @@ Result<CreateElementResult, nsresult> HTMLEditor::HandleInsertBRElement(
// XXX brElementIsAfterBlock and brElementIsBeforeBlock were set before
// modifying the DOM tree. So, now, the <br> element may not be
// between blocks.
if (editingHostIsEmpty) {
auto invisibleAdditionalBRElementResult =
InsertAdditionalInvisibleLineBreak();
if (invisibleAdditionalBRElementResult.isErr()) {
return invisibleAdditionalBRElementResult;
}
}
EditorDOMPoint pointToPutCaret(brElement,
InterlinePosition::StartOfNextLine);
return CreateElementResult(std::move(brElement),
std::move(pointToPutCaret));
}
auto afterBRElement = EditorDOMPoint::After(brElement);
WSScanResult forwardScanFromAfterBRElementResult =
WSRunScanner::ScanNextVisibleNodeOrBlockBoundary(&aEditingHost,
afterBRElement);
@ -2350,12 +2304,6 @@ Result<CreateElementResult, nsresult> HTMLEditor::HandleInsertBRElement(
rv != NS_SUCCESS_EDITOR_BUT_IGNORED_TRIVIAL_ERROR,
"MoveNodeResult::SuggestCaretPointTo() failed, but ignored");
}
} else if (forwardScanFromAfterBRElementResult.ReachedBlockBoundary()) {
auto invisibleAdditionalBRElementResult =
InsertAdditionalInvisibleLineBreak();
if (invisibleAdditionalBRElementResult.isErr()) {
return invisibleAdditionalBRElementResult;
}
}
// We want the caret to stick to whatever is past the break. This is because

View File

@ -59,6 +59,36 @@
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=block&method=enter]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[insertParagraph in <span contenteditable style="display:block;white-space:normal">{}</span> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">{}</span> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=pre-line&display=inline&method=shift-enter]
@ -297,6 +327,30 @@
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=inline-block&method=shift-enter]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=pre-wrap&display=list-item&method=enter]
[insertParagraph in <span contenteditable style="display:list-item;white-space:pre-wrap">{}</span> (defaultParagraphSeparator=div)]
@ -477,14 +531,128 @@
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=inline&method=enter]
expected:
if (os == "android") and fission: [TIMEOUT, OK]
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">{}</span> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">{}</span> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=list-item&method=enter]
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">{}</span> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">{}</span> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=inline-block&method=enter]
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">{}</span> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">{}</span> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:inline-block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=inline&method=shift-enter]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:inline;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=pre-line&display=list-item&method=enter]
[insertParagraph in <span contenteditable style="display:list-item;white-space:pre-line">{}</span> (defaultParagraphSeparator=div)]
@ -605,6 +773,30 @@
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=list-item&method=shift-enter]
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:list-item;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=pre-wrap&display=inline-block&method=enter]
expected:
@ -841,12 +1033,90 @@
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=table-cell&method=shift-enter]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=block&method=shift-enter]
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertLineBreak in <span contenteditable style="display:block;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=normal&display=table-cell&method=enter]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">{}</span> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=div)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">{}</span> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by a <br> (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">{}</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by a <br> element (defaultParagraphSeparator=p)]
expected: FAIL
[insertParagraph in <span contenteditable style="display:table-cell;white-space:normal">abcd[\]</span> followed by text (defaultParagraphSeparator=p)]
expected: FAIL
[insertparagraph-in-inline-editing-host.tentative.html?white-space=pre-line&display=block&method=shift-enter]
expected:

View File

@ -34,6 +34,9 @@
[[["insertlinebreak",""\]\] "<table><tr><td>[foo<td>bar\]<tr><td>baz<td>quz</table>" compare innerHTML]
expected: FAIL
[[["insertlinebreak",""\]\] "<div>abc[\] </div>" compare innerHTML]
expected: FAIL
[[["insertlinebreak",""\]\] "<div>abc [\] </div>" compare innerHTML]
expected: FAIL