<!DOCTYPE HTML>
<script src="../resources/gc.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<!--
Accessibility Object Model
Explainer: https://github.com/WICG/aom/blob/gh-pages/explainer.md
Spec: https://wicg.github.io/aom/spec/
-->
<script>
if (window.internals)
internals.runtimeFlags.accessibilityObjectModelEnabled = true;
</script>
<div role="region" id="atomic" aria-atomic="true"></div>
<script>
test(function(t) {
var node = document.getElementById("atomic");
var axNode = accessibilityController.accessibleElementById("atomic");
assert_equals(axNode.isAtomic, true);
assert_equals(node.accessibleNode.atomic, null);
node.accessibleNode.atomic = false;
assert_equals(axNode.isAtomic, true);
node.accessibleNode.atomic = null;
assert_equals(axNode.isAtomic, true);
assert_equals(node.accessibleNode.atomic, null);
}, "Boolean AOM properties do not reflect ARIA, and can be cleared.");
</script>
<div role="region" id="atomic2"></div>
<script>
test(function(t) {
var node = document.getElementById("atomic2");
var axNode = accessibilityController.accessibleElementById("atomic2");
assert_equals(axNode.isAtomic, false);
node.accessibleNode.atomic = true;
assert_equals(axNode.isAtomic, false);
}, "AccessibleNode.atomic");
</script>
<div role="status" id="busy"></div>
<script>
test(function(t) {
var node = document.getElementById("busy");
var axNode = accessibilityController.accessibleElementById("busy");
assert_equals(axNode.isBusy, false);
node.accessibleNode.busy = true;
assert_equals(axNode.isBusy, false);
}, "AccessibleNode.busy");
</script>
<div role="checkbox" id="disabled"></div>
<script>
test(function(t) {
var node = document.getElementById("disabled");
var axNode = accessibilityController.accessibleElementById("disabled");
assert_equals(axNode.restriction, "none");
node.accessibleNode.disabled = true;
assert_equals(axNode.restriction, "none");
}, "AccessibleNode.disabled");
</script>
<div role="button" id="expanded"></div>
<script>
test(function(t) {
var node = document.getElementById("expanded");
var axNode = accessibilityController.accessibleElementById("expanded");
assert_equals(axNode.isExpanded, false);
node.accessibleNode.expanded = true;
assert_equals(axNode.isExpanded, false);
}, "AccessibleNode.expanded");
</script>
<div role="region" id="will-be-hidden"></div>
<script>
test(function(t) {
var node = document.getElementById("will-be-hidden");
var axNode = accessibilityController.accessibleElementById("will-be-hidden");
assert_true(axNode != null);
node.accessibleNode.hidden = true;
node.id = "hidden";
axNode = accessibilityController.accessibleElementById("hidden");
assert_true(axNode != null);
}, "AccessibleNode.hidden");
</script>
<div role="dialog" id="modal"></div>
<script>
test(function(t) {
var node = document.getElementById("modal");
var axNode = accessibilityController.accessibleElementById("modal");
assert_equals(axNode.isModal, false);
node.accessibleNode.modal = true;
assert_equals(axNode.isModal, false);
}, "AccessibleNode.modal");
</script>
<div role="textbox" id="multiline"></div>
<script>
test(function(t) {
var node = document.getElementById("multiline");
var axNode = accessibilityController.accessibleElementById("multiline");
assert_equals(axNode.isMultiLine, false);
node.accessibleNode.multiline = true;
assert_equals(axNode.isMultiLine, false);
}, "AccessibleNode.multiline");
</script>
<div role="listbox" id="multiselectable"></div>
<script>
test(function(t) {
var node = document.getElementById("multiselectable");
var axNode = accessibilityController.accessibleElementById("multiselectable");
assert_equals(axNode.isMultiSelectable, false);
node.accessibleNode.multiselectable = true;
assert_equals(axNode.isMultiSelectable, false);
}, "AccessibleNode.multiselectable");
</script>
<div role="textbox" id="readOnly" tabindex="0"></div>
<script>
test(function(t) {
var node = document.getElementById("readOnly");
var axNode = accessibilityController.accessibleElementById("readOnly");
assert_equals(axNode.isAttributeSettable("AXValue"), true);
node.accessibleNode.readOnly = true;
assert_equals(axNode.isAttributeSettable("AXValue"), true);
}, "AccessibleNode.readOnly");
</script>
<div role="textbox" id="required"></div>
<script>
test(function(t) {
var node = document.getElementById("required");
var axNode = accessibilityController.accessibleElementById("required");
assert_equals(axNode.isRequired, false);
node.accessibleNode.required = true;
assert_equals(axNode.isRequired, false);
}, "AccessibleNode.required");
</script>
<div role="option" id="selected" tabindex="-1"></div>
<script>
test(function(t) {
var node = document.getElementById("selected");
var axNode = accessibilityController.accessibleElementById("selected");
assert_equals(axNode.isSelected, false);
node.accessibleNode.selected = true;
assert_equals(axNode.isSelected, false);
}, "AccessibleNode.selected");
</script>