aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/utils.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2015-04-07 23:20:56 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2015-04-08 10:22:28 +0200
commitabc01d598afca71f419053b3e886769d874003b0 (patch)
tree2f2a21c0eacc8a430f9796f173c8c3c108661847 /components/script/dom/bindings/utils.rs
parent7e07dcc7ee964e89cbb263ebca6db71fac22cf05 (diff)
downloadservo-abc01d598afca71f419053b3e886769d874003b0.tar.gz
servo-abc01d598afca71f419053b3e886769d874003b0.zip
Add script::dom::utils::validate_qualified_name()
Diffstat (limited to 'components/script/dom/bindings/utils.rs')
-rw-r--r--components/script/dom/bindings/utils.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index 7faca76b6c6..97f6eaf9392 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -7,7 +7,7 @@
use dom::bindings::codegen::PrototypeList;
use dom::bindings::codegen::PrototypeList::MAX_PROTO_CHAIN_LENGTH;
use dom::bindings::conversions::{native_from_reflector_jsmanaged, is_dom_class};
-use dom::bindings::error::throw_type_error;
+use dom::bindings::error::{Error, ErrorResult, throw_type_error};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{Temporary, Root};
use dom::browsercontext;
@@ -604,6 +604,21 @@ pub unsafe fn delete_property_by_id(cx: *mut JSContext, object: *mut JSObject,
return true;
}
+/// Validate a qualified name. See https://dom.spec.whatwg.org/#validate for details.
+pub fn validate_qualified_name(qualified_name: &str) -> ErrorResult {
+ match xml_name_type(qualified_name) {
+ XMLName::InvalidXMLName => {
+ // Step 1.
+ return Err(Error::InvalidCharacter);
+ },
+ XMLName::Name => {
+ // Step 2.
+ return Err(Error::Namespace);
+ },
+ XMLName::QName => Ok(())
+ }
+}
+
/// Results of `xml_name_type`.
#[derive(PartialEq)]
#[allow(missing_docs)]