aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-05-20 11:43:46 -0400
committerbors-servo <release+servo@mozilla.com>2014-05-20 11:43:46 -0400
commitca9396ff9c7ebeea48d881b421854168b9afb825 (patch)
treeac6081bf013c32d4b91cf15c2b202406e6412b82 /src/components/script/dom
parent90a0bcfa78ddf89031d54e4ed8ae84e2b171b4d0 (diff)
parent81821052040eab42e9b3ca72aeccbb17cd002197 (diff)
downloadservo-ca9396ff9c7ebeea48d881b421854168b9afb825.tar.gz
servo-ca9396ff9c7ebeea48d881b421854168b9afb825.zip
auto merge of #2434 : Ms2ger/servo/contentWindow, r=jdm
Diffstat (limited to 'src/components/script/dom')
-rw-r--r--src/components/script/dom/bindings/utils.rs22
-rw-r--r--src/components/script/dom/htmliframeelement.rs14
2 files changed, 22 insertions, 14 deletions
diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs
index f5b0f08849e..7c742efcbb2 100644
--- a/src/components/script/dom/bindings/utils.rs
+++ b/src/components/script/dom/bindings/utils.rs
@@ -37,6 +37,7 @@ use js::jsapi::{JSContext, JSObject, JSBool, jsid, JSClass, JSNative};
use js::jsapi::{JSFunctionSpec, JSPropertySpec};
use js::jsapi::{JS_NewGlobalObject, JS_InitStandardClasses};
use js::jsapi::{JSString};
+use js::jsfriendapi::JS_ObjectToOuterObject;
use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType;
use js::jsval::JSVal;
use js::jsval::{PrivateValue, ObjectValue, NullValue, ObjectOrNullValue};
@@ -594,19 +595,14 @@ pub fn CreateDOMGlobal(cx: *JSContext, class: *JSClass) -> *JSObject {
pub extern fn wrap_for_same_compartment(cx: *JSContext, obj: *JSObject) -> *JSObject {
unsafe {
- let clasp = JS_GetClass(obj);
- let clasp = clasp as *js::Class;
- match (*clasp).ext.outerObject {
- Some(outerize) => {
- debug!("found an outerize hook");
- let obj = JSHandleObject { unnamed: &obj };
- outerize(cx, obj)
- }
- None => {
- debug!("no outerize hook found");
- obj
- }
- }
+ JS_ObjectToOuterObject(cx as *mut _, obj as *mut _) as *_
+ }
+}
+
+pub extern fn pre_wrap(cx: *mut JSContext, _scope: *mut JSObject,
+ obj: *mut JSObject, _flags: c_uint) -> *mut JSObject {
+ unsafe {
+ JS_ObjectToOuterObject(cx, obj)
}
}
diff --git a/src/components/script/dom/htmliframeelement.rs b/src/components/script/dom/htmliframeelement.rs
index f92fddabdaa..766d7a711f9 100644
--- a/src/components/script/dom/htmliframeelement.rs
+++ b/src/components/script/dom/htmliframeelement.rs
@@ -14,6 +14,7 @@ use dom::htmlelement::HTMLElement;
use dom::node::{Node, ElementNodeTypeId, window_from_node};
use dom::virtualmethods::VirtualMethods;
use dom::window::Window;
+use script_task::IterablePage;
use servo_msg::constellation_msg::{PipelineId, SubpageId};
use servo_msg::constellation_msg::{IFrameSandboxed, IFrameUnsandboxed};
use servo_msg::constellation_msg::{ConstellationChan, LoadIframeUrlMsg};
@@ -184,7 +185,18 @@ impl<'a> HTMLIFrameElementMethods for JSRef<'a, HTMLIFrameElement> {
}
fn GetContentWindow(&self) -> Option<Temporary<Window>> {
- None
+ self.size.and_then(|size| {
+ let window = window_from_node(self).root();
+ let children = &*window.deref().page.children.deref().borrow();
+ let child = children.iter().find(|child| {
+ child.subpage_id.unwrap() == size.subpage_id
+ });
+ child.and_then(|page| {
+ page.frame.deref().borrow().as_ref().map(|frame| {
+ Temporary::new(frame.window.clone())
+ })
+ })
+ })
}
fn Align(&self) -> DOMString {