blob: 4098662cfddfa0306221623caf388b4da2b154ee [file] [log] [blame]
<!DOCTYPE html>
<script src="/js-test-resources/js-test.js"></script>
<base href="foo/bar/">
<body></body>
<script>
description("Test for HTMLBaseElement's href attribute.");
jsTestIsAsync = true;
function endsWith(string, substring)
{
var length = string.length - substring.length;
return length >= 0 && string.indexOf(substring, length) === length;
}
onload = () => {
base = document.querySelector('base');
shouldBeTrue("endsWith(document.querySelector('base').href, 'foo/bar/')");
shouldBeFalse("endsWith(document.querySelector('base').href, 'foo/bar/foo/bar/')");
base.href = null;
shouldBeTrue("document.querySelector('base').hasAttribute('href')");
shouldBeTrue("endsWith(document.querySelector('base').href, '/null')");
base.removeAttribute('href');
shouldBeFalse("document.querySelector('base').hasAttribute('href')");
shouldBeTrue("endsWith(document.querySelector('base').href, '/href-attribute-resolves-with-respect-to-document.html')");
// When a document does not have a URL, base cannot be resolved
// Make sure that we don't use the creator document as the base.
documentWithoutAView = document.implementation.createHTMLDocument('');
base = documentWithoutAView.head.appendChild(documentWithoutAView.createElement('base'));
base.setAttribute('href', 'foo/bar/');
shouldBeEqualToString("documentWithoutAView.querySelector('base').href", 'foo/bar/');
base.setAttribute('href', 'http://webkit.org/');
shouldBeEqualToString("documentWithoutAView.querySelector('base').href", 'http://webkit.org/');
// Make sure that we use the parent document as the base.
iframe = document.body.appendChild(document.createElement('iframe'));
base = iframe.contentDocument.head.appendChild(iframe.contentDocument.createElement('base'));
base.setAttribute('href', 'foo/bar/');
shouldBeEqualToString("iframe.contentDocument.querySelector('base').href", 'http://127.0.0.1:8000/misc/foo/bar/');
// Make sure that we use the opener document as the base.
newWindow = window.open('about:blank');
base = newWindow.document.head.appendChild(newWindow.document.createElement('base'));
base.setAttribute('href', 'foo/bar/');
shouldBeEqualToString("newWindow.document.querySelector('base').href", 'http://127.0.0.1:8000/misc/foo/bar/');
newWindow.close();
setTimeout(finishJSTest, 0);
}
</script>