<!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_05_03_03</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/#retargeting-focus-events">
<meta name="assert" content="Retargeting focus events:The focus event must be treated in the same way as events with a relatedTarget, where the corresponding node that is losing focus as a result of target gaining focus or the node that is gaining focus">
<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 focus event
var A_05_03_03_T01 = async_test('A_05_03_03_T01');


A_05_03_03_T01.step(unit(function (ctx) {

    var d = newRenderedHTMLDocument(ctx);

    var invoked = false;

    var roots = createTestMediaPlayer(d);

    d.querySelector('#outside-control').focus();

    //expected result of what relative target should be see
    //see at http://www.w3.org/TR/shadow-dom/#event-retargeting-example

    //For #volume-slider relative target is #volume-slider
    roots.playerShadowRoot.querySelector('.volume-slider').addEventListener('focus',
    		A_05_03_03_T01.step_func(function(event) {
    			invoked = true;
		    	assert_equals(event.target.getAttribute('id'), 'volume-slider',
		    			'Wrong target');
	    }), false);

    roots.playerShadowRoot.querySelector('.volume-slider').focus();

    assert_true(invoked, 'Event listener was not invoked');

    A_05_03_03_T01.done();
}));


//TODO (sgrekhov) add test for the case when related target differs from the
//node on which event listener is invoked
</script>
</body>
</html>
