Bug 1105611 - Add tests of nsIAccessibleEditableText with contentediable editors which have ::before or ::after, patch=nakano, surkov, r=yzen

This commit is contained in:
Masayuki Nakano 2015-03-03 14:26:02 -05:00
parent c7add0a535
commit 59292b4322
2 changed files with 45 additions and 15 deletions

View File

@ -56,7 +56,7 @@ function editableTextTest(aID)
/**
* setTextContents test.
*/
this.setTextContents = function setTextContents(aValue)
this.setTextContents = function setTextContents(aValue, aSkipStartOffset)
{
var testID = "setTextContents '" + aValue + "' for " + prettyName(aID);
@ -66,9 +66,12 @@ function editableTextTest(aID)
acc.setTextContents(aValue);
}
var insertTripple = aValue ? [0, aValue.length, aValue] : null;
aSkipStartOffset = aSkipStartOffset || 0;
var insertTripple = aValue ?
[ aSkipStartOffset, aSkipStartOffset + aValue.length, aValue ] : null;
var oldValue = getValue(aID);
var removeTripple = oldValue ? [0, oldValue.length, oldValue] : null;
var removeTripple = oldValue ?
[ aSkipStartOffset, aSkipStartOffset + oldValue.length, oldValue ] : null;
this.generateTest(aID, removeTripple, insertTripple, setTextContentsInvoke,
getValueChecker(aID, aValue), testID);

View File

@ -20,22 +20,24 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=452161
<script type="application/javascript">
function addTestEditable(aID, aTestRun)
function addTestEditable(aID, aTestRun, aBeforeContent, aAfterContent)
{
var et = new editableTextTest(aID);
var startOffset = aBeforeContent ? aBeforeContent.length : 0;
// XXX afterContent currently is not used
//////////////////////////////////////////////////////////////////////////
// setTextContents
et.scheduleTest(et.setTextContents, "hello");
et.scheduleTest(et.setTextContents, "olleh");
et.scheduleTest(et.setTextContents, "");
et.scheduleTest(et.setTextContents, "hello", startOffset);
et.scheduleTest(et.setTextContents, "olleh", startOffset);
et.scheduleTest(et.setTextContents, "", startOffset);
//////////////////////////////////////////////////////////////////////////
// insertText
et.scheduleTest(et.insertText, "hello", 0, "hello");
et.scheduleTest(et.insertText, "ma ", 0, "ma hello");
et.scheduleTest(et.insertText, "ma", 2, "mama hello");
et.scheduleTest(et.insertText, " hello", 10, "mama hello hello");
et.scheduleTest(et.insertText, "hello", startOffset, "hello");
et.scheduleTest(et.insertText, "ma ", startOffset, "ma hello");
et.scheduleTest(et.insertText, "ma", startOffset + 2, "mama hello");
et.scheduleTest(et.insertText, " hello", startOffset + 10, "mama hello hello");
// XXX: bug 452584
@ -71,7 +73,10 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=452161
addTestEditable("input", testRun);
addTestEditable("div", testRun);
addTestEditable(getNode("frame").contentDocument, testRun, '\n');
addTestEditable("divb", testRun, "pseudo element", "");
addTestEditable("diva", testRun, "", "pseudo element");
addTestEditable("divba", testRun, "before", "after");
addTestEditable(getNode("frame").contentDocument, testRun);
testRun.run(); // Will call SimpleTest.finish();
}
@ -90,16 +95,35 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=452161
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doTest);
</script>
<style>
#divb::before,
#diva::after {
content: "pseudo element";
}
#divba::before {
content: "before";
}
#divba::after {
content: "after";
}
</style>
</head>
<body>
<a target="_blank"
title="nsIAccessibleEditableText chrome tests"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=452161">Mozilla Bug 452161</a>
href="https://bugzilla.mozilla.org/show_bug.cgi?id=452161">
Bug 452161
</a>
<a target="_blank"
title="Cache rendered text on a11y side"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=626660">
Mozilla Bug 626660
Bug 626660
</a>
<a target="_blank"
title="Pseudo element support test"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1105611">
Bug 1105611
</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
@ -108,7 +132,10 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=452161
<input id="input"/>
<div id="div" contentEditable="true"></div>
<div id="div" contenteditable="true"></div>
<div id="divb" contenteditable="true"></div>
<div id="diva" contenteditable="true"></div>
<div id="divba" contenteditable="true"></div>
<iframe id="frame"/>
</body>