<!DOCTYPE HTML>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<div id="container">
<!-- Focusable elements -->
<a id="anchor" href="tabindex-defaults.html">anchor</a>
<iframe id="iframe"></iframe>
<object id="object"></object>
<button id="button">button</button>
<input id="input">
<select id="select"></select>
<textarea id="textarea"></textarea>
<keygen id="keygen"></keygen>
<div id="editableDiv" contenteditable="true"></div>
<details><summary id="activeSummary"></summary></details>

<!-- Unfocusable element -->
<div id="normalDiv"></div>
<output id="output"></output>
<fieldset id="fieldset"></fieldset>
<video id="video"></video>
<video id="videoWithControls" controls></video>
<details><summary></summary><summary id="summary"></summary></details>
<iframe id="iframeForDesignMode"></iframe>
<svg><g id="g" onfocus="alert('fail')"></g></svg>
<math><mrow id="mrow" onfocus="alert('fail')"></mrow></math>
</div>

<script>
description('Default value of tabIndex IDL attribute');

var anchor = document.getElementById('anchor');
var iframe = document.getElementById('iframe');
iframe.contentDocument.open();
iframe.contentDocument.write('<!DOCTYPE><html><frameset cols="50%,50%"><frame></frame></frameset>');
var frame = iframe.contentDocument.querySelector('frame');
var object = document.getElementById('object');
var button = document.getElementById('button');
var input = document.getElementById('input');
var select = document.getElementById('select');
var textarea = document.getElementById('textarea');
var keygen = document.getElementById('keygen');
var editableDiv = document.getElementById('editableDiv');
var normalDiv = document.getElementById('normalDiv');
var output = document.getElementById('output');
var fieldset = document.getElementById('fieldset');
var video = document.getElementById('video');
var videoWithControls = document.getElementById('videoWithControls');
var summary = document.getElementById('summary');
var activeSummary = document.getElementById('activeSummary');
var iframeForDesignMode = document.getElementById('iframeForDesignMode');
iframeForDesignMode.contentDocument.designMode = 'on';
var bodyInDesignMode = iframeForDesignMode.contentDocument.body;
var g = document.getElementById('g');
var mrow = document.getElementById('mrow');

shouldBe('anchor.tabIndex', '0');
shouldBe('iframe.tabIndex', '0');
shouldBe('frame.tabIndex', '0');
shouldBe('object.tabIndex', '0');
shouldBe('button.tabIndex', '0');
shouldBe('input.tabIndex', '0');
shouldBe('select.tabIndex', '0');
shouldBe('textarea.tabIndex', '0');
shouldBe('keygen.tabIndex', '-1');
shouldBe('activeSummary.tabIndex', '0');
shouldBe('editableDiv.tabIndex', '-1');
shouldBe('normalDiv.tabIndex', '-1');
shouldBe('output.tabIndex', '-1');
shouldBe('fieldset.tabIndex', '-1');
shouldBe('video.tabIndex', '-1');
shouldBe('videoWithControls.tabIndex', '-1');
shouldBe('summary.tabIndex', '-1');
shouldBe('bodyInDesignMode.tabIndex', '-1');
shouldBe('g.tabIndex', '-1');
shouldBe('mrow.tabIndex', '-1');

shouldBe('anchor.setAttribute("tabindex", "invalid"); anchor.tabIndex', '0');
shouldBe('iframe.setAttribute("tabindex", "invalid"); iframe.tabIndex', '0');
shouldBe('frame.setAttribute("tabindex", "invalid"); frame.tabIndex', '0');
shouldBe('object.setAttribute("tabindex", "invalid"); object.tabIndex', '0');
shouldBe('button.setAttribute("tabindex", "invalid"); button.tabIndex', '0');
shouldBe('input.setAttribute("tabindex", "invalid"); input.tabIndex', '0');
shouldBe('select.setAttribute("tabindex", "invalid"); select.tabIndex', '0');
shouldBe('textarea.setAttribute("tabindex", "invalid"); textarea.tabIndex', '0');
shouldBe('keygen.setAttribute("tabindex", "invalid"); keygen.tabIndex', '-1');
shouldBe('activeSummary.setAttribute("tabindex", "invalid"); activeSummary.tabIndex', '0');
shouldBe('editableDiv.setAttribute("tabindex", "invalid"); editableDiv.tabIndex', '-1');
shouldBe('normalDiv.setAttribute("tabindex", "invalid"); normalDiv.tabIndex', '-1');
shouldBe('output.setAttribute("tabindex", "invalid"); output.tabIndex', '-1');
shouldBe('fieldset.setAttribute("tabindex", "invalid"); fieldset.tabIndex', '-1');
shouldBe('video.setAttribute("tabindex", "invalid"); video.tabIndex', '-1');
shouldBe('videoWithControls.setAttribute("tabindex", "invalid"); videoWithControls.tabIndex', '-1');
shouldBe('summary.setAttribute("tabindex", "invalid"); summary.tabIndex', '-1');
shouldBe('bodyInDesignMode.setAttribute("tabindex", "invalid"); bodyInDesignMode.tabIndex', '-1');
shouldBe('g.setAttribute("tabindex", "invalid"); g.tabIndex', '-1');
shouldBe('mrow.setAttribute("tabindex", "invalid"); mrow.tabIndex', '-1');

shouldBe('anchor.setAttribute("tabindex", "9999999999"); anchor.tabIndex', '0');
shouldBe('iframe.setAttribute("tabindex", "9999999999"); iframe.tabIndex', '0');
shouldBe('frame.setAttribute("tabindex", "9999999999"); frame.tabIndex', '0');
shouldBe('object.setAttribute("tabindex", "invalid"); object.tabIndex', '0');
shouldBe('button.setAttribute("tabindex", "9999999999"); button.tabIndex', '0');
shouldBe('input.setAttribute("tabindex", "9999999999"); input.tabIndex', '0');
shouldBe('select.setAttribute("tabindex", "9999999999"); select.tabIndex', '0');
shouldBe('textarea.setAttribute("tabindex", "9999999999"); textarea.tabIndex', '0');
shouldBe('keygen.setAttribute("tabindex", "9999999999"); keygen.tabIndex', '-1');
shouldBe('activeSummary.setAttribute("tabindex", "9999999999"); activeSummary.tabIndex', '0');
shouldBe('editableDiv.setAttribute("tabindex", "9999999999"); editableDiv.tabIndex', '-1');
shouldBe('normalDiv.setAttribute("tabindex", "9999999999"); normalDiv.tabIndex', '-1');
shouldBe('output.setAttribute("tabindex", "9999999999"); output.tabIndex', '-1');
shouldBe('fieldset.setAttribute("tabindex", "9999999999"); fieldset.tabIndex', '-1');
shouldBe('video.setAttribute("tabindex", "9999999999"); video.tabIndex', '-1');
shouldBe('videoWithControls.setAttribute("tabindex", "9999999999"); videoWithControls.tabIndex', '-1');
shouldBe('summary.setAttribute("tabindex", "9999999999"); summary.tabIndex', '-1');
shouldBe('bodyInDesignMode.setAttribute("tabindex", "9999999999"); bodyInDesignMode.tabIndex', '-1');
shouldBe('g.setAttribute("tabindex", "9999999999"); g.tabIndex', '-1');
shouldBe('mrow.setAttribute("tabindex", "9999999999"); mrow.tabIndex', '-1');

document.getElementById('container').innerHTML = '';
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
