mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
implement opener, disowning
This commit is contained in:
parent
f408b798c4
commit
21bf5a3a4b
32 changed files with 273 additions and 143 deletions
|
@ -61,10 +61,12 @@ use fetch;
|
|||
use ipc_channel::ipc::IpcSender;
|
||||
use ipc_channel::router::ROUTER;
|
||||
use js::jsapi::{JSAutoCompartment, JSContext};
|
||||
use js::jsapi::{JS_GC, JS_GetRuntime};
|
||||
use js::jsval::UndefinedValue;
|
||||
use js::jsapi::{JS_GC, JS_GetRuntime, JSPROP_ENUMERATE};
|
||||
use js::jsval::{JSVal, UndefinedValue};
|
||||
use js::rust::HandleValue;
|
||||
use js::rust::wrappers::JS_DefineProperty;
|
||||
use layout_image::fetch_image_for_layout;
|
||||
use libc;
|
||||
use microtask::MicrotaskQueue;
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use net_traits::{ResourceThreads, ReferrerPolicy};
|
||||
|
@ -574,6 +576,30 @@ impl WindowMethods for Window {
|
|||
self.window_proxy().open(url, target, features)
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
// https://html.spec.whatwg.org/multipage/#dom-opener
|
||||
unsafe fn Opener(&self, cx: *mut JSContext) -> JSVal {
|
||||
self.window_proxy().opener(cx)
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
// https://html.spec.whatwg.org/multipage/#dom-opener
|
||||
unsafe fn SetOpener(&self, cx: *mut JSContext, value: HandleValue) {
|
||||
// Step 1.
|
||||
if value.is_null() {
|
||||
return self.window_proxy().disown();
|
||||
}
|
||||
// Step 2.
|
||||
let obj = self.reflector().get_jsobject();
|
||||
assert!(JS_DefineProperty(cx,
|
||||
obj,
|
||||
"opener\0".as_ptr() as *const libc::c_char,
|
||||
value,
|
||||
JSPROP_ENUMERATE,
|
||||
None,
|
||||
None));
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-window-closed
|
||||
fn Closed(&self) -> bool {
|
||||
self.window_proxy.get()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue