diff options
author | Ying-Ruei Liang(KK) <thumbd03803@gmail.com> | 2017-03-28 13:49:36 +0800 |
---|---|---|
committer | Ying-Ruei Liang(KK) <thumbd03803@gmail.com> | 2017-03-30 11:45:48 +0800 |
commit | bb6d52971a59972c930ee4aa6d93a1243e5c67f3 (patch) | |
tree | 9d4d425fa873b3b91c75c4ee5b341c13bc93bf53 | |
parent | 2084ee29c40291c9abf9b0922e05f0663b215333 (diff) | |
download | servo-bb6d52971a59972c930ee4aa6d93a1243e5c67f3.tar.gz servo-bb6d52971a59972c930ee4aa6d93a1243e5c67f3.zip |
Implement HTMLAnchorElement.rel getter and setter
Signed-off-by: Ying-Ruei Liang(KK) <thumbd03803@gmail.com>
13 files changed, 103 insertions, 110 deletions
diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index 53aeb9a6bff..a139afe0384 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -113,11 +113,17 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement { self.upcast::<Node>().SetTextContent(Some(value)) } + // https://html.spec.whatwg.org/multipage/#dom-a-rel + make_getter!(Rel, "rel"); + + // https://html.spec.whatwg.org/multipage/#dom-a-rel + fn SetRel(&self, rel: DOMString) { + self.upcast::<Element>().set_tokenlist_attribute(&local_name!("rel"), rel); + } + // https://html.spec.whatwg.org/multipage/#dom-a-rellist fn RelList(&self) -> Root<DOMTokenList> { - self.rel_list.or_init(|| { - DOMTokenList::new(self.upcast(), &local_name!("rel")) - }) + self.rel_list.or_init(|| DOMTokenList::new(self.upcast(), &local_name!("rel"))) } // https://html.spec.whatwg.org/multipage/#dom-a-coords diff --git a/components/script/dom/webidls/HTMLAnchorElement.webidl b/components/script/dom/webidls/HTMLAnchorElement.webidl index f78d1dae6dd..41026e25bce 100644 --- a/components/script/dom/webidls/HTMLAnchorElement.webidl +++ b/components/script/dom/webidls/HTMLAnchorElement.webidl @@ -13,12 +13,12 @@ // https://html.spec.whatwg.org/multipage/#htmlanchorelement interface HTMLAnchorElement : HTMLElement { attribute DOMString target; - // attribute DOMString download; - // attribute USVString ping; - // attribute DOMString rel; + // attribute DOMString download; + // attribute USVString ping; + attribute DOMString rel; readonly attribute DOMTokenList relList; - // attribute DOMString hreflang; - // attribute DOMString type; + // attribute DOMString hreflang; + // attribute DOMString type; [Pure] attribute DOMString text; diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 672ef7efbbb..654c6c1950c 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -95034,6 +95034,18 @@ {} ] ], + "html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html": [ + [ + "/html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html", + {} + ] + ], + "html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html": [ + [ + "/html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html", + {} + ] + ], "html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html": [ [ "/html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html", @@ -178791,6 +178803,14 @@ "93f820588f813b3e340188c88be1532d6e549757", "testharness" ], + "html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html": [ + "c207792ee550d653bc0734f6ef457c7c0e2749d8", + "testharness" + ], + "html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html": [ + "ea922ee6e02e02349ad56d1e8f69d6555d142883", + "testharness" + ], "html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html": [ "ed1c631e5573192fc85f4234d76e5979a32bb44b", "testharness" diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 9507bb2702c..de6bdc8640b 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -1152,9 +1152,6 @@ [HTMLAnchorElement interface: attribute ping] expected: FAIL - [HTMLAnchorElement interface: attribute rel] - expected: FAIL - [HTMLAnchorElement interface: attribute hreflang] expected: FAIL @@ -1170,9 +1167,6 @@ [HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type (2)] expected: FAIL - [HTMLAnchorElement interface: document.createElement("a") must inherit property "rel" with the proper type (3)] - expected: FAIL - [HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type (5)] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/reflection-text.html.ini b/tests/wpt/metadata/html/dom/reflection-text.html.ini index 7edf81d53a0..42300501ee5 100644 --- a/tests/wpt/metadata/html/dom/reflection-text.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-text.html.ini @@ -732,12 +732,6 @@ [a.ping: IDL set to object "test-valueOf" followed by IDL get] expected: FAIL - [a.rel: typeof IDL attribute] - expected: FAIL - - [a.rel: IDL get with DOM attribute unset] - expected: FAIL - [a.rel: setAttribute() to "" followed by IDL get] expected: FAIL @@ -24801,96 +24795,6 @@ [a.ping: IDL set to object "test-valueOf"] expected: FAIL - [a.rel: setAttribute() to ""] - expected: FAIL - - [a.rel: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] - expected: FAIL - - [a.rel: setAttribute() to undefined] - expected: FAIL - - [a.rel: setAttribute() to 7] - expected: FAIL - - [a.rel: setAttribute() to 1.5] - expected: FAIL - - [a.rel: setAttribute() to true] - expected: FAIL - - [a.rel: setAttribute() to false] - expected: FAIL - - [a.rel: setAttribute() to object "[object Object\]"] - expected: FAIL - - [a.rel: setAttribute() to NaN] - expected: FAIL - - [a.rel: setAttribute() to Infinity] - expected: FAIL - - [a.rel: setAttribute() to -Infinity] - expected: FAIL - - [a.rel: setAttribute() to "\\0"] - expected: FAIL - - [a.rel: setAttribute() to null] - expected: FAIL - - [a.rel: setAttribute() to object "test-toString"] - expected: FAIL - - [a.rel: setAttribute() to object "test-valueOf"] - expected: FAIL - - [a.rel: IDL set to ""] - expected: FAIL - - [a.rel: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] - expected: FAIL - - [a.rel: IDL set to undefined] - expected: FAIL - - [a.rel: IDL set to 7] - expected: FAIL - - [a.rel: IDL set to 1.5] - expected: FAIL - - [a.rel: IDL set to true] - expected: FAIL - - [a.rel: IDL set to false] - expected: FAIL - - [a.rel: IDL set to object "[object Object\]"] - expected: FAIL - - [a.rel: IDL set to NaN] - expected: FAIL - - [a.rel: IDL set to Infinity] - expected: FAIL - - [a.rel: IDL set to -Infinity] - expected: FAIL - - [a.rel: IDL set to "\\0"] - expected: FAIL - - [a.rel: IDL set to null] - expected: FAIL - - [a.rel: IDL set to object "test-toString"] - expected: FAIL - - [a.rel: IDL set to object "test-valueOf"] - expected: FAIL - [a.hreflang: setAttribute() to ""] expected: FAIL diff --git a/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..18655c3a060 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[generic.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via a-tag using the rel-noreferrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.no-redirect.http.html.ini b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.no-redirect.http.html.ini new file mode 100644 index 00000000000..adbbaac4dd4 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[generic.no-redirect.http.html] + type: testharness + [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via a-tag using the rel-noreferrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..be4d8aca5ef --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[generic.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via a-tag using the rel-noreferrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..9ec7834d3b3 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[generic.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via a-tag using the rel-noreferrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.no-redirect.http.html.ini b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.no-redirect.http.html.ini new file mode 100644 index 00000000000..b5b60714a7b --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[generic.no-redirect.http.html] + type: testharness + [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via a-tag using the rel-noreferrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..b6899b201b4 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[generic.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via a-tag using the rel-noreferrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html new file mode 100644 index 00000000000..8e47121eb8c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>HTMLAnchorElement.rel getter</title> +<link rel="author" title="TheKK" href="mailto:thumbd03803@gmail.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-a-rel"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<div id=log></div> +<div> +<a id="test" href="a" rel="noreferrer"></a> +</div> +<script> +test(function() { + var a = document.getElementById("test"); + + test(function() { + assert_equals(a.rel, "noreferrer"); + }, "Test anchor's rel getter"); +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html new file mode 100644 index 00000000000..83c69de3014 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<title>HTMLAnchorElement.rel setter</title> +<link rel="author" title="TheKK" href="mailto:thumbd03803@gmail.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-a-rel"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<div id=log></div> +<div> +<a id="test" href="a"></a> +</div> +<script> +test(function() { + var a = document.getElementById("test"); + + test(function() { + a.rel = "noreferrer" + assert_equals(a.rel, "noreferrer"); + }, "Test anchor's rel setter"); +}); +</script> |