зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1638147 - Introduce tests for MathML accessibility support on mac. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D75425
This commit is contained in:
Родитель
1a6f602dff
Коммит
d623bd478b
|
@ -22,3 +22,4 @@ support-files =
|
|||
[browser_aria_haspopup.js]
|
||||
[browser_required.js]
|
||||
[browser_popupbutton.js]
|
||||
[browser_mathml.js]
|
||||
|
|
|
@ -0,0 +1,151 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
function testMathAttr(iface, attr, subrole, textLeafValue) {
|
||||
ok(iface.attributeNames.includes(attr), `Object has ${attr} attribute`);
|
||||
let value = iface.getAttributeValue(attr);
|
||||
is(
|
||||
value.getAttributeValue("AXSubrole"),
|
||||
subrole,
|
||||
`${attr} value has correct subrole`
|
||||
);
|
||||
|
||||
if (textLeafValue) {
|
||||
let children = value.getAttributeValue("AXChildren");
|
||||
is(children.length, 1, `${attr} value has one child`);
|
||||
|
||||
is(
|
||||
children[0].getAttributeValue("AXRole"),
|
||||
"AXStaticText",
|
||||
`${attr} value's child is static text`
|
||||
);
|
||||
is(
|
||||
children[0].getAttributeValue("AXValue"),
|
||||
textLeafValue,
|
||||
`${attr} value has correct text`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
addAccessibleTask(
|
||||
`<math id="math">
|
||||
<msqrt id="sqrt">
|
||||
<mi>-1</mi>
|
||||
</msqrt>
|
||||
</math>`,
|
||||
async (browser, accDoc) => {
|
||||
let math = getNativeInterface(accDoc, "math");
|
||||
is(
|
||||
math.getAttributeValue("AXSubrole"),
|
||||
"AXDocumentMath",
|
||||
"Math element has correct subrole"
|
||||
);
|
||||
|
||||
let sqrt = getNativeInterface(accDoc, "sqrt");
|
||||
is(
|
||||
sqrt.getAttributeValue("AXSubrole"),
|
||||
"AXMathSquareRoot",
|
||||
"msqrt has correct subrole"
|
||||
);
|
||||
|
||||
testMathAttr(sqrt, "AXMathRootRadicand", "AXMathIdentifier", "-1");
|
||||
}
|
||||
);
|
||||
|
||||
addAccessibleTask(
|
||||
`<math>
|
||||
<mroot id="root">
|
||||
<mi>x</mi>
|
||||
<mn>3</mn>
|
||||
</mroot>
|
||||
</math>`,
|
||||
async (browser, accDoc) => {
|
||||
let root = getNativeInterface(accDoc, "root");
|
||||
is(
|
||||
root.getAttributeValue("AXSubrole"),
|
||||
"AXMathRoot",
|
||||
"mroot has correct subrole"
|
||||
);
|
||||
|
||||
testMathAttr(root, "AXMathRootRadicand", "AXMathIdentifier", "x");
|
||||
testMathAttr(root, "AXMathRootIndex", "AXMathNumber", "3");
|
||||
}
|
||||
);
|
||||
|
||||
addAccessibleTask(
|
||||
`<math>
|
||||
<mfrac id="fraction">
|
||||
<mi>a</mi>
|
||||
<mi>b</mi>
|
||||
</mfrac>
|
||||
</math>`,
|
||||
async (browser, accDoc) => {
|
||||
let fraction = getNativeInterface(accDoc, "fraction");
|
||||
is(
|
||||
fraction.getAttributeValue("AXSubrole"),
|
||||
"AXMathFraction",
|
||||
"mfrac has correct subrole"
|
||||
);
|
||||
ok(fraction.attributeNames.includes("AXMathFractionNumerator"));
|
||||
ok(fraction.attributeNames.includes("AXMathFractionDenominator"));
|
||||
ok(fraction.attributeNames.includes("AXMathLineThickness"));
|
||||
|
||||
// Bug 1639745
|
||||
todo_is(fraction.getAttributeValue("AXMathLineThickness"), 1);
|
||||
|
||||
testMathAttr(fraction, "AXMathFractionNumerator", "AXMathIdentifier", "a");
|
||||
testMathAttr(
|
||||
fraction,
|
||||
"AXMathFractionDenominator",
|
||||
"AXMathIdentifier",
|
||||
"b"
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
addAccessibleTask(
|
||||
`<math>
|
||||
<msubsup id="subsup">
|
||||
<mo>∫</mo>
|
||||
<mn>0</mn>
|
||||
<mn>1</mn>
|
||||
</msubsup>
|
||||
</math>`,
|
||||
async (browser, accDoc) => {
|
||||
let subsup = getNativeInterface(accDoc, "subsup");
|
||||
is(
|
||||
subsup.getAttributeValue("AXSubrole"),
|
||||
"AXMathSubscriptSuperscript",
|
||||
"msubsup has correct subrole"
|
||||
);
|
||||
|
||||
testMathAttr(subsup, "AXMathSubscript", "AXMathNumber", "0");
|
||||
testMathAttr(subsup, "AXMathSuperscript", "AXMathNumber", "1");
|
||||
testMathAttr(subsup, "AXMathBase", "AXMathOperator", "∫");
|
||||
}
|
||||
);
|
||||
|
||||
addAccessibleTask(
|
||||
`<math>
|
||||
<munderover id="underover">
|
||||
<mo>∫</mo>
|
||||
<mn>0</mn>
|
||||
<mi>∞</mi>
|
||||
</munderover>
|
||||
</math>`,
|
||||
async (browser, accDoc) => {
|
||||
let underover = getNativeInterface(accDoc, "underover");
|
||||
is(
|
||||
underover.getAttributeValue("AXSubrole"),
|
||||
"AXMathUnderOver",
|
||||
"munderover has correct subrole"
|
||||
);
|
||||
|
||||
testMathAttr(underover, "AXMathUnder", "AXMathNumber", "0");
|
||||
testMathAttr(underover, "AXMathOver", "AXMathIdentifier", "∞");
|
||||
testMathAttr(underover, "AXMathBase", "AXMathOperator", "∫");
|
||||
}
|
||||
);
|
Загрузка…
Ссылка в новой задаче