Files
servo/components/constellation/lib.rs
Martin Robinson 516cdbd7d0 libservo: Starting removing the multi-document interface API (#40923)
For a while Servo has while had a somewhat unfinished multi-document
interface API that was meant to implement a kind of window manager
inside a single `RenderingContext`. This came with some focus handling
and a paint order implementation. This code was never really finished
and the `WebView` API is moving toward a design where compositing
different `WebView`s together is up to the embedder.

This is finally possible now that rendering to multiple
`RenderingContext`s is supported. In addition, the MDI API interferes
with focus handling when `WebView`s are distributed across windows.
Given these two points, this change starts to remove the MDI API.

- All `WebView`s can still be hidden / unhidden and start in an unhidden
  state.
- All `WebView`s always have system focus. System focus never properly
  interfaced with Servo's internal focus system anyway. A followup
  change will add proper system focus integration.
- There are still some leftovers from the MDI interface (such as
  `WebView`s having their own size). These will be cleaned up in a
  followup change. Only the changes necessary to get multi-window
  support working are included here.

Testing: This should not change observable behavior and tests are
updated for the
new APIs.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-28 10:21:49 +00:00

26 lines
759 B
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/. */
#![deny(unsafe_code)]
#[macro_use]
mod tracing;
mod broadcastchannel;
mod browsingcontext;
mod constellation;
mod constellation_webview;
mod event_loop;
mod logging;
mod pipeline;
mod process_manager;
mod sandboxing;
mod serviceworker;
mod session_history;
pub use crate::constellation::{Constellation, InitialConstellationState};
pub use crate::event_loop::{EventLoop, NewScriptEventLoopProcessInfo};
pub use crate::logging::{FromEmbedderLogger, FromScriptLogger};
pub use crate::sandboxing::{UnprivilegedContent, content_process_sandbox_profile};