Auto merge of #8267 - Ms2ger:cleanup, r=frewsxcv

Various improvements.



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8267)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2015-10-30 23:55:34 +05:30
commit 1dfc0481ef
9 changed files with 55 additions and 50 deletions

View file

@ -2000,6 +2000,7 @@ def UnionTypes(descriptors, dictionaries, callbacks, config):
'dom::bindings::conversions::StringificationBehavior', 'dom::bindings::conversions::StringificationBehavior',
'dom::bindings::error::throw_not_in_union', 'dom::bindings::error::throw_not_in_union',
'dom::bindings::js::Root', 'dom::bindings::js::Root',
'dom::bindings::str::USVString',
'dom::types::*', 'dom::types::*',
'js::jsapi::JSContext', 'js::jsapi::JSContext',
'js::jsapi::{HandleValue, MutableHandleValue}', 'js::jsapi::{HandleValue, MutableHandleValue}',
@ -3492,6 +3493,9 @@ def getUnionTypeTemplateVars(type, descriptorProvider):
elif type.isDOMString(): elif type.isDOMString():
name = type.name name = type.name
typeName = "DOMString" typeName = "DOMString"
elif type.isUSVString():
name = type.name
typeName = "USVString"
elif type.isPrimitive(): elif type.isPrimitive():
name = type.name name = type.name
typeName = builtinNames[type.tag()] typeName = builtinNames[type.tag()]

View file

@ -12,6 +12,8 @@ use dom::bindings::codegen::Bindings::TestBindingBinding::TestEnum::_empty;
use dom::bindings::codegen::UnionTypes::BlobOrString; use dom::bindings::codegen::UnionTypes::BlobOrString;
use dom::bindings::codegen::UnionTypes::EventOrString; use dom::bindings::codegen::UnionTypes::EventOrString;
use dom::bindings::codegen::UnionTypes::EventOrString::eString; use dom::bindings::codegen::UnionTypes::EventOrString::eString;
use dom::bindings::codegen::UnionTypes::EventOrUSVString;
use dom::bindings::codegen::UnionTypes::EventOrUSVString::eUSVString;
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong; use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong::eLong; use dom::bindings::codegen::UnionTypes::HTMLElementOrLong::eLong;
use dom::bindings::global::{GlobalField, GlobalRef}; use dom::bindings::global::{GlobalField, GlobalRef};
@ -77,6 +79,8 @@ impl TestBindingMethods for TestBinding {
fn SetUnionAttribute(&self, _: HTMLElementOrLong) {} fn SetUnionAttribute(&self, _: HTMLElementOrLong) {}
fn Union2Attribute(&self) -> EventOrString { eString("".to_owned()) } fn Union2Attribute(&self) -> EventOrString { eString("".to_owned()) }
fn SetUnion2Attribute(&self, _: EventOrString) {} fn SetUnion2Attribute(&self, _: EventOrString) {}
fn Union3Attribute(&self) -> EventOrUSVString { eUSVString(USVString("".to_owned())) }
fn SetUnion3Attribute(&self, _: EventOrUSVString) {}
fn ArrayAttribute(&self, _: *mut JSContext) -> *mut JSObject { NullValue().to_object_or_null() } fn ArrayAttribute(&self, _: *mut JSContext) -> *mut JSObject { NullValue().to_object_or_null() }
fn AnyAttribute(&self, _: *mut JSContext) -> JSVal { NullValue() } fn AnyAttribute(&self, _: *mut JSContext) -> JSVal { NullValue() }
fn SetAnyAttribute(&self, _: *mut JSContext, _: HandleValue) {} fn SetAnyAttribute(&self, _: *mut JSContext, _: HandleValue) {}

View file

@ -22,22 +22,20 @@ use util::str::DOMString;
#[dom_struct] #[dom_struct]
pub struct TextEncoder { pub struct TextEncoder {
reflector_: Reflector, reflector_: Reflector,
encoding: DOMString,
#[ignore_heap_size_of = "Defined in rust-encoding"] #[ignore_heap_size_of = "Defined in rust-encoding"]
encoder: EncodingRef, encoder: EncodingRef,
} }
impl TextEncoder { impl TextEncoder {
fn new_inherited(encoding: DOMString, encoder: EncodingRef) -> TextEncoder { fn new_inherited(encoder: EncodingRef) -> TextEncoder {
TextEncoder { TextEncoder {
reflector_: Reflector::new(), reflector_: Reflector::new(),
encoding: encoding,
encoder: encoder, encoder: encoder,
} }
} }
pub fn new(global: GlobalRef, encoding: DOMString, encoder: EncodingRef) -> Root<TextEncoder> { pub fn new(global: GlobalRef, encoder: EncodingRef) -> Root<TextEncoder> {
reflect_dom_object(box TextEncoder::new_inherited(encoding, encoder), reflect_dom_object(box TextEncoder::new_inherited(encoder),
global, global,
TextEncoderBinding::Wrap) TextEncoderBinding::Wrap)
} }
@ -55,7 +53,7 @@ impl TextEncoder {
match encoding.name() { match encoding.name() {
"utf-8" | "utf-16be" | "utf-16le" => { "utf-8" | "utf-16be" | "utf-16le" => {
Ok(TextEncoder::new(global, encoding.name().to_owned(), encoding)) Ok(TextEncoder::new(global, encoding))
} }
_ => { _ => {
debug!("Encoding Not UTF"); debug!("Encoding Not UTF");
@ -68,7 +66,7 @@ impl TextEncoder {
impl TextEncoderMethods for TextEncoder { impl TextEncoderMethods for TextEncoder {
// https://encoding.spec.whatwg.org/#dom-textencoder-encoding // https://encoding.spec.whatwg.org/#dom-textencoder-encoding
fn Encoding(&self) -> DOMString { fn Encoding(&self) -> DOMString {
self.encoding.clone() self.encoder.name().to_owned()
} }
#[allow(unsafe_code)] #[allow(unsafe_code)]

View file

@ -5,11 +5,12 @@
use dom::bindings::cell::DOMRefCell; use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::URLSearchParamsBinding; use dom::bindings::codegen::Bindings::URLSearchParamsBinding;
use dom::bindings::codegen::Bindings::URLSearchParamsBinding::URLSearchParamsMethods; use dom::bindings::codegen::Bindings::URLSearchParamsBinding::URLSearchParamsMethods;
use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams; use dom::bindings::codegen::UnionTypes::USVStringOrURLSearchParams;
use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams::{eString, eURLSearchParams}; use dom::bindings::codegen::UnionTypes::USVStringOrURLSearchParams::{eUSVString, eURLSearchParams};
use dom::bindings::error::Fallible; use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
use dom::bindings::str::USVString;
use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::bindings::utils::{Reflector, reflect_dom_object};
use encoding::types::EncodingRef; use encoding::types::EncodingRef;
use url::form_urlencoded::{parse, serialize_with_encoding}; use url::form_urlencoded::{parse, serialize_with_encoding};
@ -20,7 +21,7 @@ use util::str::DOMString;
pub struct URLSearchParams { pub struct URLSearchParams {
reflector_: Reflector, reflector_: Reflector,
// https://url.spec.whatwg.org/#concept-urlsearchparams-list // https://url.spec.whatwg.org/#concept-urlsearchparams-list
list: DOMRefCell<Vec<(DOMString, DOMString)>>, list: DOMRefCell<Vec<(String, String)>>,
} }
impl URLSearchParams { impl URLSearchParams {
@ -37,14 +38,14 @@ impl URLSearchParams {
} }
// https://url.spec.whatwg.org/#dom-urlsearchparams-urlsearchparams // https://url.spec.whatwg.org/#dom-urlsearchparams-urlsearchparams
pub fn Constructor(global: GlobalRef, init: Option<StringOrURLSearchParams>) -> pub fn Constructor(global: GlobalRef, init: Option<USVStringOrURLSearchParams>) ->
Fallible<Root<URLSearchParams>> { Fallible<Root<URLSearchParams>> {
// Step 1. // Step 1.
let query = URLSearchParams::new(global); let query = URLSearchParams::new(global);
match init { match init {
Some(eString(init)) => { Some(eUSVString(init)) => {
// Step 2. // Step 2.
*query.r().list.borrow_mut() = parse(init.as_bytes()); *query.r().list.borrow_mut() = parse(init.0.as_bytes());
}, },
Some(eURLSearchParams(init)) => { Some(eURLSearchParams(init)) => {
// Step 3. // Step 3.
@ -59,27 +60,27 @@ impl URLSearchParams {
impl URLSearchParamsMethods for URLSearchParams { impl URLSearchParamsMethods for URLSearchParams {
// https://url.spec.whatwg.org/#dom-urlsearchparams-append // https://url.spec.whatwg.org/#dom-urlsearchparams-append
fn Append(&self, name: DOMString, value: DOMString) { fn Append(&self, name: USVString, value: USVString) {
// Step 1. // Step 1.
self.list.borrow_mut().push((name, value)); self.list.borrow_mut().push((name.0, value.0));
// Step 2. // Step 2.
self.update_steps(); self.update_steps();
} }
// https://url.spec.whatwg.org/#dom-urlsearchparams-delete // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
fn Delete(&self, name: DOMString) { fn Delete(&self, name: USVString) {
// Step 1. // Step 1.
self.list.borrow_mut().retain(|&(ref k, _)| k != &name); self.list.borrow_mut().retain(|&(ref k, _)| k != &name.0);
// Step 2. // Step 2.
self.update_steps(); self.update_steps();
} }
// https://url.spec.whatwg.org/#dom-urlsearchparams-get // https://url.spec.whatwg.org/#dom-urlsearchparams-get
fn Get(&self, name: DOMString) -> Option<DOMString> { fn Get(&self, name: USVString) -> Option<USVString> {
let list = self.list.borrow(); let list = self.list.borrow();
list.iter().filter_map(|&(ref k, ref v)| { list.iter().filter_map(|&(ref k, ref v)| {
if k == &name { if k == &name.0 {
Some(v.clone()) Some(USVString(v.clone()))
} else { } else {
None None
} }
@ -87,31 +88,31 @@ impl URLSearchParamsMethods for URLSearchParams {
} }
// https://url.spec.whatwg.org/#dom-urlsearchparams-has // https://url.spec.whatwg.org/#dom-urlsearchparams-has
fn Has(&self, name: DOMString) -> bool { fn Has(&self, name: USVString) -> bool {
let list = self.list.borrow(); let list = self.list.borrow();
list.iter().find(|&&(ref k, _)| k == &name).is_some() list.iter().any(|&(ref k, _)| k == &name.0)
} }
// https://url.spec.whatwg.org/#dom-urlsearchparams-set // https://url.spec.whatwg.org/#dom-urlsearchparams-set
fn Set(&self, name: DOMString, value: DOMString) { fn Set(&self, name: USVString, value: USVString) {
let mut list = self.list.borrow_mut(); let mut list = self.list.borrow_mut();
let mut index = None; let mut index = None;
let mut i = 0; let mut i = 0;
list.retain(|&(ref k, _)| { list.retain(|&(ref k, _)| {
if index.is_none() { if index.is_none() {
if k == &name { if k == &name.0 {
index = Some(i); index = Some(i);
} else { } else {
i += 1; i += 1;
} }
true true
} else { } else {
k != &name k != &name.0
} }
}); });
match index { match index {
Some(index) => list[index].1 = value, Some(index) => list[index].1 = value.0,
None => list.push((name, value)), None => list.push((name.0, value.0)),
}; };
self.update_steps(); self.update_steps();
} }
@ -125,7 +126,7 @@ impl URLSearchParamsMethods for URLSearchParams {
impl URLSearchParams { impl URLSearchParams {
// https://url.spec.whatwg.org/#concept-urlencoded-serializer // https://url.spec.whatwg.org/#concept-urlencoded-serializer
pub fn serialize(&self, encoding: Option<EncodingRef>) -> DOMString { pub fn serialize(&self, encoding: Option<EncodingRef>) -> String {
let list = self.list.borrow(); let list = self.list.borrow();
serialize_with_encoding(list.iter(), encoding) serialize_with_encoding(list.iter(), encoding)
} }

View file

@ -89,6 +89,7 @@ interface TestBinding {
attribute Blob interfaceAttribute; attribute Blob interfaceAttribute;
attribute (HTMLElement or long) unionAttribute; attribute (HTMLElement or long) unionAttribute;
attribute (Event or DOMString) union2Attribute; attribute (Event or DOMString) union2Attribute;
attribute (Event or USVString) union3Attribute;
readonly attribute Uint8ClampedArray arrayAttribute; readonly attribute Uint8ClampedArray arrayAttribute;
attribute any anyAttribute; attribute any anyAttribute;
attribute object objectAttribute; attribute object objectAttribute;

View file

@ -7,14 +7,14 @@
* https://url.spec.whatwg.org/#interface-urlsearchparams * https://url.spec.whatwg.org/#interface-urlsearchparams
*/ */
[Constructor(optional (DOMString or URLSearchParams) init/* = ""*/)] [Constructor(optional (USVString or URLSearchParams) init/* = ""*/)]
interface URLSearchParams { interface URLSearchParams {
void append(DOMString name, DOMString value); void append(USVString name, USVString value);
void delete(DOMString name); void delete(USVString name);
DOMString? get(DOMString name); USVString? get(USVString name);
// sequence<DOMString> getAll(DOMString name); // sequence<USVString> getAll(USVString name);
boolean has(DOMString name); boolean has(USVString name);
void set(DOMString name, DOMString value); void set(USVString name, USVString value);
// iterable<USVString, USVString>; // iterable<USVString, USVString>;
stringifier; stringifier;
}; };

View file

@ -1110,7 +1110,7 @@ impl Extractable for SendParam {
}, },
eURLSearchParams(ref usp) => { eURLSearchParams(ref usp) => {
// Default encoding is UTF-8. // Default encoding is UTF-8.
usp.r().serialize(None).as_bytes().to_owned() usp.r().serialize(None).into_bytes()
}, },
} }
} }

View file

@ -1656,9 +1656,7 @@ impl ScriptTask {
} }
fn notify_devtools(&self, title: DOMString, url: Url, ids: (PipelineId, Option<WorkerId>)) { fn notify_devtools(&self, title: DOMString, url: Url, ids: (PipelineId, Option<WorkerId>)) {
match self.devtools_chan { if let Some(ref chan) = self.devtools_chan {
None => {}
Some(ref chan) => {
let page_info = DevtoolsPageInfo { let page_info = DevtoolsPageInfo {
title: title, title: title,
url: url, url: url,
@ -1669,7 +1667,6 @@ impl ScriptTask {
page_info)).unwrap(); page_info)).unwrap();
} }
} }
}
fn scroll_fragment_point(&self, pipeline_id: PipelineId, element: &Element) { fn scroll_fragment_point(&self, pipeline_id: PipelineId, element: &Element) {
let rect = element.upcast::<Node>().get_bounding_content_box(); let rect = element.upcast::<Node>().get_bounding_content_box();

View file

@ -114,7 +114,7 @@ pub fn handle_get_frame_id(page: &Rc<Page>,
pub fn handle_find_element_css(page: &Rc<Page>, _pipeline: PipelineId, selector: String, pub fn handle_find_element_css(page: &Rc<Page>, _pipeline: PipelineId, selector: String,
reply: IpcSender<Result<Option<String>, ()>>) { reply: IpcSender<Result<Option<String>, ()>>) {
reply.send(match page.document().r().QuerySelector(selector.clone()) { reply.send(match page.document().r().QuerySelector(selector) {
Ok(node) => { Ok(node) => {
Ok(node.map(|x| x.upcast::<Node>().get_unique_id())) Ok(node.map(|x| x.upcast::<Node>().get_unique_id()))
} }
@ -126,7 +126,7 @@ pub fn handle_find_elements_css(page: &Rc<Page>,
_pipeline: PipelineId, _pipeline: PipelineId,
selector: String, selector: String,
reply: IpcSender<Result<Vec<String>, ()>>) { reply: IpcSender<Result<Vec<String>, ()>>) {
reply.send(match page.document().r().QuerySelectorAll(selector.clone()) { reply.send(match page.document().r().QuerySelectorAll(selector) {
Ok(ref nodes) => { Ok(ref nodes) => {
let mut result = Vec::with_capacity(nodes.r().Length() as usize); let mut result = Vec::with_capacity(nodes.r().Length() as usize);
for i in 0..nodes.r().Length() { for i in 0..nodes.r().Length() {