<!DOCTYPE html>
<meta charset=utf-8>
<title>Disabled elements</title>
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
<link rel=help href="https://html.spec.whatwg.org/multipage/#disabled-elements">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<button disabled>button</button>
<input disabled>
<select disabled>
 <optgroup label="options" disabled>
  <option value="option1" disabled>option1
  <option value="option2">option2
</select>
<textarea disabled>textarea</textarea>
<fieldset disabled>
 <input type=radio name=c value=0 checked>
 <input type=radio name=c value=1>
</fieldset>
<a href="http://www.w3.org/" disabled>w3</a>
<span tabindex=0 disabled>foobar</span>

<script>
  test(function(){
    assert_equals(document.activeElement, document.body);
  }, "The body element must be the active element if no element is focused");

  ["button", "input", "select", "optgroup", "option", "textarea", "input[type=radio]"].forEach(function(el) {
    test(function() {
      var element = document.querySelector(el);
      element.focus();
      assert_equals(document.activeElement, document.body, "activeElement after focus on a disabled <" + el + "> remains unchanged");
    }, "A disabled <" + el + "> should not be focusable");
  });

  ["a", "span"].forEach(function(el) {
    test(function() {
      var element = document.querySelector(el);
      element.focus();
      assert_equals(document.activeElement, element, "focus on a <" + el + "> with a disabled attribute should make it the activeElement");
    }, "A disabled <" + el + "> should be focusable");
  });
</script>
