From a94275402997c11dd2e778633dacf4b7e630a35d Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Fri, 22 Oct 2010 13:02:20 +0100 Subject: Merge WebKit at r70209: Initial merge by Git Change-Id: Id23a68efa36e9d1126bcce0b137872db00892c8e --- .../set-href-attribute-prevents-rebase.js | 118 +++++++++++++++++++++ ...set-href-attribute-prevents-rebase-expected.txt | 46 ++++++++ .../set-href-attribute-prevents-rebase.html | 13 +++ 3 files changed, 177 insertions(+) create mode 100644 LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js create mode 100644 LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt create mode 100644 LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html (limited to 'LayoutTests/fast/dom/HTMLAnchorElement') diff --git a/LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js b/LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js new file mode 100644 index 0000000..139a9e5 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-prevents-rebase.js @@ -0,0 +1,118 @@ +description('Tests that when an href attribute is set, the href is no longer subject to updates to the document base URI.'); + +var a = document.createElement('a'); +var base = document.createElement('base'); +document.head.appendChild(base); + + +debug("Search attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "?search"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://new_base/?search'"); + +debug("Search attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "?foo"; +a.search = "search"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://old_base/?search'"); +debug(''); + + +debug("Pathname attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "path"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://new_base/path'"); + +debug("Pathname attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "foo"; +a.pathname = "path"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://old_base/path'"); +debug(''); + + +debug("Hash attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "#hash"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://new_base/#hash'"); + +debug("Pathname attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "#foo"; +a.hash = "hash"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://old_base/#hash'"); +debug(''); + + +debug('Note that for the following attributes, updating the document base URI has no effect because we have to use an abosulte URL for the href in order to set an initial value for the attribute we wish to update. They are included for completeness.'); +debug(''); + + +debug("Host attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "http://host:0"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); + +debug("Host attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "http://foo:80"; +a.host = "host:0"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); +debug(''); + + +debug("Hostname attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "http://host"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host/'"); + +debug("Hostname attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "http://foo"; +a.hostname = "host"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host/'"); +debug(''); + + +debug("Protocol attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "protocol:"; +base.href = "http://new_base/"; +shouldBe("a.href", "'protocol:'"); + +debug("Protocol attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "foo:"; +a.protocol = "protocol:"; +base.href = "http://new_base/"; +shouldBe("a.href", "'protocol:'"); +debug(''); + + +debug("Port attribute, update document base URI without attribute having been set"); +base.href = "http://old_base/"; +a.href = "http://host:0"; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); + +debug("Port attribute, update document base URI after attribute has been set"); +base.href = "http://old_base/"; +a.href = "http://host:80"; +a.port = 0; +base.href = "http://new_base/"; +shouldBe("a.href", "'http://host:0/'"); +debug(''); + + +base.href = ''; +var successfullyParsed = true; diff --git a/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt new file mode 100644 index 0000000..c7de5cb --- /dev/null +++ b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase-expected.txt @@ -0,0 +1,46 @@ +Tests that when an href attribute is set, the href is no longer subject to updates to the document base URI. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +Search attribute, update document base URI without attribute having been set +PASS a.href is 'http://new_base/?search' +Search attribute, update document base URI after attribute has been set +PASS a.href is 'http://old_base/?search' + +Pathname attribute, update document base URI without attribute having been set +PASS a.href is 'http://new_base/path' +Pathname attribute, update document base URI after attribute has been set +PASS a.href is 'http://old_base/path' + +Hash attribute, update document base URI without attribute having been set +PASS a.href is 'http://new_base/#hash' +Pathname attribute, update document base URI after attribute has been set +PASS a.href is 'http://old_base/#hash' + +Note that for the following attributes, updating the document base URI has no effect because we have to use an abosulte URL for the href in order to set an initial value for the attribute we wish to update. They are included for completeness. + +Host attribute, update document base URI without attribute having been set +PASS a.href is 'http://host:0/' +Host attribute, update document base URI after attribute has been set +PASS a.href is 'http://host:0/' + +Hostname attribute, update document base URI without attribute having been set +PASS a.href is 'http://host/' +Hostname attribute, update document base URI after attribute has been set +PASS a.href is 'http://host/' + +Protocol attribute, update document base URI without attribute having been set +PASS a.href is 'protocol:' +Protocol attribute, update document base URI after attribute has been set +PASS a.href is 'protocol:' + +Port attribute, update document base URI without attribute having been set +PASS a.href is 'http://host:0/' +Port attribute, update document base URI after attribute has been set +PASS a.href is 'http://host:0/' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html new file mode 100644 index 0000000..bfc1c29 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase.html @@ -0,0 +1,13 @@ + + + + + + + +

+
+ + + + -- cgit v1.1