mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-26 03:31:12 +08:00
feat: 端口与通道事件处理器改原型访问器加 dispatchEvent 交付
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::bind_constructor;
|
||||
use crate::bindings::{apply_binding_table, bind_accessor_getter, configure_native_constructor};
|
||||
use crate::bindings::{apply_binding_table, bind_accessor_getset, bind_accessor_getter, configure_native_constructor};
|
||||
use oxide_kernel::kernel::{KernelCore, KernelSession};
|
||||
use oxide_types::object::{JsObject, PropAttributes};
|
||||
use oxide_types::value::JsValue;
|
||||
@@ -134,4 +134,22 @@ pub fn bind_broadcast_channel(core: &Arc<KernelCore>, session: &KernelSession, g
|
||||
oxide_builtins::broadcast_channel::broadcast_channel_ready_state::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
}
|
||||
|
||||
// onmessage / onmessageerror / onerror 访问器属性(getter 读注册表属性条目、
|
||||
// setter 写),lookup_position 守卫。
|
||||
for name in ["onmessage", "onmessageerror", "onerror"] {
|
||||
let key = sf.intern(name).0;
|
||||
if sh.lookup_position(proto.shape_id(), key).is_none() {
|
||||
bind_accessor_getset(
|
||||
core,
|
||||
session,
|
||||
proto,
|
||||
key,
|
||||
&format!("get {name}"),
|
||||
&format!("set {name}"),
|
||||
crate::worker::bindings::worker_event_handler_getter as *const (),
|
||||
crate::worker::bindings::worker_event_handler_setter as *const (),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::bind_constructor;
|
||||
use crate::bindings::{apply_binding_table, bind_accessor_getter, configure_native_constructor};
|
||||
use crate::bindings::{apply_binding_table, bind_accessor_getset, bind_accessor_getter, configure_native_constructor};
|
||||
use oxide_kernel::kernel::{KernelCore, KernelSession};
|
||||
use oxide_types::object::{JsObject, PropAttributes};
|
||||
use oxide_types::value::JsValue;
|
||||
@@ -127,4 +127,22 @@ pub fn bind_message_channel(core: &Arc<KernelCore>, session: &KernelSession, glo
|
||||
oxide_builtins::message_channel::message_port_ready_state::<crate::vm::Vm> as *const (),
|
||||
);
|
||||
}
|
||||
|
||||
// onmessage / onmessageerror / onerror 访问器属性(getter 读注册表属性条目、
|
||||
// setter 写),lookup_position 守卫。
|
||||
for name in ["onmessage", "onmessageerror", "onerror"] {
|
||||
let key = sf.intern(name).0;
|
||||
if sh.lookup_position(proto.shape_id(), key).is_none() {
|
||||
bind_accessor_getset(
|
||||
core,
|
||||
session,
|
||||
proto,
|
||||
key,
|
||||
&format!("get {name}"),
|
||||
&format!("set {name}"),
|
||||
crate::worker::bindings::worker_event_handler_getter as *const (),
|
||||
crate::worker::bindings::worker_event_handler_setter as *const (),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user