diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs
index 0a1e15ef193a..16f47315b76b 100644
--- a/components/script/dom/htmlanchorelement.rs
+++ b/components/script/dom/htmlanchorelement.rs
@@ -5,6 +5,7 @@
use dom::activation::Activatable;
use dom::attr::AttrValue;
+use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods;
use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding;
use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding::HTMLAnchorElementMethods;
@@ -12,6 +13,7 @@ use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
+use dom::bindings::str::USVString;
use dom::document::Document;
use dom::domtokenlist::DOMTokenList;
use dom::element::Element;
@@ -21,16 +23,19 @@ use dom::htmlelement::HTMLElement;
use dom::htmlimageelement::HTMLImageElement;
use dom::mouseevent::MouseEvent;
use dom::node::{Node, document_from_node, window_from_node};
+use dom::urlhelper::UrlHelper;
use dom::virtualmethods::VirtualMethods;
use num::ToPrimitive;
use std::default::Default;
use string_cache::Atom;
+use url::{Url, UrlParser};
use util::str::DOMString;
#[dom_struct]
pub struct HTMLAnchorElement {
htmlelement: HTMLElement,
rel_list: MutNullableHeap>,
+ url: DOMRefCell>,
}
impl HTMLAnchorElement {
@@ -41,6 +46,7 @@ impl HTMLAnchorElement {
htmlelement:
HTMLElement::new_inherited(localName, prefix, document),
rel_list: Default::default(),
+ url: DOMRefCell::new(None),
}
}
@@ -51,6 +57,37 @@ impl HTMLAnchorElement {
let element = HTMLAnchorElement::new_inherited(localName, prefix, document);
Node::reflect_node(box element, document, HTMLAnchorElementBinding::Wrap)
}
+
+ // https://html.spec.whatwg.org/multipage/#concept-hyperlink-url-set
+ fn set_url(&self) {
+ let attribute = self.upcast::().get_attribute(&ns!(), &atom!("href"));
+ *self.url.borrow_mut() = attribute.and_then(|attribute| {
+ let document = document_from_node(self);
+ let mut parser = UrlParser::new();
+ parser.base_url(document.url());
+ parser.parse(&attribute.value()).ok()
+ });
+ }
+
+ // https://html.spec.whatwg.org/multipage/#reinitialise-url
+ fn reinitialize_url(&self) {
+ // Step 1.
+ match *self.url.borrow() {
+ None => return,
+ Some(ref url) if url.scheme == "blob" &&
+ url.non_relative_scheme_data().is_some() => return,
+ _ => (),
+ }
+
+ // Step 2.
+ self.set_url();
+ }
+
+ // 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().serialize().into());
+ }
}
impl VirtualMethods for HTMLAnchorElement {
@@ -107,6 +144,312 @@ impl HTMLAnchorElementMethods for HTMLAnchorElement {
// https://html.spec.whatwg.org/multipage/#dom-a-shape
make_setter!(SetShape, "shape");
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-hash
+ fn Hash(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 3.
+ None => USVString(String::new()),
+ Some(ref url) => {
+ // Steps 3-4.
+ UrlHelper::Hash(url)
+ }
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-hash
+ fn SetHash(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.scheme == "javascript" { return; }
+ // Steps 4-5.
+ UrlHelper::SetHash(url, value);
+ // Step 6.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-host
+ fn Host(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 3.
+ None => USVString(String::new()),
+ Some(ref url) => {
+ if url.host().is_none() {
+ USVString(String::new())
+ } else {
+ // Steps 4-5.
+ UrlHelper::Host(url)
+ }
+ }
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-host
+ fn SetHost(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.non_relative_scheme_data().is_some() {
+ return;
+ }
+ // Step 4.
+ UrlHelper::SetHost(url, value);
+ // Step 5.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-hostname
+ fn Hostname(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 3.
+ None => USVString(String::new()),
+ Some(ref url) => {
+ // Step 4.
+ UrlHelper::Hostname(url)
+ }
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-hostname
+ fn SetHostname(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.non_relative_scheme_data().is_some() {
+ return;
+ }
+ // Step 4.
+ UrlHelper::SetHostname(url, value);
+ // Step 5.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-href
+ fn Href(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ USVString(match *self.url.borrow() {
+ None => {
+ match self.upcast::().get_attribute(&ns!(), &atom!("href")) {
+ // Step 3.
+ None => String::new(),
+ // Step 4.
+ Some(attribute) => (**attribute.value()).to_owned(),
+ }
+ },
+ // Step 5.
+ Some(ref url) => url.serialize(),
+ })
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-href
+ fn SetHref(&self, value: USVString) {
+ self.upcast::().set_string_attribute(&atom!("href"),
+ DOMString::from_string(value.0));
+ self.set_url();
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-password
+ fn Password(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 3.
+ None => USVString(String::new()),
+ // Steps 3-4.
+ Some(ref url) => UrlHelper::Password(url)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-password
+ fn SetPassword(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.host().is_none() || url.non_relative_scheme_data().is_some() {
+ return;
+ }
+ // Step 4.
+ UrlHelper::SetPassword(url, value);
+ // Step 5.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-pathname
+ fn Pathname(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 3.
+ None => USVString(String::new()),
+ // Steps 4-5.
+ Some(ref url) => UrlHelper::Pathname(url)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-pathname
+ fn SetPathname(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.non_relative_scheme_data().is_some() { return; }
+ // Step 5.
+ UrlHelper::SetPathname(url, value);
+ // Step 6.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-port
+ fn Port(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 3.
+ None => USVString(String::new()),
+ // Step 4.
+ Some(ref url) => UrlHelper::Port(url)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-port
+ fn SetPort(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.host().is_none() ||
+ url.non_relative_scheme_data().is_some() ||
+ url.scheme == "file" {
+ return;
+ }
+ // Step 4.
+ UrlHelper::SetPort(url, value);
+ // Step 5.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-protocol
+ fn Protocol(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 2.
+ None => USVString(":".to_owned()),
+ // Step 3.
+ Some(ref url) => UrlHelper::Protocol(url)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-protocol
+ fn SetProtocol(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 2.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ // Step 3.
+ UrlHelper::SetProtocol(url, value);
+ // Step 4.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-search
+ fn Search(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 2.
+ None => USVString(String::new()),
+ // Step 3.
+ Some(ref url) => UrlHelper::Search(url)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-search
+ fn SetSearch(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ // Steps 4-5.
+ // TODO add this element's node document character encoding as
+ // encoding override (as described in the spec)
+ UrlHelper::SetSearch(url, value);
+ // Step 6.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-username
+ fn Username(&self) -> USVString {
+ // Step 1.
+ self.reinitialize_url();
+
+ match *self.url.borrow() {
+ // Step 2.
+ None => USVString(String::new()),
+ // Step 3.
+ Some(ref url) => UrlHelper::Username(url)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-username
+ fn SetUsername(&self, value: USVString) {
+ // Step 1.
+ self.reinitialize_url();
+
+ // Step 3.
+ if let Some(url) = self.url.borrow_mut().as_mut() {
+ if url.host().is_none() || url.non_relative_scheme_data().is_some() {
+ return;
+ }
+
+ // Step 4.
+ UrlHelper::SetUsername(url, value);
+ // Step 5.
+ self.update_href();
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-hyperlink-href
+ fn Stringifier(&self) -> DOMString {
+ DOMString::from(self.Href().0)
+ }
}
impl Activatable for HTMLAnchorElement {
diff --git a/components/script/dom/urlhelper.rs b/components/script/dom/urlhelper.rs
index 580c541502df..dd690967fcf5 100644
--- a/components/script/dom/urlhelper.rs
+++ b/components/script/dom/urlhelper.rs
@@ -21,6 +21,7 @@ impl UrlHelper {
}
pub fn SetHash(url: &mut Url, value: USVString) {
+ url.fragment = Some(String::new());
let mut wrapper = UrlUtilsWrapper { url: url, parser: &UrlParser::new() };
let _ = wrapper.set_fragment(&value.0);
}
@@ -101,6 +102,7 @@ impl UrlHelper {
}
pub fn SetPathname(url: &mut Url, value: USVString) {
+ url.path_mut().map(|path| {path.clear();});
let mut wrapper = UrlUtilsWrapper { url: url, parser: &UrlParser::new() };
let _ = wrapper.set_path(&value.0);
}
@@ -149,6 +151,7 @@ impl UrlHelper {
}
pub fn SetSearch(url: &mut Url, value: USVString) {
+ url.query = Some(String::new());
let mut wrapper = UrlUtilsWrapper { url: url, parser: &UrlParser::new() };
let _ = wrapper.set_query(&value.0);
}
diff --git a/components/script/dom/webidls/HTMLAnchorElement.webidl b/components/script/dom/webidls/HTMLAnchorElement.webidl
index 6585e1ccc56a..bfca9b31b7d7 100644
--- a/components/script/dom/webidls/HTMLAnchorElement.webidl
+++ b/components/script/dom/webidls/HTMLAnchorElement.webidl
@@ -26,7 +26,7 @@ interface HTMLAnchorElement : HTMLElement {
// also has obsolete members
};
-//HTMLAnchorElement implements HTMLHyperlinkElementUtils;
+HTMLAnchorElement implements HTMLHyperlinkElementUtils;
// https://html.spec.whatwg.org/multipage/#HTMLAnchorElement-partial
partial interface HTMLAnchorElement {
diff --git a/components/script/dom/webidls/HTMLHyperlinkElementUtils.webidl b/components/script/dom/webidls/HTMLHyperlinkElementUtils.webidl
index c8d7a35493db..0efcea097102 100644
--- a/components/script/dom/webidls/HTMLHyperlinkElementUtils.webidl
+++ b/components/script/dom/webidls/HTMLHyperlinkElementUtils.webidl
@@ -4,17 +4,23 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlhyperlinkelementutils
-//[NoInterfaceObject/*, Exposed=Window*/]
-//interface HTMLHyperlinkElementUtils {
+[NoInterfaceObject/*, Exposed=Window*/]
+interface HTMLHyperlinkElementUtils {
// stringifier attribute USVString href;
+ attribute USVString href;
// attribute USVString origin;
-// attribute USVString protocol;
-// attribute USVString username;
-// attribute USVString password;
-// attribute USVString host;
-// attribute USVString hostname;
-// attribute USVString port;
-// attribute USVString pathname;
-// attribute USVString search;
-// attribute USVString hash;
-//};
+ attribute USVString protocol;
+ attribute USVString username;
+ attribute USVString password;
+ attribute USVString host;
+ attribute USVString hostname;
+ attribute USVString port;
+ attribute USVString pathname;
+ attribute USVString search;
+ attribute USVString hash;
+
+ // Adding a separate stringifier method until
+ // https://github.com/servo/servo/issues/7590 adds attribute stringifier
+ // support.
+ stringifier;
+};
diff --git a/tests/wpt/metadata/dom/nodes/DOMImplementation-createHTMLDocument.html.ini b/tests/wpt/metadata/dom/nodes/DOMImplementation-createHTMLDocument.html.ini
deleted file mode 100644
index e3b7441b1119..000000000000
--- a/tests/wpt/metadata/dom/nodes/DOMImplementation-createHTMLDocument.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[DOMImplementation-createHTMLDocument.html]
- type: testharness
- [createHTMLDocument(): URL parsing]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/dom/nodes/Document-constructor.html.ini b/tests/wpt/metadata/dom/nodes/Document-constructor.html.ini
deleted file mode 100644
index d86bc27bc9a0..000000000000
--- a/tests/wpt/metadata/dom/nodes/Document-constructor.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[Document-constructor.html]
- type: testharness
- [new Document(): URL parsing]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/encoding/big5-encoder.html.ini b/tests/wpt/metadata/encoding/big5-encoder.html.ini
index 5974166bd02a..431c4e645415 100644
--- a/tests/wpt/metadata/encoding/big5-encoder.html.ini
+++ b/tests/wpt/metadata/encoding/big5-encoder.html.ini
@@ -1,8 +1,5 @@
[big5-encoder.html]
type: testharness
- [big5 encoder: very basic]
- expected: FAIL
-
[big5 encoder: Highest-pointer BMP character excluded from encoder]
expected: FAIL
diff --git a/tests/wpt/metadata/encoding/gb18030-encoder.html.ini b/tests/wpt/metadata/encoding/gb18030-encoder.html.ini
index 75992eb01e78..f62ff10c0f27 100644
--- a/tests/wpt/metadata/encoding/gb18030-encoder.html.ini
+++ b/tests/wpt/metadata/encoding/gb18030-encoder.html.ini
@@ -1,8 +1,5 @@
[gb18030-encoder.html]
type: testharness
- [gb18030 encoder: very basic]
- expected: FAIL
-
[gb18030 encoder: Euro]
expected: FAIL
diff --git a/tests/wpt/metadata/encoding/gbk-encoder.html.ini b/tests/wpt/metadata/encoding/gbk-encoder.html.ini
index 05dda500d111..7450b41b6ede 100644
--- a/tests/wpt/metadata/encoding/gbk-encoder.html.ini
+++ b/tests/wpt/metadata/encoding/gbk-encoder.html.ini
@@ -1,8 +1,5 @@
[gbk-encoder.html]
type: testharness
- [gbk encoder: very basic]
- expected: FAIL
-
[gbk encoder: Euro]
expected: FAIL
diff --git a/tests/wpt/metadata/encoding/iso-2022-jp-encoder.html.ini b/tests/wpt/metadata/encoding/iso-2022-jp-encoder.html.ini
index 867e2dd11aed..cbecd5b61305 100644
--- a/tests/wpt/metadata/encoding/iso-2022-jp-encoder.html.ini
+++ b/tests/wpt/metadata/encoding/iso-2022-jp-encoder.html.ini
@@ -1,11 +1,5 @@
[iso-2022-jp-encoder.html]
type: testharness
- [iso-2022-jp encoder: very basic]
- expected: FAIL
-
[iso-2022-jp encoder: basics]
expected: FAIL
- [iso-2022-jp encoder: SO/SI ESC]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
index e58ea626d365..a9daa1881ff8 100644
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ b/tests/wpt/metadata/html/dom/interfaces.html.ini
@@ -8712,72 +8712,12 @@
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "onwaiting" with the proper type (156)]
expected: FAIL
- [HTMLAnchorElement interface: attribute href]
- expected: FAIL
-
[HTMLAnchorElement interface: attribute origin]
expected: FAIL
- [HTMLAnchorElement interface: attribute protocol]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute username]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute password]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute host]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute hostname]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute port]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute pathname]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute search]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute hash]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "href" with the proper type (13)]
- expected: FAIL
-
[HTMLAnchorElement interface: document.createElement("a") must inherit property "origin" with the proper type (14)]
expected: FAIL
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "protocol" with the proper type (15)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "username" with the proper type (16)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "password" with the proper type (17)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "host" with the proper type (18)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "hostname" with the proper type (19)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "port" with the proper type (20)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type (21)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type (22)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type (23)]
- expected: FAIL
-
[HTMLAreaElement interface: attribute href]
expected: FAIL
diff --git a/tests/wpt/metadata/html/dom/reflection-embedded.html.ini b/tests/wpt/metadata/html/dom/reflection-embedded.html.ini
index d2a84f1cdbe6..32ed94238266 100644
--- a/tests/wpt/metadata/html/dom/reflection-embedded.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-embedded.html.ini
@@ -459,114 +459,6 @@
[img.tabIndex: IDL set to -2147483648 followed by getAttribute()]
expected: FAIL
- [img.src: setAttribute() to "" followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to " foo " followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to "http://site.example/" followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to "//site.example/path???@#l" followed by IDL get]
- expected: FAIL
-
- [img.src: 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 " followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to undefined followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to 7 followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to 1.5 followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to true followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to false followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to object "[object Object\]" followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to NaN followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to Infinity followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to -Infinity followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to "\\0" followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to null followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to object "test-toString" followed by IDL get]
- expected: FAIL
-
- [img.src: setAttribute() to object "test-valueOf" followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to "" followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to " foo " followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to "//site.example/path???@#l" followed by IDL get]
- expected: FAIL
-
- [img.src: 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 " followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to undefined followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to 7 followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to 1.5 followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to true followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to false followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to object "[object Object\]" followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to NaN followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to Infinity followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to -Infinity followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to "\\0" followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to null followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to object "test-toString" followed by IDL get]
- expected: FAIL
-
- [img.src: IDL set to object "test-valueOf" followed by IDL get]
- expected: FAIL
-
[img.srcset: typeof IDL attribute]
expected: FAIL
@@ -1002,9 +894,6 @@
[img.lowsrc: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [img.lowsrc: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[img.lowsrc: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -1098,9 +987,6 @@
[img.longDesc: setAttribute() to " foo " followed by IDL get]
expected: FAIL
- [img.longDesc: setAttribute() to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[img.longDesc: setAttribute() to "//site.example/path???@#l" followed by IDL get]
expected: FAIL
@@ -1152,9 +1038,6 @@
[img.longDesc: IDL set to " foo " followed by IDL get]
expected: FAIL
- [img.longDesc: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[img.longDesc: IDL set to "//site.example/path???@#l" followed by IDL get]
expected: FAIL
@@ -1383,9 +1266,6 @@
[img.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [img.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[img.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -1938,9 +1818,6 @@
[iframe.src: setAttribute() to " foo " followed by IDL get]
expected: FAIL
- [iframe.src: setAttribute() to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[iframe.src: setAttribute() to "//site.example/path???@#l" followed by IDL get]
expected: FAIL
@@ -1992,9 +1869,6 @@
[iframe.src: IDL set to " foo " followed by IDL get]
expected: FAIL
- [iframe.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[iframe.src: IDL set to "//site.example/path???@#l" followed by IDL get]
expected: FAIL
@@ -2976,9 +2850,6 @@
[iframe.longDesc: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [iframe.longDesc: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[iframe.longDesc: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -3507,9 +3378,6 @@
[iframe.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [iframe.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[iframe.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -4131,9 +3999,6 @@
[embed.src: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [embed.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[embed.src: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -5049,9 +4914,6 @@
[embed.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [embed.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[embed.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -5673,9 +5535,6 @@
[object.data: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [object.data: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[object.data: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -7452,9 +7311,6 @@
[object.codeBase: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [object.codeBase: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[object.codeBase: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -7983,9 +7839,6 @@
[object.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [object.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[object.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -9231,9 +9084,6 @@
[param.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [param.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[param.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -9855,9 +9705,6 @@
[video.src: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [video.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[video.src: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -11277,9 +11124,6 @@
[video.poster: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [video.poster: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[video.poster: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -11550,9 +11394,6 @@
[video.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [video.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[video.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -12174,9 +12015,6 @@
[audio.src: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [audio.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[audio.src: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -13338,9 +13176,6 @@
[audio.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [audio.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[audio.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -13962,9 +13797,6 @@
[source.src: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [source.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[source.src: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -14493,9 +14325,6 @@
[source.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [source.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[source.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -15462,9 +15291,6 @@
[track.src: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [track.src: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[track.src: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -16101,9 +15927,6 @@
[track.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [track.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[track.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -16833,9 +16656,6 @@
[canvas.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [canvas.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[canvas.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -17694,9 +17514,6 @@
[map.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [map.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[map.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -19512,9 +19329,6 @@
[area.href: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [area.href: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[area.href: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -19893,9 +19707,6 @@
[area.itemId: IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [area.itemId: IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[area.itemId: IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -20187,9 +19998,6 @@
[audio.itemValue (): IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [audio.itemValue (): IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[audio.itemValue (): IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -20352,9 +20160,6 @@
[embed.itemValue (): IDL set to "http://site.example/" followed by getAttribute()]
expected: FAIL
- [embed.itemValue (): IDL set to "http://site.example/" followed by IDL get]
- expected: FAIL
-
[embed.itemValue (): IDL set to "//site.example/path???@#l" followed by getAttribute()]
expected: FAIL
@@ -20517,9 +20322,6 @@
[iframe.itemValue (