274 lines
7.1 KiB
JavaScript
274 lines
7.1 KiB
JavaScript
/* 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 }
|
|
);
|