mirror of
https://github.com/servo/servo.git
synced 2025-08-09 23:45:35 +01:00
auto merge of #1198 : Ms2ger/servo/GetParentObject, r=jdm
This commit is contained in:
commit
b023b98b2c
25 changed files with 22 additions and 192 deletions
|
@ -2,7 +2,7 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use dom::bindings::utils::{WrapNativeParent, Reflectable};
|
use dom::bindings::utils::Reflectable;
|
||||||
use js::jsapi::{JSContext, JSObject, JS_WrapObject, JSVal, JS_ObjectIsCallable};
|
use js::jsapi::{JSContext, JSObject, JS_WrapObject, JSVal, JS_ObjectIsCallable};
|
||||||
use js::jsapi::JS_GetProperty;
|
use js::jsapi::JS_GetProperty;
|
||||||
use js::{JSVAL_IS_OBJECT, JSVAL_TO_OBJECT};
|
use js::{JSVAL_IS_OBJECT, JSVAL_TO_OBJECT};
|
||||||
|
@ -67,15 +67,10 @@ pub fn GetJSObjectFromCallback<T: CallbackContainer>(callback: &T) -> *JSObject
|
||||||
|
|
||||||
#[fixed_stack_segment]
|
#[fixed_stack_segment]
|
||||||
pub fn WrapCallThisObject<T: 'static + CallbackContainer + Reflectable>(cx: *JSContext,
|
pub fn WrapCallThisObject<T: 'static + CallbackContainer + Reflectable>(cx: *JSContext,
|
||||||
scope: *JSObject,
|
_scope: *JSObject,
|
||||||
p: @mut T) -> *JSObject {
|
p: @mut T) -> *JSObject {
|
||||||
let mut obj = GetJSObjectFromCallback(p);
|
let obj = GetJSObjectFromCallback(p);
|
||||||
if obj.is_null() {
|
assert!(obj.is_not_null());
|
||||||
obj = WrapNativeParent(cx, scope, Some(p as @mut Reflectable));
|
|
||||||
if obj.is_null() {
|
|
||||||
return ptr::null();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
if JS_WrapObject(cx, &obj) == 0 {
|
if JS_WrapObject(cx, &obj) == 0 {
|
||||||
|
|
|
@ -2506,8 +2506,8 @@ class CGAbstractMethod(CGThing):
|
||||||
|
|
||||||
def CreateBindingJSObject(descriptor, parent=None):
|
def CreateBindingJSObject(descriptor, parent=None):
|
||||||
if descriptor.proxy:
|
if descriptor.proxy:
|
||||||
handler = """ //let reflector = aObject.mut_reflector();
|
assert not descriptor.createGlobal
|
||||||
|
handler = """
|
||||||
let page = page_from_context(aCx);
|
let page = page_from_context(aCx);
|
||||||
let handler = (*page).js_info.get_ref().dom_static.proxy_handlers.get(&(PrototypeList::id::%s as uint));
|
let handler = (*page).js_info.get_ref().dom_static.proxy_handlers.get(&(PrototypeList::id::%s as uint));
|
||||||
""" % descriptor.name
|
""" % descriptor.name
|
||||||
|
@ -2546,33 +2546,29 @@ class CGWrapWithCacheMethod(CGAbstractMethod):
|
||||||
return """return aObject->GetJSObject();"""
|
return """return aObject->GetJSObject();"""
|
||||||
|
|
||||||
if not self.descriptor.createGlobal:
|
if not self.descriptor.createGlobal:
|
||||||
return """let mut parent = aObject.GetParentObject(aCx);
|
return """
|
||||||
let parent = WrapNativeParent(aCx, aScope, parent);
|
assert!(aScope.is_not_null());
|
||||||
if parent.is_null() {
|
assert!(((*JS_GetClass(aScope)).flags & JSCLASS_IS_GLOBAL) != 0);
|
||||||
return ptr::null();
|
|
||||||
}
|
|
||||||
|
|
||||||
//JSAutoCompartment ac(aCx, parent);
|
//JSAutoCompartment ac(aCx, aScope);
|
||||||
let global = JS_GetGlobalForObject(aCx, parent);
|
let proto = GetProtoObject(aCx, aScope, aScope);
|
||||||
let proto = GetProtoObject(aCx, global, global);
|
|
||||||
if proto.is_null() {
|
if proto.is_null() {
|
||||||
return ptr::null();
|
return ptr::null();
|
||||||
}
|
}
|
||||||
|
|
||||||
let reflector = aObject.mut_reflector();
|
|
||||||
%s
|
%s
|
||||||
|
|
||||||
//NS_ADDREF(aObject);
|
//NS_ADDREF(aObject);
|
||||||
|
|
||||||
(*reflector).set_jsobject(obj);
|
aObject.mut_reflector().set_jsobject(obj);
|
||||||
|
|
||||||
return obj;""" % (CreateBindingJSObject(self.descriptor, "parent"))
|
return obj;""" % (CreateBindingJSObject(self.descriptor, "aScope"))
|
||||||
else:
|
else:
|
||||||
return """ let reflector = aObject.mut_reflector();
|
return """
|
||||||
|
assert!(aScope.is_null());
|
||||||
%s
|
%s
|
||||||
let proto = GetProtoObject(aCx, obj, obj);
|
let proto = GetProtoObject(aCx, obj, obj);
|
||||||
JS_SetPrototype(aCx, obj, proto);
|
JS_SetPrototype(aCx, obj, proto);
|
||||||
(*reflector).set_jsobject(obj);
|
aObject.mut_reflector().set_jsobject(obj);
|
||||||
return obj;""" % CreateBindingJSObject(self.descriptor)
|
return obj;""" % CreateBindingJSObject(self.descriptor)
|
||||||
|
|
||||||
class CGWrapMethod(CGAbstractMethod):
|
class CGWrapMethod(CGAbstractMethod):
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
use dom::types::*;
|
use dom::types::*;
|
||||||
use dom::bindings::utils::{Reflectable, Reflector, Traceable};
|
use dom::bindings::utils::{Reflectable, Reflector, Traceable};
|
||||||
|
|
||||||
use js::jsapi::{JSContext, JSTracer};
|
use js::jsapi::JSTracer;
|
||||||
|
|
||||||
// generate_cacheable_wrapper
|
// generate_cacheable_wrapper
|
||||||
macro_rules! generate_cacheable_wrapper(
|
macro_rules! generate_cacheable_wrapper(
|
||||||
|
@ -48,10 +48,6 @@ macro_rules! generate_cacheable_wrapper_base(
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.$parent.mut_reflector()
|
self.$parent.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.$parent.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,7 +9,7 @@ use dom::node::{AbstractNode, ScriptView};
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::libc;
|
use std::libc;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use js::jsapi::{JSContext, JSTracer, JSTRACE_OBJECT, JS_CallTracer};
|
use js::jsapi::{JSTracer, JSTRACE_OBJECT, JS_CallTracer};
|
||||||
use servo_util::tree::TreeNodeRef;
|
use servo_util::tree::TreeNodeRef;
|
||||||
|
|
||||||
impl Reflectable for AbstractNode<ScriptView> {
|
impl Reflectable for AbstractNode<ScriptView> {
|
||||||
|
@ -20,10 +20,6 @@ impl Reflectable for AbstractNode<ScriptView> {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.mut_node().mut_reflector()
|
self.mut_node().mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.node().GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Traceable for Node<ScriptView> {
|
impl Traceable for Node<ScriptView> {
|
||||||
|
|
|
@ -18,7 +18,7 @@ use std::unstable::raw::Box;
|
||||||
use js::glue::*;
|
use js::glue::*;
|
||||||
use js::glue::{DefineFunctionWithReserved, GetObjectJSClass, RUST_OBJECT_TO_JSVAL};
|
use js::glue::{DefineFunctionWithReserved, GetObjectJSClass, RUST_OBJECT_TO_JSVAL};
|
||||||
use js::glue::{js_IsObjectProxyClass, js_IsFunctionProxyClass, IsProxyHandlerFamily};
|
use js::glue::{js_IsObjectProxyClass, js_IsFunctionProxyClass, IsProxyHandlerFamily};
|
||||||
use js::jsapi::{JS_AlreadyHasOwnProperty, JS_NewObject, JS_NewFunction, JS_GetGlobalObject};
|
use js::jsapi::{JS_AlreadyHasOwnProperty, JS_NewObject, JS_NewFunction};
|
||||||
use js::jsapi::{JS_DefineProperties, JS_WrapValue, JS_ForwardGetPropertyTo};
|
use js::jsapi::{JS_DefineProperties, JS_WrapValue, JS_ForwardGetPropertyTo};
|
||||||
use js::jsapi::{JS_GetClass, JS_LinkConstructorAndPrototype, JS_GetStringCharsAndLength};
|
use js::jsapi::{JS_GetClass, JS_LinkConstructorAndPrototype, JS_GetStringCharsAndLength};
|
||||||
use js::jsapi::{JS_ObjectIsRegExp, JS_ObjectIsDate};
|
use js::jsapi::{JS_ObjectIsRegExp, JS_ObjectIsDate};
|
||||||
|
@ -540,7 +540,6 @@ pub fn initialize_global(global: *JSObject) {
|
||||||
pub trait Reflectable {
|
pub trait Reflectable {
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector;
|
fn reflector<'a>(&'a self) -> &'a Reflector;
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector;
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector;
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn reflect_dom_object<T: Reflectable>
|
pub fn reflect_dom_object<T: Reflectable>
|
||||||
|
@ -567,6 +566,8 @@ impl Reflector {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_jsobject(&mut self, object: *JSObject) {
|
pub fn set_jsobject(&mut self, object: *JSObject) {
|
||||||
|
assert!(self.object.is_null());
|
||||||
|
assert!(object.is_not_null());
|
||||||
self.object = object;
|
self.object = object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -592,18 +593,6 @@ pub fn GetReflector(cx: *JSContext, reflector: &Reflector,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fixed_stack_segment]
|
|
||||||
pub fn WrapNativeParent(cx: *JSContext, _scope: *JSObject, mut p: Option<@mut Reflectable>) -> *JSObject {
|
|
||||||
match p {
|
|
||||||
Some(ref mut p) => {
|
|
||||||
let obj = p.reflector().get_jsobject();
|
|
||||||
assert!(obj.is_not_null());
|
|
||||||
obj
|
|
||||||
}
|
|
||||||
None => unsafe { JS_GetGlobalObject(cx) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fixed_stack_segment]
|
#[fixed_stack_segment]
|
||||||
pub fn GetPropertyOnPrototype(cx: *JSContext, proxy: *JSObject, id: jsid, found: *mut bool,
|
pub fn GetPropertyOnPrototype(cx: *JSContext, proxy: *JSObject, id: jsid, found: *mut bool,
|
||||||
vp: *JSVal) -> bool {
|
vp: *JSVal) -> bool {
|
||||||
|
|
|
@ -7,8 +7,6 @@ use dom::bindings::utils::Fallible;
|
||||||
use dom::bindings::codegen::BlobBinding;
|
use dom::bindings::codegen::BlobBinding;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct Blob {
|
pub struct Blob {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
window: @mut Window,
|
window: @mut Window,
|
||||||
|
@ -41,8 +39,4 @@ impl Reflectable for Blob {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,6 @@ use dom::bindings::utils::{Reflectable, Reflector};
|
||||||
use dom::document::AbstractDocument;
|
use dom::document::AbstractDocument;
|
||||||
use dom::node::{Node, NodeTypeId, ScriptView};
|
use dom::node::{Node, NodeTypeId, ScriptView};
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct CharacterData {
|
pub struct CharacterData {
|
||||||
node: Node<ScriptView>,
|
node: Node<ScriptView>,
|
||||||
data: ~str
|
data: ~str
|
||||||
|
@ -67,8 +65,4 @@ impl Reflectable for CharacterData {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.node.mut_reflector()
|
self.node.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.node.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,6 @@ use dom::bindings::codegen::ClientRectBinding;
|
||||||
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct ClientRect {
|
pub struct ClientRect {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
top: f32,
|
top: f32,
|
||||||
|
@ -71,8 +69,4 @@ impl Reflectable for ClientRect {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,6 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::clientrect::ClientRect;
|
use dom::clientrect::ClientRect;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct ClientRectList {
|
pub struct ClientRectList {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
rects: ~[@mut ClientRect],
|
rects: ~[@mut ClientRect],
|
||||||
|
@ -57,8 +55,4 @@ impl Reflectable for ClientRectList {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,10 +158,6 @@ impl Reflectable for AbstractDocument {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.mut_document().mut_reflector()
|
self.mut_document().mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.document().GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Reflectable for Document {
|
impl Reflectable for Document {
|
||||||
|
@ -172,10 +168,6 @@ impl Reflectable for Document {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.node.mut_reflector()
|
self.node.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Document {
|
impl Document {
|
||||||
|
|
|
@ -10,8 +10,6 @@ use dom::document::{AbstractDocument, Document, XML};
|
||||||
use dom::htmldocument::HTMLDocument;
|
use dom::htmldocument::HTMLDocument;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct DOMParser {
|
pub struct DOMParser {
|
||||||
owner: @mut Window, //XXXjdm Document instead?
|
owner: @mut Window, //XXXjdm Document instead?
|
||||||
reflector_: Reflector
|
reflector_: Reflector
|
||||||
|
@ -60,8 +58,4 @@ impl Reflectable for DOMParser {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.owner as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,6 @@ use layout_interface::{ContentBoxesResponse};
|
||||||
use style;
|
use style;
|
||||||
use servo_util::tree::{TreeNodeRef, ElementLike};
|
use servo_util::tree::{TreeNodeRef, ElementLike};
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
use std::comm;
|
use std::comm;
|
||||||
use std::hashmap::HashMap;
|
use std::hashmap::HashMap;
|
||||||
use std::ascii::StrAsciiExt;
|
use std::ascii::StrAsciiExt;
|
||||||
|
@ -38,10 +36,6 @@ impl Reflectable for Element {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.node.mut_reflector()
|
self.node.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.node.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Eq)]
|
#[deriving(Eq)]
|
||||||
|
|
|
@ -11,9 +11,6 @@ use dom::mouseevent::MouseEvent;
|
||||||
use dom::uievent::UIEvent;
|
use dom::uievent::UIEvent;
|
||||||
|
|
||||||
use geom::point::Point2D;
|
use geom::point::Point2D;
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
use script_task::page_from_context;
|
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::unstable::raw::Box;
|
use std::unstable::raw::Box;
|
||||||
|
@ -119,10 +116,6 @@ impl Reflectable for AbstractEvent {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.mut_event().mut_reflector()
|
self.mut_event().mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.event().GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Eq)]
|
#[deriving(Eq)]
|
||||||
|
@ -263,11 +256,4 @@ impl Reflectable for Event {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
let page = page_from_context(cx);
|
|
||||||
unsafe {
|
|
||||||
Some((*page).frame.get_ref().window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,9 +8,6 @@ use dom::bindings::codegen::EventListenerBinding::EventListener;
|
||||||
use dom::event::AbstractEvent;
|
use dom::event::AbstractEvent;
|
||||||
use dom::eventdispatcher::dispatch_event;
|
use dom::eventdispatcher::dispatch_event;
|
||||||
use dom::node::{AbstractNode, ScriptView};
|
use dom::node::{AbstractNode, ScriptView};
|
||||||
use script_task::page_from_context;
|
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
use std::hashmap::HashMap;
|
use std::hashmap::HashMap;
|
||||||
|
@ -104,10 +101,6 @@ impl Reflectable for AbstractEventTarget {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.mut_eventtarget().mut_reflector()
|
self.mut_eventtarget().mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.eventtarget().GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EventTarget {
|
impl EventTarget {
|
||||||
|
@ -186,12 +179,4 @@ impl Reflectable for EventTarget {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
let page = page_from_context(cx);
|
|
||||||
// TODO(tkuehn): This only handles top-level pages. Needs to handle subframes.
|
|
||||||
unsafe {
|
|
||||||
Some((*page).frame.get_ref().window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,6 @@ use dom::bindings::codegen::FormDataBinding;
|
||||||
use dom::blob::Blob;
|
use dom::blob::Blob;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
use std::hashmap::HashMap;
|
use std::hashmap::HashMap;
|
||||||
|
|
||||||
enum FormDatum {
|
enum FormDatum {
|
||||||
|
@ -57,8 +55,4 @@ impl Reflectable for FormData {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,8 +68,4 @@ impl Reflectable for HTMLCollection {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ use dom::htmlcollection::HTMLCollection;
|
||||||
use dom::node::{AbstractNode, ScriptView, ElementNodeTypeId};
|
use dom::node::{AbstractNode, ScriptView, ElementNodeTypeId};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::{JSContext, JSTracer};
|
use js::jsapi::JSTracer;
|
||||||
|
|
||||||
use servo_util::tree::{TreeNodeRef, ElementLike};
|
use servo_util::tree::{TreeNodeRef, ElementLike};
|
||||||
|
|
||||||
|
@ -88,10 +88,6 @@ impl Reflectable for HTMLDocument {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.parent.mut_reflector()
|
self.parent.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.parent.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Traceable for HTMLDocument {
|
impl Traceable for HTMLDocument {
|
||||||
|
|
|
@ -11,8 +11,6 @@ use dom::uievent::UIEvent;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use dom::windowproxy::WindowProxy;
|
use dom::windowproxy::WindowProxy;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct MouseEvent {
|
pub struct MouseEvent {
|
||||||
parent: UIEvent,
|
parent: UIEvent,
|
||||||
screen_x: i32,
|
screen_x: i32,
|
||||||
|
@ -151,8 +149,4 @@ impl Reflectable for MouseEvent {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.parent.mut_reflector()
|
self.parent.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.parent.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,6 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::bindings::utils::{DOMString, Fallible};
|
use dom::bindings::utils::{DOMString, Fallible};
|
||||||
use dom::bindings::codegen::NavigatorBinding;
|
use dom::bindings::codegen::NavigatorBinding;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use script_task::{page_from_context};
|
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct Navigator {
|
pub struct Navigator {
|
||||||
reflector_: Reflector //XXXjdm cycle: window->navigator->window
|
reflector_: Reflector //XXXjdm cycle: window->navigator->window
|
||||||
|
@ -98,11 +95,4 @@ impl Reflectable for Navigator {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
let page = page_from_context(cx);
|
|
||||||
unsafe {
|
|
||||||
Some((*page).frame.get_ref().window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1056,13 +1056,6 @@ impl Reflectable for Node<ScriptView> {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.eventtarget.mut_reflector()
|
self.eventtarget.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
match self.parent_node {
|
|
||||||
Some(node) => Some(unsafe {node.as_cacheable_wrapper()}),
|
|
||||||
None => None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This stuff is notionally private to layout, but we put it here because it needs
|
// This stuff is notionally private to layout, but we put it here because it needs
|
||||||
|
|
|
@ -7,8 +7,6 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::node::{AbstractNode, ScriptView};
|
use dom::node::{AbstractNode, ScriptView};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
enum NodeListType {
|
enum NodeListType {
|
||||||
Simple(~[AbstractNode<ScriptView>]),
|
Simple(~[AbstractNode<ScriptView>]),
|
||||||
Children(AbstractNode<ScriptView>)
|
Children(AbstractNode<ScriptView>)
|
||||||
|
@ -74,8 +72,4 @@ impl Reflectable for NodeList {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,6 @@ use dom::event::{AbstractEvent, Event, EventTypeId, UIEventTypeId};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use dom::windowproxy::WindowProxy;
|
use dom::windowproxy::WindowProxy;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct UIEvent {
|
pub struct UIEvent {
|
||||||
parent: Event,
|
parent: Event,
|
||||||
view: Option<@mut WindowProxy>,
|
view: Option<@mut WindowProxy>,
|
||||||
|
@ -120,8 +118,4 @@ impl Reflectable for UIEvent {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.parent.mut_reflector()
|
self.parent.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.parent.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,6 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::bindings::codegen::ValidityStateBinding;
|
use dom::bindings::codegen::ValidityStateBinding;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct ValidityState {
|
pub struct ValidityState {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
window: @mut Window,
|
window: @mut Window,
|
||||||
|
@ -75,8 +73,4 @@ impl Reflectable for ValidityState {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
Some(self.window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,10 +147,6 @@ impl Reflectable for Window {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.eventtarget.mut_reflector()
|
self.eventtarget.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Window {
|
impl Window {
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use dom::bindings::utils::{Reflectable, Reflector};
|
use dom::bindings::utils::{Reflectable, Reflector};
|
||||||
use script_task::page_from_context;
|
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
|
||||||
|
|
||||||
pub struct WindowProxy {
|
pub struct WindowProxy {
|
||||||
reflector_: Reflector
|
reflector_: Reflector
|
||||||
|
@ -27,11 +24,4 @@ impl Reflectable for WindowProxy {
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
&mut self.reflector_
|
&mut self.reflector_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
let page = page_from_context(cx);
|
|
||||||
unsafe {
|
|
||||||
Some((*page).frame.get_ref().window as @mut Reflectable)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue