mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
auto merge of #1193 : Ms2ger/servo/wrap_object_shared, r=jdm
This commit is contained in:
commit
9d8c97d3b0
23 changed files with 23 additions and 145 deletions
|
@ -3,10 +3,9 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::types::*;
|
||||
use dom::bindings::codegen::*;
|
||||
use dom::bindings::utils::{Reflectable, Reflector, Traceable};
|
||||
|
||||
use js::jsapi::{JSContext, JSObject, JSTracer};
|
||||
use js::jsapi::{JSContext, JSTracer};
|
||||
|
||||
// generate_cacheable_wrapper
|
||||
macro_rules! generate_cacheable_wrapper(
|
||||
|
@ -50,10 +49,6 @@ macro_rules! generate_cacheable_wrapper_base(
|
|||
self.$parent.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
||||
$wrap(cx, scope, self)
|
||||
}
|
||||
|
||||
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::libc;
|
||||
use std::ptr;
|
||||
use js::jsapi::{JSContext, JSObject, JSTracer, JSTRACE_OBJECT, JS_CallTracer};
|
||||
use js::jsapi::{JSContext, JSTracer, JSTRACE_OBJECT, JS_CallTracer};
|
||||
use servo_util::tree::TreeNodeRef;
|
||||
|
||||
impl Reflectable for AbstractNode<ScriptView> {
|
||||
|
@ -21,10 +21,6 @@ impl Reflectable for AbstractNode<ScriptView> {
|
|||
self.mut_node().mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
fail!(~"need to implement wrapping");
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.node().GetParentObject(cx)
|
||||
}
|
||||
|
|
|
@ -541,7 +541,6 @@ pub fn initialize_global(global: *JSObject) {
|
|||
pub trait Reflectable {
|
||||
fn reflector<'a>(&'a self) -> &'a Reflector;
|
||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector;
|
||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject;
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable>;
|
||||
}
|
||||
|
||||
|
@ -584,39 +583,24 @@ impl Reflector {
|
|||
}
|
||||
|
||||
#[fixed_stack_segment]
|
||||
pub fn WrapNewBindingObject(cx: *JSContext, scope: *JSObject,
|
||||
pub fn WrapNewBindingObject(cx: *JSContext, _scope: *JSObject,
|
||||
value: @mut Reflectable,
|
||||
vp: *mut JSVal) -> JSBool {
|
||||
unsafe {
|
||||
let reflector = value.mut_reflector();
|
||||
let obj = reflector.get_jsobject();
|
||||
if obj.is_not_null() /*&& js::GetObjectCompartment(obj) == js::GetObjectCompartment(scope)*/ {
|
||||
*vp = RUST_OBJECT_TO_JSVAL(obj);
|
||||
return 1; // JS_TRUE
|
||||
}
|
||||
|
||||
let obj = value.wrap_object_shared(cx, scope);
|
||||
if obj.is_null() {
|
||||
return 0; // JS_FALSE
|
||||
}
|
||||
|
||||
// MOZ_ASSERT(js::IsObjectInContextCompartment(scope, cx));
|
||||
reflector.set_jsobject(obj);
|
||||
assert!(obj.is_not_null());
|
||||
*vp = RUST_OBJECT_TO_JSVAL(obj);
|
||||
return JS_WrapValue(cx, cast::transmute(vp));
|
||||
}
|
||||
}
|
||||
|
||||
#[fixed_stack_segment]
|
||||
pub fn WrapNativeParent(cx: *JSContext, scope: *JSObject, mut p: Option<@mut Reflectable>) -> *JSObject {
|
||||
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();
|
||||
if obj.is_not_null() {
|
||||
return obj;
|
||||
}
|
||||
let obj = p.wrap_object_shared(cx, scope);
|
||||
p.mut_reflector().set_jsobject(obj);
|
||||
assert!(obj.is_not_null());
|
||||
obj
|
||||
}
|
||||
None => unsafe { JS_GetGlobalObject(cx) }
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::utils::Fallible;
|
|||
use dom::bindings::codegen::BlobBinding;
|
||||
use dom::window::Window;
|
||||
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct Blob {
|
||||
reflector_: Reflector,
|
||||
|
@ -42,10 +42,6 @@ impl Reflectable for Blob {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -8,7 +8,8 @@ use dom::bindings::utils::{DOMString, ErrorResult, Fallible};
|
|||
use dom::bindings::utils::{Reflectable, Reflector};
|
||||
use dom::document::AbstractDocument;
|
||||
use dom::node::{Node, NodeTypeId, ScriptView};
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct CharacterData {
|
||||
node: Node<ScriptView>,
|
||||
|
@ -67,10 +68,6 @@ impl Reflectable for CharacterData {
|
|||
self.node.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
fail!(~"need to implement wrapping");
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.node.GetParentObject(cx)
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::codegen::ClientRectBinding;
|
|||
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||
use dom::window::Window;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct ClientRect {
|
||||
reflector_: Reflector,
|
||||
|
@ -72,10 +72,6 @@ impl Reflectable for ClientRect {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
|||
use dom::clientrect::ClientRect;
|
||||
use dom::window::Window;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct ClientRectList {
|
||||
reflector_: Reflector,
|
||||
|
@ -58,10 +58,6 @@ impl Reflectable for ClientRectList {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -160,10 +160,6 @@ impl Reflectable for AbstractDocument {
|
|||
self.mut_document().mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.document().GetParentObject(cx)
|
||||
}
|
||||
|
@ -187,10 +183,6 @@ impl Reflectable for Document {
|
|||
self.node.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::document::{AbstractDocument, Document, XML};
|
|||
use dom::htmldocument::HTMLDocument;
|
||||
use dom::window::Window;
|
||||
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct DOMParser {
|
||||
owner: @mut Window, //XXXjdm Document instead?
|
||||
|
@ -61,10 +61,6 @@ impl Reflectable for DOMParser {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.owner as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ use layout_interface::{ContentBoxesResponse};
|
|||
use style;
|
||||
use servo_util::tree::{TreeNodeRef, ElementLike};
|
||||
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
use std::comm;
|
||||
use std::hashmap::HashMap;
|
||||
|
@ -39,10 +39,6 @@ impl Reflectable for Element {
|
|||
self.node.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
fail!("no wrapping")
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.node.GetParentObject(cx)
|
||||
}
|
||||
|
|
|
@ -133,10 +133,6 @@ impl Reflectable for AbstractEvent {
|
|||
self.mut_event().mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
fail!(~"doesn't make any sense");
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.event().GetParentObject(cx)
|
||||
}
|
||||
|
@ -281,10 +277,6 @@ impl Reflectable for Event {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
let page = page_from_context(cx);
|
||||
unsafe {
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
* 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/. */
|
||||
|
||||
use dom::bindings::codegen::EventTargetBinding;
|
||||
use dom::bindings::utils::{Reflectable, Reflector, DOMString, Fallible, DerivedWrapper};
|
||||
use dom::bindings::utils::{null_str_as_word_null, InvalidState};
|
||||
use dom::bindings::codegen::EventListenerBinding::EventListener;
|
||||
|
@ -119,10 +118,6 @@ impl Reflectable for AbstractEventTarget {
|
|||
self.mut_eventtarget().mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.eventtarget().GetParentObject(cx)
|
||||
}
|
||||
|
@ -205,10 +200,6 @@ impl Reflectable for EventTarget {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
||||
EventTargetBinding::Wrap(cx, scope, self)
|
||||
}
|
||||
|
||||
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.
|
||||
|
|
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::FormDataBinding;
|
|||
use dom::blob::Blob;
|
||||
use dom::window::Window;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
use std::hashmap::HashMap;
|
||||
|
||||
|
@ -58,10 +58,6 @@ impl Reflectable for FormData {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -69,10 +69,6 @@ impl Reflectable for HTMLCollection {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
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::window::Window;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext, JSTracer};
|
||||
use js::jsapi::{JSContext, JSTracer};
|
||||
|
||||
use servo_util::tree::{TreeNodeRef, ElementLike};
|
||||
|
||||
|
@ -89,10 +89,6 @@ impl Reflectable for HTMLDocument {
|
|||
self.parent.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.parent.GetParentObject(cx)
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ use dom::uievent::UIEvent;
|
|||
use dom::window::Window;
|
||||
use dom::windowproxy::WindowProxy;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct MouseEvent {
|
||||
parent: UIEvent,
|
||||
|
@ -152,10 +152,6 @@ impl Reflectable for MouseEvent {
|
|||
self.parent.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.parent.GetParentObject(cx)
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::NavigatorBinding;
|
|||
use dom::window::Window;
|
||||
use script_task::{page_from_context};
|
||||
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct Navigator {
|
||||
reflector_: Reflector //XXXjdm cycle: window->navigator->window
|
||||
|
@ -99,10 +99,6 @@ impl Reflectable for Navigator {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
let page = page_from_context(cx);
|
||||
unsafe {
|
||||
|
|
|
@ -1057,10 +1057,6 @@ impl Reflectable for Node<ScriptView> {
|
|||
self.eventtarget.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
fail!(~"need to implement wrapping");
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
match self.parent_node {
|
||||
Some(node) => Some(unsafe {node.as_cacheable_wrapper()}),
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
|||
use dom::node::{AbstractNode, ScriptView};
|
||||
use dom::window::Window;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
enum NodeListType {
|
||||
Simple(~[AbstractNode<ScriptView>]),
|
||||
|
@ -75,10 +75,6 @@ impl Reflectable for NodeList {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::event::{AbstractEvent, Event, EventTypeId, UIEventTypeId};
|
|||
use dom::window::Window;
|
||||
use dom::windowproxy::WindowProxy;
|
||||
|
||||
use js::jsapi::{JSObject, JSContext};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct UIEvent {
|
||||
parent: Event,
|
||||
|
@ -121,10 +121,6 @@ impl Reflectable for UIEvent {
|
|||
self.parent.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
self.parent.GetParentObject(cx)
|
||||
}
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||
use dom::bindings::codegen::ValidityStateBinding;
|
||||
use dom::window::Window;
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct ValidityState {
|
||||
reflector_: Reflector,
|
||||
|
@ -75,10 +76,6 @@ impl Reflectable for ValidityState {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
unreachable!();
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
Some(self.window as @mut Reflectable)
|
||||
}
|
||||
|
|
|
@ -148,10 +148,6 @@ impl Reflectable for Window {
|
|||
self.eventtarget.mut_reflector()
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
||||
WindowBinding::Wrap(cx, scope, self)
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
None
|
||||
}
|
||||
|
@ -229,10 +225,8 @@ impl Window {
|
|||
next_timer_handle: 0
|
||||
};
|
||||
|
||||
let global = WindowBinding::Wrap(cx, ptr::null(), win);
|
||||
unsafe {
|
||||
let reflector = ptr::to_unsafe_ptr(win.reflector());
|
||||
win.wrap_object_shared(cx, ptr::null()); //XXXjdm proper scope
|
||||
let global = (*reflector).object;
|
||||
do "window".to_c_str().with_ref |name| {
|
||||
JS_DefineProperty(cx, global, name,
|
||||
RUST_OBJECT_TO_JSVAL(global),
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use dom::bindings::utils::{Reflectable, Reflector};
|
||||
use script_task::page_from_context;
|
||||
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
use js::jsapi::JSContext;
|
||||
|
||||
pub struct WindowProxy {
|
||||
reflector_: Reflector
|
||||
|
@ -17,10 +17,6 @@ impl WindowProxy {
|
|||
reflector_: Reflector::new()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn init_wrapper(@mut self, cx: *JSContext, scope: *JSObject) {
|
||||
self.wrap_object_shared(cx, scope);
|
||||
}
|
||||
}
|
||||
|
||||
impl Reflectable for WindowProxy {
|
||||
|
@ -32,10 +28,6 @@ impl Reflectable for WindowProxy {
|
|||
&mut self.reflector_
|
||||
}
|
||||
|
||||
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
|
||||
fail!("not yet implemented")
|
||||
}
|
||||
|
||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||
let page = page_from_context(cx);
|
||||
unsafe {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue