fune/widget/tests/test_composition_text_querycontent.xhtml
Masayuki Nakano 91fed01266 Bug 1723895 - Make WhiteSpaceVisibilityKeeper::ReplaceText() call GetInclusiveNextNBSPPointIfNeedToReplaceWithASCIIWhiteSpace with end of the replacing range instead of start of it r=m_kato
It tries to replace a following NBSP with an ASCII white-space if there is.
However, it calls the scan method with start of the replacing range.  Therefore,
the assertion in `GetInclusiveNextNBSPPointIfNeedToReplaceWithASCIIWhiteSpace()`
detects this bug.

Note that this occurs only when updating composition string because it's
called with non-collapsed range only for doing it.  Otherwise, selected range
has already been deleted by `HTMLEditor::DeleteSelectionAsSubAction()`.

Unfortunately, I don't have how to make this bug appear.  It seems that the
path does nothing in the wild because it tries to replace a first character
of composition string from an NBSP to a normal white-space, but it'll be
replaced with new composition string anyway.  Therefore, this patch does not
have new tests.

Differential Revision: https://phabricator.services.mozilla.com/D122182
2021-08-10 23:41:19 +00:00

34 lines
1.2 KiB
HTML

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window title="Testing composition, text and query content events"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
<body xmlns="http://www.w3.org/1999/xhtml">
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
<script class="testbody" type="application/javascript">
<![CDATA[
// 3 assertions are: If setting selection with eSetSelection event whose range
// is larger than the actual range, hits "Can only call this on frames that have
// been reflowed:
// '!(GetStateBits() & NS_FRAME_FIRST_REFLOW) || (GetParent()->GetStateBits() &
// NS_FRAME_TOO_DEEP_IN_FRAME_TREE)'" in nsTextFrame.cpp.
// Strangely, this doesn't occur with RDP on Windows.
SimpleTest.expectAssertions(0, 3);
SimpleTest.waitForExplicitFinish();
window.openDialog("window_composition_text_querycontent.xhtml", "_blank",
"chrome,width=600,height=600,noopener", window);
]]>
</script>
</window>