blob: 6da6959fff142f60190ae89631a9b3369c591526 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview using private properties isn't a Closure violation in tests.
* @suppress {accessControls}
*/
AccessibilityTestRunner.accessibilitySidebarPane = function() {
return self.runtime.sharedInstance(Accessibility.AccessibilitySidebarView);
};
AccessibilityTestRunner.selectNodeAndWaitForAccessibility = function(idValue) {
return new Promise(resolve => {
ElementsTestRunner.selectNodeWithId(idValue, function() {
self.runtime.sharedInstance(Accessibility.AccessibilitySidebarView).doUpdate().then(resolve);
});
});
};
AccessibilityTestRunner.dumpSelectedElementAccessibilityNode = function() {
const sidebarPane = AccessibilityTestRunner.accessibilitySidebarPane();
if (!sidebarPane) {
TestRunner.addResult('No sidebarPane in dumpSelectedElementAccessibilityNode');
TestRunner.completeTest();
return;
}
AccessibilityTestRunner.dumpAccessibilityNode(sidebarPane._axNodeSubPane._axNode);
};
AccessibilityTestRunner.dumpAccessibilityNode = function(accessibilityNode) {
if (!accessibilityNode) {
TestRunner.addResult('<null>');
TestRunner.completeTest();
return;
}
const builder = [];
builder.push(accessibilityNode.role().value);
builder.push((accessibilityNode.name() ? '"' + accessibilityNode.name().value + '"' : '<undefined>'));
if (accessibilityNode.properties()) {
for (const property of accessibilityNode.properties()) {
if ('value' in property)
builder.push(property.name + '="' + property.value.value + '"');
}
}
TestRunner.addResult(builder.join(' '));
};
AccessibilityTestRunner.findARIAAttributeTreeElement = function(attribute) {
const sidebarPane = AccessibilityTestRunner.accessibilitySidebarPane();
if (!sidebarPane) {
TestRunner.addResult('Could not get Accessibility sidebar pane.');
TestRunner.completeTest();
return;
}
const ariaSubPane = sidebarPane._ariaSubPane;
const treeOutline = ariaSubPane._treeOutline;
const childNodes = treeOutline._rootElement._children;
for (const treeElement of childNodes) {
if (treeElement._attribute.name === attribute)
return treeElement;
}
return null;
};