<!DOCTYPE html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].

[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<title>Shadow DOM Test: A_10_01_01_03_01</title>
<link rel="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<link rel="help" href="http://www.w3.org/TR/2013/WD-shadow-dom-20130514/#shadow-root-attributes">
<meta name="assert" content="ShadowRoot Object: readonly attribute Element? activeElement; actual value">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../../testcommon.js"></script>
<link rel="stylesheet" href="/resources/testharness.css">
</head>
<body>
<div id="log"></div>
<script>
test(unit(function (ctx) {

	var d = newRenderedHTMLDocument(ctx);

	var host = d.createElement('div');
	host.setAttribute('id', 'shRoot');
	d.body.appendChild(host);
	var s = host.createShadowRoot();

	var inp = d.createElement('input');
	inp.setAttribute('type', 'text');
	inp.setAttribute('id', 'inpId');
	inp.setAttribute('value', 'Some text');
	s.appendChild(inp);

	inp.focus();

    assert_true(s.activeElement != null, 'Point 1: activeElement attribute of the ShadowRoot ' +
    		'must return the currently focused element in the shadow tree');
    assert_equals(s.activeElement.tagName, 'INPUT', 'Point 2: activeElement attribute of the ShadowRoot ' +
    		'must return the currently focused element in the shadow tree');

}), 'A_10_01_01_03_01_T01');
</script>
</body>
</html>
