<!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_06_00_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/#styles">
<meta name="assert" content="Styles: Each shadow root has an associated list of zero or more style sheets, named shadow root style sheets">
<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');
    d.body.appendChild(host);

    //Shadow root to play with
    var s = host.createShadowRoot();

    assert_equals(s.styleSheets.length, 0, 'There should be no style sheets');
}), 'A_06_00_03_T01');


test(unit(function (ctx) {
    var d = newRenderedHTMLDocument(ctx);
    var host = d.createElement('div');
    host.setAttribute('style', 'width:100px');
    d.body.appendChild(host);

    //Shadow root to play with
    var s = host.createShadowRoot();

	assert_equals(s.styleSheets.length, 0, 'There should be no style sheets');
}), 'A_06_00_03_T02');

//TODO Now this tests produces an error on Chromium because styleSheets.length
//returns 0 when the shadow root is orphaned.
//Tracking bug: http://crbug.com/392771
test(unit(function (ctx) {
    var d = newRenderedHTMLDocument(ctx);
    var host = d.createElement('div');

    //Shadow root to play with
    var s = host.createShadowRoot();

    var style = d.createElement('style');
    style.textContent = 'div {width: 50%;}';
    s.appendChild(style);

    // The following line fixes the issue on Chromium, http://crbug.com/392771
    // d.body.appendChild(host);
    assert_equals(s.styleSheets.length, 1, 'Style sheet is not accessible via styleSheets');
}), 'A_06_00_03_T03');
</script>
</body>
</html>
