aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script')
-rw-r--r--src/components/script/dom/bindings/proxyhandler.rs2
-rw-r--r--src/components/script/dom/bindings/utils.rs8
-rw-r--r--src/components/script/dom/document.rs13
-rw-r--r--src/components/script/dom/element.rs18
-rw-r--r--src/components/script/dom/formdata.rs2
-rw-r--r--src/components/script/dom/htmliframeelement.rs2
-rw-r--r--src/components/script/dom/htmlimageelement.rs2
-rw-r--r--src/components/script/dom/node.rs4
-rw-r--r--src/components/script/dom/window.rs3
-rw-r--r--src/components/script/html/cssparse.rs48
-rw-r--r--src/components/script/html/hubbub_html_parser.rs4
-rw-r--r--src/components/script/script.rc2
-rw-r--r--src/components/script/script_task.rs12
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())));
}
}
}