blob: d46dcfe93bb37eaebd1c77a9e9cbda552e9f3b83 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/js-test-pre.js"></script>
<base href="foo/bar/">
<body></body>
<script>
if (window.testRunner) {
// FIXME: setCanOpenWindows needs the test to be async or the Apple port crashes.
// https://bugs.webkit.org/show_bug.cgi?id=99465
window.jsTestIsAsync = true;
testRunner.waitUntilDone();
testRunner.setCanOpenWindows();
}
function endsWith(string, substring)
{
var length = string.length - substring.length;
return length >= 0 && string.indexOf(substring, length) === length;
}
var 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.
var documentWithoutAView = document.implementation.createHTMLDocument('');
base = documentWithoutAView.head.appendChild(documentWithoutAView.createElement('base'));
base.setAttribute('href', 'foo/bar/');
shouldBeEqualToString("documentWithoutAView.querySelector('base').href", '');
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.
var 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", '');
// Make sure that we don't use the opener document as the base.
var 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", '');
newWindow.close();
</script>
<script src="../../../resources/js-test-post.js"></script>
<script>
finishJSTest();
</script>