Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
function newSVGDocument() {
return document.implementation.createDocument(SVG_NAMESPACE, "svg", null);
}
function assertIsSVGTitle(element, expectedText) {
assert_equals(element.namespaceURI, SVG_NAMESPACE);
assert_equals(element.localName, "title");
assert_equals(element.textContent, expectedText);
}
test(function() {
var doc = newSVGDocument();
assert_equals(doc.title, "");
var child = doc.createElementNS(SVG_NAMESPACE, "x-child");
doc.documentElement.appendChild(child);
doc.title = "foo";
assertIsSVGTitle(doc.documentElement.firstChild, "foo");
assert_equals(doc.title, "foo");
}, "No title element in SVG document");
test(function() {
var doc = newSVGDocument();
var title = doc.createElementNS(SVG_NAMESPACE, "title");
title.textContent = "foo";
doc.documentElement.appendChild(title)
assert_equals(doc.title, "foo");
doc.title += "bar";
assert_equals(title.textContent, "foobar");
assert_equals(title.childNodes.length, 1);
assert_true(title.childNodes[0] instanceof Text);
assert_equals(doc.title, "foobar");
doc.title = "";
assert_equals(title.textContent, "");
assert_equals(doc.title, "");
assert_equals(title.childNodes.length, 0);
}, "Title element in SVG document");
test(function() {
var doc = newSVGDocument();
var title = doc.createElementNS(SVG_NAMESPACE, "title");
title.textContent = "foo";
var child = doc.createElementNS(SVG_NAMESPACE, "x-child");
child.appendChild(title);
doc.documentElement.appendChild(child);
assert_equals(doc.title, "");
// Now test that on setting, we create a new element and don't change the
// existing one
doc.title = "bar";
assert_equals(title.textContent, "foo");
assertIsSVGTitle(doc.documentElement.firstChild, "bar");
assert_equals(doc.title, "bar");
}, "Title element not child of SVG root");
test(function() {
var doc = newSVGDocument();
var title = doc.createElementNS(HTML_NAMESPACE, "title");
title.textContent = "foo";
doc.documentElement.appendChild(title);
assert_equals(doc.title, "");
}, "Title element not in SVG namespace");
test(function() {
// "SVG" != "svg"
var doc = document.implementation.createDocument(SVG_NAMESPACE, "SVG", null);
// Per spec, this does nothing
doc.title = "foo";
assert_equals(doc.documentElement.childNodes.length, 0);
assert_equals(doc.title, "");
// An SVG title is ignored by .title
doc.documentElement.appendChild(doc.createElementNS(SVG_NAMESPACE, "title"));
doc.documentElement.lastChild.textContent = "foo";
assert_equals(doc.title, "");
// But an HTML title is respected
doc.documentElement.appendChild(doc.createElementNS(HTML_NAMESPACE, "title"));
doc.documentElement.lastChild.textContent = "bar";
assert_equals(doc.title, "bar");
// Even if it's not a child of the root
var div = doc.createElementNS(HTML_NAMESPACE, "div");
div.appendChild(doc.documentElement.lastChild);
doc.documentElement.appendChild(div);
assert_equals(doc.title, "bar");
}, 'Root element not named "svg"');
</script>