diff options
Diffstat (limited to 'src/components/script')
-rw-r--r-- | src/components/script/dom/bindings/proxyhandler.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/bindings/utils.rs | 8 | ||||
-rw-r--r-- | src/components/script/dom/document.rs | 13 | ||||
-rw-r--r-- | src/components/script/dom/element.rs | 18 | ||||
-rw-r--r-- | src/components/script/dom/formdata.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmliframeelement.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmlimageelement.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/node.rs | 4 | ||||
-rw-r--r-- | src/components/script/dom/window.rs | 3 | ||||
-rw-r--r-- | src/components/script/html/cssparse.rs | 48 | ||||
-rw-r--r-- | src/components/script/html/hubbub_html_parser.rs | 4 | ||||
-rw-r--r-- | src/components/script/script.rc | 2 | ||||
-rw-r--r-- | src/components/script/script_task.rs | 12 |
13 files changed, 72 insertions, 48 deletions
diff --git a/src/components/script/dom/bindings/proxyhandler.rs b/src/components/script/dom/bindings/proxyhandler.rs index a96ba1b08e4..5201b724070 100644 --- a/src/components/script/dom/bindings/proxyhandler.rs +++ b/src/components/script/dom/bindings/proxyhandler.rs @@ -16,7 +16,7 @@ use std::cast; use std::libc; use std::ptr; use std::str; -use std::sys::size_of; +use std::mem::size_of; type c_bool = libc::c_int; diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 87fa9477e52..6cb7cacea92 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -39,7 +39,7 @@ use js; static TOSTRING_CLASS_RESERVED_SLOT: libc::size_t = 0; static TOSTRING_NAME_RESERVED_SLOT: libc::size_t = 1; -struct GlobalStaticData { +pub struct GlobalStaticData { proxy_handlers: HashMap<uint, *libc::c_void>, attribute_ids: HashMap<uint, ~[jsid]>, method_ids: HashMap<uint, ~[jsid]>, @@ -165,7 +165,7 @@ pub unsafe fn get_dom_class(obj: *JSObject) -> Result<DOMClass, ()> { pub fn unwrap_object<T>(obj: *JSObject, proto_id: PrototypeList::id::ID, proto_depth: uint) -> Result<T, ()> { unsafe { - do get_dom_class(obj).chain |dom_class| { + do get_dom_class(obj).and_then |dom_class| { if dom_class.interface_chain[proto_depth] == proto_id { debug!("good prototype"); Ok(unwrap(obj)) @@ -671,7 +671,7 @@ pub fn XrayResolveProperty(cx: *JSContext, for &elem in attrs.iter() { let (attr, attr_id) = elem; if attr_id == JSID_VOID || attr_id != id { - loop; + continue; } (*desc).attrs = (attr.flags & !(JSPROP_NATIVE_ACCESSORS as u8)) as u32; @@ -783,7 +783,7 @@ pub fn FindEnumStringIndex(cx: *JSContext, } for (i, value) in values.iter().enumerate() { if value.length != length as uint { - loop; + continue; } let mut equal = true; for j in range(0, length as int) { diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index bd323e15f85..510fdcb1235 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -254,7 +254,10 @@ impl Document { let key: &~str = &null_str_as_empty(id); // TODO: "in tree order, within the context object's tree" // http://dom.spec.whatwg.org/#dom-document-getelementbyid. - self.idmap.find_equiv(key).map(|node| **node) + match self.idmap.find_equiv(key) { + None => None, + Some(node) => Some(*node), + } } pub fn CreateElement(&self, abstract_self: AbstractDocument, local_name: &DOMString) -> Fallible<AbstractNode<ScriptView>> { @@ -321,7 +324,7 @@ impl Document { Some(root) => { for node in root.traverse_preorder() { if node.type_id() != ElementNodeTypeId(HTMLTitleElementTypeId) { - loop; + continue; } for child in node.children() { if child.is_text() { @@ -355,12 +358,12 @@ impl Document { Some(root) => { for node in root.traverse_preorder() { if node.type_id() != ElementNodeTypeId(HTMLHeadElementTypeId) { - loop; + continue; } let mut has_title = false; for child in node.children() { if child.type_id() != ElementNodeTypeId(HTMLTitleElementTypeId) { - loop; + continue; } has_title = true; for title_child in child.children() { @@ -526,7 +529,7 @@ fn foreach_ided_elements(root: &AbstractNode<ScriptView>, callback: &fn(&~str, &AbstractNode<ScriptView>)) { for node in root.traverse_preorder() { if !node.is_element() { - loop; + continue; } do node.with_imm_element |element| { diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 2ee2e8ade5a..2babf101e6b 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -133,7 +133,7 @@ impl ElementLike for Element { fn get_attr<'a>(&'a self, name: &str) -> Option<&'a str> { // FIXME: only case-insensitive in the HTML namespace (as opposed to SVG, etc.) let name = name.to_ascii_lower(); - let value: Option<&str> = self.attrs.find_equiv(&name).map(|&value| { + let value: Option<&str> = self.attrs.find_equiv(&name).map(|value| { let value: &str = *value; value }); @@ -296,10 +296,10 @@ impl Element { let scope = win.reflector().get_jsobject(); let rects = do rects.map |r| { ClientRect::new( - r.origin.y.to_f32(), - (r.origin.y + r.size.height).to_f32(), - r.origin.x.to_f32(), - (r.origin.x + r.size.width).to_f32(), + r.origin.y.to_f32().unwrap(), + (r.origin.y + r.size.height).to_f32().unwrap(), + r.origin.x.to_f32().unwrap(), + (r.origin.x + r.size.width).to_f32().unwrap(), cx, scope) }; @@ -320,10 +320,10 @@ impl Element { let cx = win.get_cx(); let scope = win.reflector().get_jsobject(); ClientRect::new( - rect.origin.y.to_f32(), - (rect.origin.y + rect.size.height).to_f32(), - rect.origin.x.to_f32(), - (rect.origin.x + rect.size.width).to_f32(), + rect.origin.y.to_f32().unwrap(), + (rect.origin.y + rect.size.height).to_f32().unwrap(), + rect.origin.x.to_f32().unwrap(), + (rect.origin.x + rect.size.width).to_f32().unwrap(), cx, scope) } diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index b6879f9b81d..cc3f1d6b6ab 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -46,7 +46,7 @@ impl FormData { pub fn Append(&mut self, name: &DOMString, value: @mut Blob, filename: Option<DOMString>) { let blob = BlobData { blob: value, - name: filename.unwrap_or_default(Some(~"default")) + name: filename.unwrap_or(Some(~"default")) }; self.data.insert(null_str_as_empty(name), blob); } diff --git a/src/components/script/dom/htmliframeelement.rs b/src/components/script/dom/htmliframeelement.rs index 61b6f7a27f6..bbe98d4565e 100644 --- a/src/components/script/dom/htmliframeelement.rs +++ b/src/components/script/dom/htmliframeelement.rs @@ -44,7 +44,7 @@ struct IFrameSize { impl IFrameSize { pub fn set_rect(&mut self, rect: Rect<f32>) { let future_chan = replace(&mut self.future_chan, None); - do future_chan.map_move |future_chan| { + do future_chan.map |future_chan| { let Size2D { width, height } = rect.size; future_chan.send(Size2D(width as uint, height as uint)); }; diff --git a/src/components/script/dom/htmlimageelement.rs b/src/components/script/dom/htmlimageelement.rs index dc60d560743..49010ee0f62 100644 --- a/src/components/script/dom/htmlimageelement.rs +++ b/src/components/script/dom/htmlimageelement.rs @@ -45,7 +45,7 @@ impl HTMLImageElement { if "src" == name { let document = self.htmlelement.element.node.owner_doc(); let window = document.document().window; - let url = window.page.url.map(|&(ref url, _)| url.clone()); + let url = window.page.url.as_ref().map(|&(ref url, _)| url.clone()); self.update_image(window.image_cache_task.clone(), url); } } diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 6169864edac..913812fa594 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -455,7 +455,9 @@ impl<'self, View> AbstractNode<View> { impl<View> Iterator<AbstractNode<View>> for AbstractNodeChildrenIterator<View> { fn next(&mut self) -> Option<AbstractNode<View>> { let node = self.current_node; - self.current_node = self.current_node.chain(|node| node.next_sibling()); + self.current_node = do self.current_node.and_then |node| { + node.next_sibling() + }; node } } diff --git a/src/components/script/dom/window.rs b/src/components/script/dom/window.rs index 6f1e931586e..8f9994458fb 100644 --- a/src/components/script/dom/window.rs +++ b/src/components/script/dom/window.rs @@ -27,7 +27,6 @@ use std::io; use std::ptr; use std::int; use std::libc; -use std::rt::rtio::RtioTimer; use std::rt::io::timer::Timer; use std::task::spawn_with; use js::jsapi::JSVal; @@ -58,7 +57,7 @@ impl Window { #[unsafe_destructor] impl Drop for Window { - fn drop(&self) { + fn drop(&mut self) { self.timer_chan.send(TimerMessage_Close); } } diff --git a/src/components/script/html/cssparse.rs b/src/components/script/html/cssparse.rs index 3123a2d24e8..e6383599d39 100644 --- a/src/components/script/html/cssparse.rs +++ b/src/components/script/html/cssparse.rs @@ -10,7 +10,7 @@ use std::comm::Port; use std::task; use newcss::stylesheet::Stylesheet; use newcss::util::DataStream; -use servo_net::resource_task::{Load, LoadResponse, Payload, Done, ResourceTask}; +use servo_net::resource_task::{Load, LoadResponse, Payload, Done, ResourceTask, ProgressMsg}; use extra::url::Url; /// Where a style sheet comes from. @@ -41,7 +41,7 @@ pub fn spawn_css_parser(provenance: StylesheetProvenance, return result_port; } -fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> DataStream { +fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> @mut DataStream { match provenance { UrlProvenance(url) => { debug!("cssparse: loading style sheet at %s", url.to_str()); @@ -55,26 +55,44 @@ fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> } } -fn resource_port_to_data_stream(input_port: Port<LoadResponse>) -> DataStream { +fn resource_port_to_data_stream(input_port: Port<LoadResponse>) -> @mut DataStream { let progress_port = input_port.recv().progress_port; - return || { - match progress_port.recv() { - Payload(data) => Some(data), - Done(*) => None + struct ResourcePortDataStream { + progress_port: Port<ProgressMsg>, + }; + impl DataStream for ResourcePortDataStream { + fn read(&mut self) -> Option<~[u8]> { + match self.progress_port.recv() { + Payload(data) => Some(data), + Done(*) => None + } } } + let stream = @mut ResourcePortDataStream { + progress_port: progress_port, + }; + stream as @mut DataStream } -fn data_to_data_stream(data: ~str) -> DataStream { +fn data_to_data_stream(data: ~str) -> @mut DataStream { let data_cell = Cell::new(data); - return || { - if data_cell.is_empty() { - None - } else { - // FIXME: Blech, a copy. - let data = data_cell.take(); - Some(data.as_bytes().to_owned()) + struct DataDataStream { + data_cell: Cell<~str>, + }; + impl DataStream for DataDataStream { + fn read(&mut self) -> Option<~[u8]> { + if self.data_cell.is_empty() { + None + } else { + // FIXME: Blech, a copy. + let data = self.data_cell.take(); + Some(data.as_bytes().to_owned()) + } } } + let stream = @mut DataDataStream { + data_cell: data_cell, + }; + stream as @mut DataStream } diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 7aba3987f53..66d85e0dfac 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -29,7 +29,7 @@ use servo_net::resource_task::{Load, Payload, Done, ResourceTask, load_whole_res use servo_util::tree::{TreeNodeRef, ElementLike}; use servo_util::url::make_url; use extra::url::Url; -use extra::future::{Future, from_port}; +use extra::future::Future; use geom::size::Size2D; macro_rules! handle_element( @@ -431,7 +431,7 @@ pub fn parse_html(cx: *JSContext, // Size future let (port, chan) = comm::oneshot(); - let size_future = from_port(port); + let size_future = Future::from_port(port); // Subpage Id let subpage_id = next_subpage_id.take(); diff --git a/src/components/script/script.rc b/src/components/script/script.rc index 3fd36ee3724..9aa5f2f3a76 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -11,6 +11,8 @@ #[license = "MPL"]; #[crate_type = "lib"]; +#[feature(globs, macro_rules, struct_variant)]; + extern mod geom; extern mod gfx (name = "gfx"); extern mod hubbub; diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 43a87eca228..e710dfb6d95 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -48,7 +48,7 @@ use servo_net::resource_task::ResourceTask; use servo_util::tree::{TreeNodeRef, ElementLike}; use servo_util::url::make_url; use extra::url::Url; -use extra::future::{from_value, Future}; +use extra::future::Future; /// Messages used to control the script task. pub enum ScriptMsg { @@ -178,7 +178,7 @@ impl PageTree { self.inner.mut_iter() .enumerate() .find(|&(_idx, ref page_tree)| page_tree.page.id == id) - .map(|&(idx, _)| idx) + .map(|(idx, _)| idx) }; match remove_idx { Some(idx) => return Some(self.inner.remove(idx)), @@ -608,7 +608,7 @@ impl ScriptTask { fn handle_resize_inactive_msg(&mut self, id: PipelineId, new_size: Size2D<uint>) { let page = self.page_tree.find(id).expect("Received resize message for PipelineId not associated with a page in the page tree. This is a bug.").page; - page.window_size = from_value(new_size); + page.window_size = Future::from_value(new_size); let last_loaded_url = replace(&mut page.url, None); for url in last_loaded_url.iter() { page.url = Some((url.first(), true)); @@ -780,7 +780,7 @@ impl ScriptTask { ResizeEvent(new_width, new_height) => { debug!("script got resize event: %u, %u", new_width, new_height); - page.window_size = from_value(Size2D(new_width, new_height)); + page.window_size = Future::from_value(Size2D(new_width, new_height)); if page.frame.is_some() { page.damage(ReflowDocumentDamage); @@ -845,12 +845,12 @@ impl ScriptTask { let attr = element.get_attr("href"); for href in attr.iter() { debug!("ScriptTask: clicked on link to %s", *href); - let current_url = do page.url.map |&(ref url, _)| { + let current_url = do page.url.as_ref().map |&(ref url, _)| { url.clone() }; debug!("ScriptTask: current url is %?", current_url); let url = make_url(href.to_owned(), current_url); - self.constellation_chan.send(LoadUrlMsg(page.id, url, from_value(page.window_size.get()))); + self.constellation_chan.send(LoadUrlMsg(page.id, url, Future::from_value(page.window_size.get()))); } } } |