mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Create two new data structures in the `script` crate to hold senders and receiver: - `ScriptThreadSenders`: holds all outgoing channels from the `ScriptThread` including a channel to the `ScriptThread` itself. The ultimate goal with this is to reduce duplication by giving a boxed version of this this to `Window`s. - `ScriptThradReceivers`: holds all incoming channels to the `ScriptThread`. This isn't cloenable like the senders. This is used to abstract away `recv()` and `try_recv()` methods used to make the `ScriptThread` event loop easier to read. In addition: - The many duplicated `ScriptThread` self-senders for the `TaskManager` have been removed and, in general, a lot of boilerplate is removed as well. - Visibilty of all methods affected by this change is changed to `pub(crate)` in order to take advantage of dead code detection. Some dead code produced from macros is removed. - Some conversion code is refactord into implementations of the `From` trait. - The names of channels uses a standard "sender" and "receiver" naming as well as trying to be descriptive of where they go in `ScriptThread` as well as `InitialScriptState` Signed-off-by: Martin Robinson <mrobinson@igalia.com>
122 lines
2.9 KiB
Rust
122 lines
2.9 KiB
Rust
/* 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/. */
|
|
|
|
#![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. Issue a warning if `crown` is not being used to compile, but not when
|
|
// building rustdoc or running clippy.
|
|
#![register_tool(crown)]
|
|
#![cfg_attr(any(doc, clippy), allow(unknown_lints))]
|
|
#![deny(crown_is_not_used)]
|
|
|
|
// 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 servo_atoms;
|
|
|
|
mod animation_timeline;
|
|
mod animations;
|
|
#[warn(deprecated)]
|
|
#[macro_use]
|
|
mod task;
|
|
#[warn(deprecated)]
|
|
mod body;
|
|
#[warn(deprecated)]
|
|
pub mod clipboard_provider;
|
|
#[warn(deprecated)]
|
|
pub mod conversions;
|
|
#[warn(deprecated)]
|
|
mod devtools;
|
|
#[warn(deprecated)]
|
|
pub mod document_loader;
|
|
#[warn(deprecated)]
|
|
#[macro_use]
|
|
mod dom;
|
|
#[warn(deprecated)]
|
|
mod canvas_state;
|
|
#[warn(deprecated)]
|
|
pub mod fetch;
|
|
#[warn(deprecated)]
|
|
mod image_listener;
|
|
#[warn(deprecated)]
|
|
mod init;
|
|
#[warn(deprecated)]
|
|
mod layout_image;
|
|
|
|
#[warn(deprecated)]
|
|
pub mod document_collection;
|
|
#[warn(deprecated)]
|
|
pub mod iframe_collection;
|
|
pub mod layout_dom;
|
|
#[warn(deprecated)]
|
|
mod mem;
|
|
#[warn(deprecated)]
|
|
#[allow(unsafe_code)]
|
|
pub mod messaging;
|
|
#[warn(deprecated)]
|
|
mod microtask;
|
|
#[warn(deprecated)]
|
|
mod network_listener;
|
|
#[warn(deprecated)]
|
|
mod realms;
|
|
#[warn(deprecated)]
|
|
mod script_module;
|
|
#[warn(deprecated)]
|
|
pub mod script_runtime;
|
|
#[warn(deprecated)]
|
|
#[allow(unsafe_code)]
|
|
pub mod script_thread;
|
|
#[warn(deprecated)]
|
|
pub mod security_manager;
|
|
#[warn(deprecated)]
|
|
pub mod serviceworker_manager;
|
|
#[warn(deprecated)]
|
|
mod stylesheet_loader;
|
|
#[warn(deprecated)]
|
|
mod stylesheet_set;
|
|
#[warn(deprecated)]
|
|
mod task_manager;
|
|
#[warn(deprecated)]
|
|
mod task_queue;
|
|
#[warn(deprecated)]
|
|
mod task_source;
|
|
#[warn(deprecated)]
|
|
pub mod test;
|
|
#[warn(deprecated)]
|
|
pub mod textinput;
|
|
#[warn(deprecated)]
|
|
mod timers;
|
|
#[warn(deprecated)]
|
|
mod unpremultiplytable;
|
|
#[warn(deprecated)]
|
|
mod webdriver_handlers;
|
|
#[warn(deprecated)]
|
|
mod window_named_properties;
|
|
|
|
mod unminify;
|
|
|
|
mod drag_data_store;
|
|
mod links;
|
|
mod xpath;
|
|
|
|
pub use init::init;
|
|
pub use script_runtime::JSEngineSetup;
|
|
|
|
pub use crate::dom::bindings::codegen::DomTypeHolder::DomTypeHolder;
|
|
pub use crate::dom::bindings::codegen::DomTypes::DomTypes;
|
|
// 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 use crate::dom::bindings::inheritance::HasParent;
|
|
pub use crate::dom::bindings::reflector::{DomObject, MutDomObject, Reflector};
|
|
pub use crate::dom::bindings::trace::{CustomTraceable, JSTraceable};
|