diff options
author | Dan Robertson <dan@dlrobertson.com> | 2018-12-14 03:59:03 +0000 |
---|---|---|
committer | Dan Robertson <dan@dlrobertson.com> | 2018-12-17 15:28:42 +0000 |
commit | c46508e497e503c8fd42deb26aa536060334a9c9 (patch) | |
tree | 526fba0f92f508c9e54559cde967241dd118378f /components/script/dom/bindings/str.rs | |
parent | 1e983d86c05d988779177775ee1ef9b835400960 (diff) | |
download | servo-c46508e497e503c8fd42deb26aa536060334a9c9.tar.gz servo-c46508e497e503c8fd42deb26aa536060334a9c9.zip |
Update src/href attributes to be a USVString
The following IDLs have the src/href attributes typed as a DOMString
while in the spec the attribute has been updated to be a USVString:
- HTMLIFrameElement
- HTMLImageElement
- HTMLInputElement
- HTMLLinkElement
- HTMLMediaElement
- HTMLScriptElement
Diffstat (limited to 'components/script/dom/bindings/str.rs')
-rw-r--r-- | components/script/dom/bindings/str.rs | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs index 28a429f846c..3142f011c9b 100644 --- a/components/script/dom/bindings/str.rs +++ b/components/script/dom/bindings/str.rs @@ -79,9 +79,63 @@ impl ops::Deref for ByteString { /// A string that is constructed from a UCS-2 buffer by replacing invalid code /// points with the replacement character. -#[derive(Clone, Default, MallocSizeOf)] +#[derive(Clone, Default, Eq, MallocSizeOf, Ord, PartialEq, PartialOrd)] pub struct USVString(pub String); +impl Borrow<str> for USVString { + #[inline] + fn borrow(&self) -> &str { + &self.0 + } +} + +impl Deref for USVString { + type Target = str; + + #[inline] + fn deref(&self) -> &str { + &self.0 + } +} + +impl DerefMut for USVString { + #[inline] + fn deref_mut(&mut self) -> &mut str { + &mut self.0 + } +} + +impl AsRef<str> for USVString { + fn as_ref(&self) -> &str { + &self.0 + } +} + +impl fmt::Display for USVString { + #[inline] + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl PartialEq<str> for USVString { + fn eq(&self, other: &str) -> bool { + &**self == other + } +} + +impl<'a> PartialEq<&'a str> for USVString { + fn eq(&self, other: &&'a str) -> bool { + &**self == *other + } +} + +impl From<String> for USVString { + fn from(contents: String) -> USVString { + USVString(contents) + } +} + /// Returns whether `s` is a `token`, as defined by /// [RFC 2616](http://tools.ietf.org/html/rfc2616#page-17). pub fn is_token(s: &[u8]) -> bool { |