aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2015-04-03 13:53:48 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2015-04-06 14:12:20 +0200
commitc557736d26abf2f5de4dd5fe43623766c8342d72 (patch)
tree80c9d850a7ef7f4e4bb22bd542d22c8d0f6e002f
parent1906f835b9e9e99ed65e183e3c52c983ed8a651a (diff)
downloadservo-c557736d26abf2f5de4dd5fe43623766c8342d72.tar.gz
servo-c557736d26abf2f5de4dd5fe43623766c8342d72.zip
Fix xml_name_type()
Names with a trailing colon are not qualified names.
-rw-r--r--components/script/dom/bindings/utils.rs12
-rw-r--r--tests/wpt/metadata/dom/nodes/DOMImplementation-createDocument.html.ini12
-rw-r--r--tests/wpt/metadata/dom/nodes/DOMImplementation-createDocumentType.html.ini5
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-createElementNS.html.ini12
-rw-r--r--tests/wpt/metadata/dom/nodes/attributes.html.ini3
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