<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="resources/polyfill.js"></script>
<script src="resources/shadow-dom.js"></script>
</head>
<body>

<div id="container"></div>
<pre id="console"></pre>

<script>
function testCase(f)
{
    container.innerHTML = '';
    container.appendChild(createDOM('div', {'id': 'host'},
                                    createShadowRoot()));
    shadowRoot = internals.shadowRoot(host);

    f();
    debug('');
}

testCase(function()
{
    debug('Id should be collected');

    shadowRoot.innerHTML = '<content select="#foo"></content>';
    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForIdInShadow(host, "host")', 'false');
});

testCase(function()
{
    debug('Class should be collected');

    shadowRoot.innerHTML = '<content select=".foo"></content>';
    shouldBe('internals.hasSelectorForClassInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForClassInShadow(host, "host")', 'false');
});

testCase(function()
{
    debug('Attribute should be collected');

    shadowRoot.innerHTML = '<content select="div[foo]"></content>';
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "host")', 'false');
});

testCase(function()
{
    debug('Select attribute might have several selectors');

    shadowRoot.innerHTML = '<content select="#foo,.bar,div[baz]"></content>';
    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForIdInShadow(host, "baz")', 'false');

    shouldBe('internals.hasSelectorForClassInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForClassInShadow(host, "bar")', 'true');
    shouldBe('internals.hasSelectorForClassInShadow(host, "baz")', 'false');

    shouldBe('internals.hasSelectorForAttributeInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "baz")', 'true');
});

testCase(function()
{
    debug('Don\'t count shadow element');

    shadowRoot.innerHTML = '<shadow select="#foo,.bar,div[baz]"></shadow>';
    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForIdInShadow(host, "baz")', 'false');

    shouldBe('internals.hasSelectorForClassInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForClassInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForClassInShadow(host, "baz")', 'false');

    shouldBe('internals.hasSelectorForAttributeInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "baz")', 'false');
});

testCase(function()
{
    debug('Complex case for single ShadowRoot');

    shadowRoot.innerHTML = '<div><div></div><content select="*"></content><div><content select="div[foo=piyo]"></content></div>';
    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForClassInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "piyo")', 'false');
});

testCase(function()
{
    debug('Another complex case for single ShadowRoot');

    shadowRoot.innerHTML = '<content select="#foo,.foo,div[foo]"></content>';
    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForClassInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "foo")', 'true');
});

testCase(function()
{
    debug('Multiple ShadowRoot case');

    var anotherShadowRoot = host.webkitCreateShadowRoot();

    shadowRoot.innerHTML = '<content select="#foo"></content>';
    anotherShadowRoot.innerHTML = '<content select="#bar"></content><content select="div[baz],.bar"></content>';

    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "baz")', 'false');

    shouldBe('internals.hasSelectorForClassInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForClassInShadow(host, "bar")', 'true');
    shouldBe('internals.hasSelectorForClassInShadow(host, "baz")', 'false');

    shouldBe('internals.hasSelectorForAttributeInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForAttributeInShadow(host, "baz")', 'true');
});

testCase(function()
{
    debug('Dynamic select attribute update');

    shadowRoot.innerHTML = '<content select="#foo"></content>';

    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'false');

    var content = shadowRoot.querySelector('content');
    content.select = '#bar';

    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'false');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'true');
});

testCase(function()
{
    debug('Nested ShadowDOM case');

    shadowRoot.innerHTML = '<content select="#foo"></content>';

    var div = document.createElement('div');
    var nestedShadowRoot = div.webkitCreateShadowRoot();
    nestedShadowRoot.innerHTML = '<content select="#bar"></content>';
    shadowRoot.appendChild(div);

    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "baz")', 'false');

    var content = nestedShadowRoot.querySelector('content');
    content.select = '#baz';

    shouldBe('internals.hasSelectorForIdInShadow(host, "foo")', 'true');
    shouldBe('internals.hasSelectorForIdInShadow(host, "bar")', 'false');
    shouldBe('internals.hasSelectorForIdInShadow(host, "baz")', 'true');
});

testCase(function()
{
    debug('PseudoClass case: :checked');
    shadowRoot.innerHTML = '<content select="input:checked"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'true');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'false');
});

testCase(function()
{
    debug('PseudoClass case: :enabled');
    shadowRoot.innerHTML = '<content select="input:enabled"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'true');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'false');
});

testCase(function()
{
    debug('PseudoClass case: :disabled');
    shadowRoot.innerHTML = '<content select="input:disabled"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'true');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'false');
});

testCase(function()
{
    debug('PseudoClass case: :indeterminate');
    shadowRoot.innerHTML = '<content select="input:indeterminate"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'true');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'false');
});

testCase(function()
{
    debug('PseudoClass case: :link');
    shadowRoot.innerHTML = '<content select="input:link"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'true');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'false');
});

testCase(function()
{
    debug('PseudoClass case: :target');
    shadowRoot.innerHTML = '<content select="input:target"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'true');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'false');
});

testCase(function()
{
    debug('PseudoClass case: :visited');
    shadowRoot.innerHTML = '<content select="input:visited"></content>';

    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "checked")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "enabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "disabled")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "indeterminate")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "link")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "target")', 'false');
    shouldBe('internals.hasSelectorForPseudoClassInShadow(host, "visited")', 'true');
});

finishJSTest();
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
