/* 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( ` 2 `, 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", "AXMathNumber", "2"); } ); addAccessibleTask( ` sin 3 `, async (browser, accDoc) => { let root = getNativeInterface(accDoc, "root"); is( root.getAttributeValue("AXSubrole"), "AXMathRoot", "mroot has correct subrole" ); testMathAttr(root, "AXMathRootRadicand", "AXMathIdentifier", "sin"); testMathAttr(root, "AXMathRootIndex", "AXMathNumber", "3"); } ); addAccessibleTask( ` 2 3 `, 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", "AXMathNumber", "2"); testMathAttr(fraction, "AXMathFractionDenominator", "AXMathNumber", "3"); } ); addAccessibleTask( ` 0 1 `, 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( ` 0 `, 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", "∫"); } );