Auto merge of #8477 - asajeffrey:opaque-domstring, r=asajeffrey

Opaque DOMString

This patch makes DOMString an opaque wrapper round String (currently it's a transparent wrapper).

The changes are:

* Replacing DOMString(foo) by DOMString::from(foo).
* Replacing foo.0 by String::from(foo).
* Adding functions clear, push_str and extend for in-place mutation of DOMStrings.
* Replacing DOMString by String in other threads (devtools, storage and filereader).
* Making DOMString implement !Send.
* Removing the pub attribute from the contents of DOMString.

This enables experimenting with other string representations in the DOM.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8477)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2015-11-13 07:17:30 +05:30
commit 62acdd303b
75 changed files with 373 additions and 334 deletions

View file

@ -825,7 +825,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
default = "None"
else:
assert defaultValue.type.tag() == IDLType.Tags.domstring
default = 'DOMString("%s".to_owned())' % defaultValue.value
default = 'DOMString::from("%s")' % defaultValue.value
if type.nullable():
default = "Some(%s)" % default

View file

@ -159,7 +159,8 @@ impl FromJSValConvertible for USVString {
}
let latin1 = JS_StringHasLatin1Chars(jsstr);
if latin1 {
return Ok(USVString(jsstring_to_str(cx, jsstr).0));
// FIXME(ajeffrey): Convert directly from DOMString to USVString
return Ok(USVString(String::from(jsstring_to_str(cx, jsstr))));
}
let mut length = 0;
let chars = JS_GetTwoByteStringCharsAndLength(cx, ptr::null(), jsstr, &mut length);