Auto merge of #10903 - broesamle:issue10877-HTMLAnchorElement-setter-panic, r=jdm

Avoid panics when using HTMLAnchorElement attribute setters

`expected: OK` still explicitly mentioned in .ini file. Shall I remove it?

Fixes #10877.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10903)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-05-11 19:03:56 -07:00
commit 545da3844a
3 changed files with 86 additions and 13 deletions

View file

@ -81,9 +81,8 @@ impl HTMLAnchorElement {
}
// https://html.spec.whatwg.org/multipage/#update-href
fn update_href(&self) {
self.upcast::<Element>().set_string_attribute(&atom!("href"),
self.url.borrow().as_ref().unwrap().as_str().into());
fn update_href(&self, url: &Url) {
self.upcast::<Element>().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);
}
}