<!DOCTYPE html>
<html>
<head>
<script src="resources/polyfill.js"></script>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("This test ensures that title elements in a shadow subtree do not affect document.title attribute.")

debug('create a title element and insert it to document.');
var title = document.createElement('title');
title.appendChild(document.createTextNode('document title'));
document.head.appendChild(title);
shouldBe('document.title', '"document title"');
document.head.removeChild(title);
debug('remove title element from document.');
shouldBe('document.title', '""');

debug('create a shadow root whose host is already in document, create a subtree which contains a title element, and add the subtree to the shadow root.');
var subtree1 = document.createElement('div');
var shadow1 = subtree1.webkitCreateShadowRoot();
document.head.appendChild(subtree1);
var shadowTitle = document.createElement('title');
shadowTitle.appendChild(document.createTextNode('shadow title1'));
shadow1.appendChild(shadowTitle);
shouldBe('document.title', '""');

debug('remove the subtree from document.');
document.head.removeChild(subtree1);
shouldBe('document.title', '""');

debug('create a subtree, add a shadow root which contains a title element to the subtree, and insert the subtree to document.')
var subtree2 = document.createElement('div');
var shadow2 = subtree2.webkitCreateShadowRoot();
shadow2.innerHTML = '<title>shadow title2</title>';
document.head.appendChild(subtree2);
shouldBe('document.title', '""');
debug('remove the subtree from document');
document.head.removeChild(subtree2);
shouldBe('document.title', '""');

</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
