aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYing-Ruei Liang(KK) <thumbd03803@gmail.com>2017-03-28 13:49:36 +0800
committerYing-Ruei Liang(KK) <thumbd03803@gmail.com>2017-03-30 11:45:48 +0800
commitbb6d52971a59972c930ee4aa6d93a1243e5c67f3 (patch)
tree9d4d425fa873b3b91c75c4ee5b341c13bc93bf53
parent2084ee29c40291c9abf9b0922e05f0663b215333 (diff)
downloadservo-bb6d52971a59972c930ee4aa6d93a1243e5c67f3.tar.gz
servo-bb6d52971a59972c930ee4aa6d93a1243e5c67f3.zip
Implement HTMLAnchorElement.rel getter and setter
Signed-off-by: Ying-Ruei Liang(KK) <thumbd03803@gmail.com>
-rw-r--r--components/script/dom/htmlanchorelement.rs12
-rw-r--r--components/script/dom/webidls/HTMLAnchorElement.webidl10
-rw-r--r--tests/wpt/metadata/MANIFEST.json20
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini6
-rw-r--r--tests/wpt/metadata/html/dom/reflection-text.html.ini96
-rw-r--r--tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.no-redirect.http.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/cross-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.keep-origin-redirect.http.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.no-redirect.http.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/mozilla/referrer-policy/no-referrer/rel-noreferrer/same-origin/http-http/a-tag/generic.swap-origin-redirect.http.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-getter-01.html19
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.rel-setter-01.html20
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>