diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs
index 43ff211dfce..5b0f1801c25 100644
--- a/components/script/dom/htmlanchorelement.rs
+++ b/components/script/dom/htmlanchorelement.rs
@@ -81,9 +81,8 @@ impl HTMLAnchorElement {
}
// https://html.spec.whatwg.org/multipage/#update-href
- fn update_href(&self) {
- self.upcast::().set_string_attribute(&atom!("href"),
- self.url.borrow().as_ref().unwrap().as_str().into());
+ fn update_href(&self, url: &Url) {
+ self.upcast::().set_string_attribute(&atom!("href"), DOMString::from(url.as_str()));
}
}
@@ -168,7 +167,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Steps 4-5.
UrlHelper::SetHash(url, value);
// Step 6.
- self.update_href();
+ self.update_href(url);
}
}
@@ -204,7 +203,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 4.
UrlHelper::SetHost(url, value);
// Step 5.
- self.update_href();
+ self.update_href(url);
}
}
@@ -236,7 +235,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 4.
UrlHelper::SetHostname(url, value);
// Step 5.
- self.update_href();
+ self.update_href(url);
}
}
@@ -292,7 +291,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 4.
UrlHelper::SetPassword(url, value);
// Step 5.
- self.update_href();
+ self.update_href(url);
}
}
@@ -320,7 +319,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 5.
UrlHelper::SetPathname(url, value);
// Step 6.
- self.update_href();
+ self.update_href(url);
}
}
@@ -352,7 +351,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 4.
UrlHelper::SetPort(url, value);
// Step 5.
- self.update_href();
+ self.update_href(url);
}
}
@@ -379,7 +378,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 3.
UrlHelper::SetProtocol(url, value);
// Step 4.
- self.update_href();
+ self.update_href(url);
}
}
@@ -408,7 +407,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// encoding override (as described in the spec)
UrlHelper::SetSearch(url, value);
// Step 6.
- self.update_href();
+ self.update_href(url);
}
}
@@ -439,7 +438,7 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// Step 4.
UrlHelper::SetUsername(url, value);
// Step 5.
- self.update_href();
+ self.update_href(url);
}
}
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index e82ec5fdbc1..5d15dd24f6d 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -35936,7 +35936,16 @@
"local_changes": {
"deleted": [],
"deleted_reftests": {},
- "items": {},
+ "items": {
+ "testharness": {
+ "html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html": [
+ {
+ "path": "html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html",
+ "url": "/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html"
+ }
+ ]
+ }
+ },
"reftest_nodes": {}
},
"reftest_nodes": {
diff --git a/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html b/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html
new file mode 100644
index 00000000000..2db3082e214
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html
@@ -0,0 +1,65 @@
+
+
+
+
+HTMLAnchorElement getters and setters
+
+
+anchor
+
+
+