/
githubmirror
/
servo
Обзор
Документация
Войти
/
githubmirror
/
servo
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
components/script_bindings/namespace.rs
63 строки
2 KB
niya
script: expose static attributes of webidl namespace to javascript (#45378)
08 июн 2026, 11:21
Не верифицирован
08 июн 2026, 11:21
0736bad
Код
Авторство
О чём код?
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ //! Machinery to initialise namespace objects. use std::ffi::CStr; use std::ptr; use js::context::JSContext; use js::jsapi::{JSClass, JSFunctionSpec, JSPropertySpec}; use js::rust::{HandleObject, MutableHandleObject}; use crate::DomTypes; use crate::constant::ConstantSpec; use crate::guard::Guard; use crate::interface::{create_object, define_on_global_object}; /// The class of a namespace object. #[derive(Clone, Copy)] pub(crate) struct NamespaceObjectClass(JSClass); unsafe impl Sync for NamespaceObjectClass {} impl NamespaceObjectClass { /// Create a new `NamespaceObjectClass` structure. pub(crate) const unsafe fn new(name: &'static CStr) -> Self { NamespaceObjectClass(JSClass { name: name.as_ptr(), flags: 0, cOps: ptr::null(), spec: ptr::null(), ext: ptr::null(), oOps: ptr::null(), }) } } /// Create a new namespace object. #[expect(clippy::too_many_arguments)] pub(crate) fn create_namespace_object<D: DomTypes>( cx: &mut JSContext, global: HandleObject, proto: HandleObject, class: &'static NamespaceObjectClass, methods: &[Guard<&'static [JSFunctionSpec]>], attributes: &[Guard<&'static [JSPropertySpec]>], constants: &[Guard<&'static [ConstantSpec]>], name: &CStr, mut rval: MutableHandleObject, ) { create_object::<D>( cx, global, proto, &class.0, methods, attributes, constants, rval.reborrow(), ); define_on_global_object(cx, global, name, rval.handle()); }