bao-servo-script 0.5.9

A component of the servo web-engine.
/* 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/. */

#![cfg_attr(crown, feature(register_tool))]
#![deny(unsafe_code)]
#![doc = "The script crate contains all matters DOM."]
// Register the linter `crown`, which is the Servo-specific linter for the script crate.
#![cfg_attr(crown, register_tool(crown))]

// These are used a lot so let's keep them for now
#[macro_use]
extern crate js;
#[macro_use]
extern crate jstraceable_derive;
#[macro_use]
extern crate log;
#[macro_use]
extern crate malloc_size_of_derive;
#[macro_use]
extern crate stylo_atoms;

#[macro_use]
mod tasks;
// Bao embedder-callback API (vendor patch) lives on the upstream ScriptThread
// in event_loop; re-exported here so `servo` crate / bao embedders can reach it.
// register_worker_interfaces_ready_callback (REQ-BRW-004 C15, user ruling
// 2026-09-09) is the second worker-scope drain point — drained after
// define_all_exposed_interfaces so embedder JS hooks see defined interfaces.
// The register_*_injector pair (REQ-BRW-004, user ruling 2026-09-09) is the
// per-Worker NON-consuming delivery tier: every Dedicated Worker of the
// webview receives the injector (the FnOnce callbacks above are consume-once
// — only the first Worker drained them).
pub use event_loop::script_thread::{
    register_bao_event_loop_pump, bao_current_thread_wake_fn, register_embedder_callback,
    register_worker_interfaces_ready_callback, register_worker_interfaces_ready_injector,
    register_worker_scope_callback, register_worker_scope_injector, unregister_worker_injectors,
    bao_run_in_script_settings, BaoEventLoopPump, EmbedderWorkerInjector,
};
pub(crate) mod conversions;
mod css;
mod fetch;
#[macro_use]
mod dom;
pub(crate) use dom::canvas_context;
mod drag;
mod engine;
mod event_loop;
mod runtime;
mod url;

pub mod layout_dom;
pub(crate) mod messaging;
pub(crate) mod mime;
pub(crate) mod modules;
mod navigation;
mod realms;
mod routed_promise;
pub mod test;
mod unminify;
mod window_named_properties;
mod xpath;

pub use event_loop::script_thread::ScriptThread;
pub(crate) use script_bindings::DomTypes;
pub(crate) use script_bindings::reflector::{AssociatedMemory, DomObject, MutDomObject, Reflector};

pub(crate) use crate::dom::bindings::codegen::DomTypeHolder::DomTypeHolder;
// These trait exports are public, because they are used in the DOM bindings.
// Since they are used in derive macros,
// it is useful that they are accessible at the root of the crate.
pub(crate) use crate::dom::bindings::inheritance::HasParent;
pub(crate) use crate::dom::bindings::trace::{CustomTraceable, JSTraceable};
pub use crate::dom::serviceworker::serviceworker_manager::ServiceWorkerManager;
pub use crate::engine::handle::JSEngineSetup;
pub use crate::engine::init::init;