diff options
author | Tim Kuehn <tkuehn@cmu.edu> | 2013-06-26 22:42:01 -0700 |
---|---|---|
committer | Tim Kuehn <tkuehn@cmu.edu> | 2013-07-01 11:03:31 -0700 |
commit | fba7ec423c99a63bdcbe16029740e7ab4e38c088 (patch) | |
tree | 0e8a15014ee5bbf912153e8072c0a5505d3b4ecc /src/components/script/dom | |
parent | fdb0d820a49fac9ae2df623751912adcbe7a119d (diff) | |
download | servo-fba7ec423c99a63bdcbe16029740e7ab4e38c088.tar.gz servo-fba7ec423c99a63bdcbe16029740e7ab4e38c088.zip |
add pipeline.rs, modularized pipelines communicating with constellation
Diffstat (limited to 'src/components/script/dom')
-rw-r--r-- | src/components/script/dom/bindings/element.rs | 11 | ||||
-rw-r--r-- | src/components/script/dom/bindings/proxyhandler.rs | 4 | ||||
-rw-r--r-- | src/components/script/dom/bindings/utils.rs | 6 | ||||
-rw-r--r-- | src/components/script/dom/element.rs | 45 | ||||
-rw-r--r-- | src/components/script/dom/event.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/window.rs | 12 |
6 files changed, 37 insertions, 43 deletions
diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 9a34f7c5dc6..b79daf75db7 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -16,6 +16,7 @@ use std::cast; use std::i32; use std::libc; use std::libc::c_uint; +use std::comm; use std::ptr; use std::ptr::null; use std::result; @@ -229,13 +230,9 @@ extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut JSVa let width = match node.type_id() { ElementNodeTypeId(HTMLImageElementTypeId) => { let script_context = task_from_context(cx); - match (*script_context).query_layout(ContentBoxQuery(node)) { - Ok(rect) => { - match rect { - ContentBoxResponse(rect) => rect.size.width.to_px(), - _ => fail!(~"unexpected layout reply") - } - } + let (port, chan) = comm::stream(); + match (*script_context).query_layout(ContentBoxQuery(node, chan), port) { + Ok(ContentBoxResponse(rect)) => rect.size.width.to_px(), Err(()) => 0 } // TODO: if nothing is being rendered(?), return zero dimensions diff --git a/src/components/script/dom/bindings/proxyhandler.rs b/src/components/script/dom/bindings/proxyhandler.rs index 2780a969eb2..cbbc4f1525d 100644 --- a/src/components/script/dom/bindings/proxyhandler.rs +++ b/src/components/script/dom/bindings/proxyhandler.rs @@ -71,7 +71,7 @@ pub fn _obj_toString(cx: *JSContext, className: *libc::c_char) -> *JSString { return ptr::null(); } - let result = ~"[object " + name + ~"]"; + let result = ~"[object " + name + "]"; for result.iter().enumerate().advance |(i, c)| { *chars.offset(i) = c as jschar; } @@ -86,4 +86,4 @@ pub fn _obj_toString(cx: *JSContext, className: *libc::c_char) -> *JSString { pub fn GetExpandoObject(_proxy: *JSObject) -> *JSObject { ptr::null() -}
\ No newline at end of file +} diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 9d3105fefca..5a42e109268 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -21,12 +21,12 @@ use js::glue::{PROPERTY_STUB, STRICT_PROPERTY_STUB, ENUMERATE_STUB, CONVERT_STUB use js::jsapi::{JS_AlreadyHasOwnProperty, JS_NewObject, JS_NewFunction}; use js::jsapi::{JS_DefineProperties, JS_WrapValue, JS_ForwardGetPropertyTo}; use js::jsapi::{JS_EncodeString, JS_free, JS_GetStringCharsAndLength}; -use js::jsapi::{JS_GetClass, JS_GetPrototype, JS_LinkConstructorAndPrototype}; +use js::jsapi::{JS_GetClass, JS_LinkConstructorAndPrototype}; use js::jsapi::{JS_GetFunctionPrototype, JS_InternString, JS_GetFunctionObject}; use js::jsapi::{JS_HasPropertyById, JS_GetPrototype, JS_GetGlobalForObject}; use js::jsapi::{JS_NewStringCopyN, JS_DefineFunctions, JS_DefineProperty}; use js::jsapi::{JS_ValueToString, JS_GetReservedSlot, JS_SetReservedSlot}; -use js::jsapi::{JSContext, JSVal, JSObject, JSBool, jsid, JSClass, JSNative}; +use js::jsapi::{JSContext, JSObject, JSBool, jsid, JSClass, JSNative}; use js::jsapi::{JSFunctionSpec, JSPropertySpec, JSVal, JSPropertyDescriptor}; use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType; use js::rust::Compartment; @@ -83,7 +83,7 @@ extern fn InterfaceObjectToString(cx: *JSContext, _argc: uint, vp: *mut JSVal) - } let name = jsval_to_str(cx, *v).get(); - let retval = str(~"function " + name + ~"() {\n [native code]\n}"); + let retval = str(~"function " + name + "() {\n [native code]\n}"); *vp = domstring_to_jsval(cx, &retval); return 1; } diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index e707a95ebb9..2595a68657d 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -12,6 +12,7 @@ use layout_interface::{ContentBoxQuery, ContentBoxResponse, ContentBoxesQuery}; use layout_interface::{ContentBoxesResponse}; use std::cell::Cell; +use std::comm; use std::uint; use std::str::eq_slice; use extra::net::url::Url; @@ -165,20 +166,19 @@ impl<'self> Element { Some(win) => { let node = self.parent.abstract.get(); assert!(node.is_element()); - let script_context = unsafe { - &mut *win.script_context + let script_task = unsafe { + &mut *win.script_task }; - match script_context.query_layout(ContentBoxesQuery(node)) { - Ok(rects) => match rects { - ContentBoxesResponse(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()) - }, - _ => fail!(~"unexpected layout reply") + let (port, chan) = comm::stream(); + match script_task.query_layout(ContentBoxesQuery(node, chan), port) { + Ok(ContentBoxesResponse(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()) + } }, Err(()) => { debug!("layout query error"); @@ -207,16 +207,15 @@ impl<'self> Element { Some(win) => { let node = self.parent.abstract.get(); assert!(node.is_element()); - let script_context = unsafe { &mut *win.script_context }; - match script_context.query_layout(ContentBoxQuery(node)) { - Ok(rect) => match rect { - ContentBoxResponse(rect) => - Some(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())), - _ => fail!(~"unexpected layout result") + let script_task = unsafe { &mut *win.script_task }; + let (port, chan) = comm::stream(); + match script_task.query_layout(ContentBoxQuery(node, chan), port) { + Ok(ContentBoxResponse(rect)) => { + Some(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())) }, Err(()) => { debug!("error querying layout"); diff --git a/src/components/script/dom/event.rs b/src/components/script/dom/event.rs index 047b734e6b4..6b4be15b701 100644 --- a/src/components/script/dom/event.rs +++ b/src/components/script/dom/event.rs @@ -9,8 +9,6 @@ use dom::bindings::utils::{DOMString, ErrorResult, WrapperCache}; use geom::point::Point2D; -use std::comm; - pub enum Event { ResizeEvent(uint, uint), ReflowEvent, diff --git a/src/components/script/dom/window.rs b/src/components/script/dom/window.rs index 5fb07c66f07..41f99eaa9e9 100644 --- a/src/components/script/dom/window.rs +++ b/src/components/script/dom/window.rs @@ -6,7 +6,7 @@ use dom::bindings::utils::WrapperCache; use dom::bindings::window; use layout_interface::ReflowForScriptQuery; -use script_task::{ExitMsg, FireTimerMsg, ScriptChan, ScriptContext}; +use script_task::{ExitMsg, FireTimerMsg, ScriptChan, ScriptTask}; use std::comm; use std::comm::Chan; @@ -29,7 +29,7 @@ pub enum TimerControlMsg { pub struct Window { timer_chan: Chan<TimerControlMsg>, script_chan: ScriptChan, - script_context: *mut ScriptContext, + script_task: *mut ScriptTask, wrapper: WrapperCache } @@ -89,11 +89,11 @@ impl Window { pub fn content_changed(&self) { unsafe { - (*self.script_context).reflow_all(ReflowForScriptQuery) + (*self.script_task).reflow_all(ReflowForScriptQuery) } } - pub fn new(script_chan: ScriptChan, script_context: *mut ScriptContext) + pub fn new(script_chan: ScriptChan, script_task: *mut ScriptTask) -> @mut Window { let script_chan_clone = script_chan.clone(); let win = @mut Window { @@ -112,11 +112,11 @@ impl Window { } timer_chan }, - script_context: script_context, + script_task: script_task, }; unsafe { - let compartment = (*script_context).js_compartment; + let compartment = (*script_task).js_compartment; window::create(compartment, win); } win |