Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* 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";
/* import-globals-from ../../mochitest/attributes.js */
loadScripts({ name: "attributes.js", dir: MOCHITESTS_DIR });
addAccessibleTask(
"mac/doc_tree.xhtml",
async (browser, accDoc) => {
const tree = getNativeInterface(accDoc, "tree");
is(
tree.getAttributeValue("AXRole"),
"AXOutline",
"Found tree with role outline"
);
// XUL trees store all rows as direct children of the outline,
// so we should see nine here instead of just three:
// (Groceries, Fruits, Veggies)
const treeChildren = tree.getAttributeValue("AXChildren");
is(treeChildren.length, 9, "Found nine direct children");
const treeCols = tree.getAttributeValue("AXColumns");
is(treeCols.length, 1, "Found one column in tree");
// Here, we should get only outline rows, not the title
const treeRows = tree.getAttributeValue("AXRows");
is(treeRows.length, 8, "Found 8 total rows");
is(
treeRows[0].getAttributeValue("AXDescription"),
"Fruits",
"Located correct first row, row has correct desc"
);
is(
treeRows[0].getAttributeValue("AXDisclosing"),
1,
"Fruits is disclosing"
);
is(
treeRows[0].getAttributeValue("AXDisclosedByRow"),
null,
"Fruits is disclosed by outline"
);
is(
treeRows[0].getAttributeValue("AXDisclosureLevel"),
0,
"Fruits is level zero"
);
let disclosedRows = treeRows[0].getAttributeValue("AXDisclosedRows");
is(disclosedRows.length, 2, "Fruits discloses two rows");
is(
disclosedRows[0].getAttributeValue("AXDescription"),
"Apple",
"fruits discloses apple"
);
is(
disclosedRows[1].getAttributeValue("AXDescription"),
"Orange",
"fruits discloses orange"
);
is(
treeRows[1].getAttributeValue("AXDescription"),
"Apple",
"Located correct second row, row has correct desc"
);
is(
treeRows[1].getAttributeValue("AXDisclosing"),
0,
"Apple is not disclosing"
);
is(
treeRows[1]
.getAttributeValue("AXDisclosedByRow")
.getAttributeValue("AXDescription"),
"Fruits",
"Apple is disclosed by fruits"
);
is(
treeRows[1].getAttributeValue("AXDisclosureLevel"),
1,
"Apple is level one"
);
is(
treeRows[1].getAttributeValue("AXDisclosedRows").length,
0,
"Apple does not disclose rows"
);
is(
treeRows[2].getAttributeValue("AXDescription"),
"Orange",
"Located correct third row, row has correct desc"
);
is(
treeRows[2].getAttributeValue("AXDisclosing"),
0,
"Orange is not disclosing"
);
is(
treeRows[2]
.getAttributeValue("AXDisclosedByRow")
.getAttributeValue("AXDescription"),
"Fruits",
"Orange is disclosed by fruits"
);
is(
treeRows[2].getAttributeValue("AXDisclosureLevel"),
1,
"Orange is level one"
);
is(
treeRows[2].getAttributeValue("AXDisclosedRows").length,
0,
"Orange does not disclose rows"
);
is(
treeRows[3].getAttributeValue("AXDescription"),
"Veggies",
"Located correct fourth row, row has correct desc"
);
is(
treeRows[3].getAttributeValue("AXDisclosing"),
1,
"Veggies is disclosing"
);
is(
treeRows[3].getAttributeValue("AXDisclosedByRow"),
null,
"Veggies is disclosed by outline"
);
is(
treeRows[3].getAttributeValue("AXDisclosureLevel"),
0,
"Veggies is level zero"
);
disclosedRows = treeRows[3].getAttributeValue("AXDisclosedRows");
is(disclosedRows.length, 2, "Veggies discloses two rows");
is(
disclosedRows[0].getAttributeValue("AXDescription"),
"Green Veggies",
"Veggies discloses green veggies"
);
is(
disclosedRows[1].getAttributeValue("AXDescription"),
"Squash",
"Veggies discloses squash"
);
is(
treeRows[4].getAttributeValue("AXDescription"),
"Green Veggies",
"Located correct fifth row, row has correct desc"
);
is(
treeRows[4].getAttributeValue("AXDisclosing"),
1,
"Green veggies is disclosing"
);
is(
treeRows[4]
.getAttributeValue("AXDisclosedByRow")
.getAttributeValue("AXDescription"),
"Veggies",
"Green Veggies is disclosed by veggies"
);
is(
treeRows[4].getAttributeValue("AXDisclosureLevel"),
1,
"Green veggies is level one"
);
disclosedRows = treeRows[4].getAttributeValue("AXDisclosedRows");
is(disclosedRows.length, 2, "Green veggies has two rows");
is(
disclosedRows[0].getAttributeValue("AXDescription"),
"Spinach",
"Green veggies discloses spinach"
);
is(
disclosedRows[1].getAttributeValue("AXDescription"),
"Peas",
"Green veggies discloses peas"
);
is(
treeRows[5].getAttributeValue("AXDescription"),
"Spinach",
"Located correct sixth row, row has correct desc"
);
is(
treeRows[5].getAttributeValue("AXDisclosing"),
0,
"Spinach is not disclosing"
);
is(
treeRows[5]
.getAttributeValue("AXDisclosedByRow")
.getAttributeValue("AXDescription"),
"Green Veggies",
"Spinach is disclosed by green veggies"
);
is(
treeRows[5].getAttributeValue("AXDisclosureLevel"),
2,
"Spinach is level two"
);
is(
treeRows[5].getAttributeValue("AXDisclosedRows").length,
0,
"Spinach does not disclose rows"
);
is(
treeRows[6].getAttributeValue("AXDescription"),
"Peas",
"Located correct seventh row, row has correct desc"
);
is(
treeRows[6].getAttributeValue("AXDisclosing"),
0,
"Peas is not disclosing"
);
is(
treeRows[6]
.getAttributeValue("AXDisclosedByRow")
.getAttributeValue("AXDescription"),
"Green Veggies",
"Peas is disclosed by green veggies"
);
is(
treeRows[6].getAttributeValue("AXDisclosureLevel"),
2,
"Peas is level two"
);
is(
treeRows[6].getAttributeValue("AXDisclosedRows").length,
0,
"Peas does not disclose rows"
);
is(
treeRows[7].getAttributeValue("AXDescription"),
"Squash",
"Located correct eighth row, row has correct desc"
);
is(
treeRows[7].getAttributeValue("AXDisclosing"),
0,
"Squash is not disclosing"
);
is(
treeRows[7]
.getAttributeValue("AXDisclosedByRow")
.getAttributeValue("AXDescription"),
"Veggies",
"Squash is disclosed by veggies"
);
is(
treeRows[7].getAttributeValue("AXDisclosureLevel"),
1,
"Squash is level one"
);
is(
treeRows[7].getAttributeValue("AXDisclosedRows").length,
0,
"Squash does not disclose rows"
);
},
{ topLevel: false, chrome: true }
);