diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-07 23:20:56 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-08 10:22:28 +0200 |
commit | abc01d598afca71f419053b3e886769d874003b0 (patch) | |
tree | 2f2a21c0eacc8a430f9796f173c8c3c108661847 /components/script/dom/bindings/utils.rs | |
parent | 7e07dcc7ee964e89cbb263ebca6db71fac22cf05 (diff) | |
download | servo-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.rs | 17 |
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)] |