diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-03 13:53:48 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-06 14:12:20 +0200 |
commit | c557736d26abf2f5de4dd5fe43623766c8342d72 (patch) | |
tree | 80c9d850a7ef7f4e4bb22bd542d22c8d0f6e002f | |
parent | 1906f835b9e9e99ed65e183e3c52c983ed8a651a (diff) | |
download | servo-c557736d26abf2f5de4dd5fe43623766c8342d72.tar.gz servo-c557736d26abf2f5de4dd5fe43623766c8342d72.zip |
Fix xml_name_type()
Names with a trailing colon are not qualified names.
5 files changed, 9 insertions, 35 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 64080fbdfce..7faca76b6c6 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -653,7 +653,7 @@ pub fn xml_name_type(name: &str) -> XMLName { let mut iter = name.chars(); let mut non_qname_colons = false; let mut seen_colon = false; - match iter.next() { + let mut last = match iter.next() { None => return XMLName::InvalidXMLName, Some(c) => { if !is_valid_start(c) { @@ -662,10 +662,11 @@ pub fn xml_name_type(name: &str) -> XMLName { if c == ':' { non_qname_colons = true; } + c } - } + }; - for c in name.chars() { + for c in iter { if !is_valid_continuation(c) { return XMLName::InvalidXMLName; } @@ -675,6 +676,11 @@ pub fn xml_name_type(name: &str) -> XMLName { false => seen_colon = true } } + last = c + } + + if last == ':' { + non_qname_colons = true } match non_qname_colons { diff --git a/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocument.html.ini b/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocument.html.ini index 2c72acd4796..8d02570c391 100644 --- a/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocument.html.ini +++ b/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocument.html.ini @@ -6,27 +6,18 @@ [createDocument test 41: undefined,"xmlns",null,"NAMESPACE_ERR"] expected: FAIL - [createDocument test 52: "http://example.com/","foo:",null,"NAMESPACE_ERR"] - expected: FAIL - [createDocument test 64: "http://example.com/","xmlns",null,"NAMESPACE_ERR"] expected: FAIL [createDocument test 69: "http://example.com/","xmlns:foo",null,"NAMESPACE_ERR"] expected: FAIL - [createDocument test 106: "/","foo:",null,"NAMESPACE_ERR"] - expected: FAIL - [createDocument test 108: "/","xmlns",null,"NAMESPACE_ERR"] expected: FAIL [createDocument test 111: "/","xmlns:foo",null,"NAMESPACE_ERR"] expected: FAIL - [createDocument test 119: "http://www.w3.org/XML/1998/namespace","foo:",null,"NAMESPACE_ERR"] - expected: FAIL - [createDocument test 121: "http://www.w3.org/XML/1998/namespace","xmlns",null,"NAMESPACE_ERR"] expected: FAIL @@ -36,9 +27,6 @@ [createDocument test 141: "http://www.w3.org/2000/xmlns/","foo:xmlns",null,"NAMESPACE_ERR"] expected: FAIL - [createDocument test 148: "foo:","foo:",null,"NAMESPACE_ERR"] - expected: FAIL - [createDocument test 150: "foo:","xmlns",null,"NAMESPACE_ERR"] expected: FAIL diff --git a/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocumentType.html.ini b/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocumentType.html.ini deleted file mode 100644 index f12bf008449..00000000000 --- a/tests/wpt/metadata/dom/nodes/DOMImplementation-createDocumentType.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[DOMImplementation-createDocumentType.html] - type: testharness - [createDocumentType("foo:", "", "") should throw NAMESPACE_ERR] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/nodes/Document-createElementNS.html.ini b/tests/wpt/metadata/dom/nodes/Document-createElementNS.html.ini index b09e14e9d2b..69ab187bf8d 100644 --- a/tests/wpt/metadata/dom/nodes/Document-createElementNS.html.ini +++ b/tests/wpt/metadata/dom/nodes/Document-createElementNS.html.ini @@ -6,27 +6,18 @@ [createElementNS test 41: undefined,"xmlns","NAMESPACE_ERR"] expected: FAIL - [createElementNS test 52: "http://example.com/","foo:","NAMESPACE_ERR"] - expected: FAIL - [createElementNS test 64: "http://example.com/","xmlns","NAMESPACE_ERR"] expected: FAIL [createElementNS test 69: "http://example.com/","xmlns:foo","NAMESPACE_ERR"] expected: FAIL - [createElementNS test 106: "/","foo:","NAMESPACE_ERR"] - expected: FAIL - [createElementNS test 108: "/","xmlns","NAMESPACE_ERR"] expected: FAIL [createElementNS test 111: "/","xmlns:foo","NAMESPACE_ERR"] expected: FAIL - [createElementNS test 119: "http://www.w3.org/XML/1998/namespace","foo:","NAMESPACE_ERR"] - expected: FAIL - [createElementNS test 121: "http://www.w3.org/XML/1998/namespace","xmlns","NAMESPACE_ERR"] expected: FAIL @@ -36,9 +27,6 @@ [createElementNS test 141: "http://www.w3.org/2000/xmlns/","foo:xmlns","NAMESPACE_ERR"] expected: FAIL - [createElementNS test 148: "foo:","foo:","NAMESPACE_ERR"] - expected: FAIL - [createElementNS test 150: "foo:","xmlns","NAMESPACE_ERR"] expected: FAIL diff --git a/tests/wpt/metadata/dom/nodes/attributes.html.ini b/tests/wpt/metadata/dom/nodes/attributes.html.ini index 27d1981425b..267ead81199 100644 --- a/tests/wpt/metadata/dom/nodes/attributes.html.ini +++ b/tests/wpt/metadata/dom/nodes/attributes.html.ini @@ -1,8 +1,5 @@ [attributes.html] type: testharness - [When qualifiedName does not match the QName production, an NAMESPACE_ERR exception is to be thrown.] - expected: FAIL - [Attribute with prefix in local name] expected: FAIL |