mirror of
https://github.com/servo/servo.git
synced 2025-06-10 17:43:16 +00:00
* Add multiple concurrent top-level browsing contexts Co-authored-by: Delan Azabani <dazabani@igalia.com> * Rename variables and comments There are some variable and comments still use browser as names. This commit renames them to webview. * Update log message from web view to webview * Revert offscreen_framebuffer_id rename * Rename all web view to webview * Cargo fmt * Fix viewport/event/clear coordinates when multiview is disabled * Only deprecate things when multiview is enabled * Update WebViewManger with shown and invisible sets Replace visible_webviews and native_window_is_visible with shown_webviews and invisible_webviews. Add 4 more methods to set them accordingly. The behavior of is_effectively_visible will return true if the wbview is in shown_webviews set but not in invisible_webviews. * Update variant behaviors * Rename WebViewVisibilityChanged to MarkWebViewInvisible * Fix unit test by marking id 3 visible again * Update MarkWebViewInvisible and add UnmarkWebViewInvisible * Update format and doc comments * Clean up doc comments * Address style and naming changes * Rename UpdateWebView to UpdateFrameTreeForWebView * constellation: send frame tree unconditionally over focus and feature * Clarify shown and invisible sets in constellation WebViewManager * Eliminate forward_to_constellation!() * Actually remove the unused macro * Don’t gate compositor changes on multiview feature flag * Update todo in mouse event dispatch * Pass all visible webview ids in a single ReadyToPresent message * Fix compile and lint errors * servoshell: fix gap between minibrowser toolbar and webview * Fix failure in /_mozilla/mozilla/window_resizeTo.html * Fix compile warnings * Remove stray dbg!() * Remove confusing “effectively visible” logic (see #31815, #31816) * Allow embedder to show/hide/raise webviews without ipc * Update root pipeline only when painting order actually changes * Stop gating old focus and SetFrameTree behaviour behind Cargo feature * Use webview_id and WebViewId in webview-related code * Improve logging of webview-related embedder events * Allow webview Show and Raise events to optionally hide all others * Don’t do anything in response to WebViewPaintingOrder * Remove WebViewPaintingOrder, since its payload is unreliable * On MoveResizeWebView, only update root pipeline if rect changed * Rename IOCompositor methods for clarity * compositor: add event tracing; log webview ops even without ipc * Add temporary debug logging * Add more temporary debug logging * Remove temporary logging in compositor * Remove temporary debug logging * Add temporary debug logging, but defer I/O until panic * Capture a backtrace with each crash log entry * Proper error handling without panicking in WebViewManager * Clean up imports in constellation --------- Co-authored-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
58 lines
2.8 KiB
Rust
58 lines
2.8 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/. */
|
|
|
|
/// Log an event from constellation at trace level.
|
|
/// - To disable tracing: RUST_LOG='compositor<constellation@=off'
|
|
/// - To enable tracing: RUST_LOG='compositor<constellation@'
|
|
macro_rules! trace_msg_from_constellation {
|
|
// This macro only exists to put the docs in the same file as the target prefix,
|
|
// so the macro definition is always the same.
|
|
($event:expr, $($rest:tt)+) => {
|
|
::log::trace!(target: $crate::tracing::LogTarget::log_target(&$event), $($rest)+)
|
|
};
|
|
}
|
|
|
|
/// Get the log target for an event, as a static string.
|
|
pub(crate) trait LogTarget {
|
|
fn log_target(&self) -> &'static str;
|
|
}
|
|
|
|
mod from_constellation {
|
|
use super::LogTarget;
|
|
|
|
macro_rules! target {
|
|
($($name:literal)+) => {
|
|
concat!("compositor<constellation@", $($name),+)
|
|
};
|
|
}
|
|
|
|
impl LogTarget for compositing_traits::CompositorMsg {
|
|
fn log_target(&self) -> &'static str {
|
|
match self {
|
|
Self::ShutdownComplete => target!("ShutdownComplete"),
|
|
Self::ChangeRunningAnimationsState(..) => target!("ChangeRunningAnimationsState"),
|
|
Self::CreateOrUpdateWebView(..) => target!("CreateOrUpdateWebView"),
|
|
Self::RemoveWebView(..) => target!("RemoveWebView"),
|
|
Self::MoveResizeWebView(..) => target!("MoveResizeWebView"),
|
|
Self::ShowWebView(..) => target!("ShowWebView"),
|
|
Self::HideWebView(..) => target!("HideWebView"),
|
|
Self::RaiseWebViewToTop(..) => target!("RaiseWebViewToTop"),
|
|
Self::TouchEventProcessed(..) => target!("TouchEventProcessed"),
|
|
Self::CreatePng(..) => target!("CreatePng"),
|
|
Self::IsReadyToSaveImageReply(..) => target!("IsReadyToSaveImageReply"),
|
|
Self::SetThrottled(..) => target!("SetThrottled"),
|
|
Self::NewWebRenderFrameReady(..) => target!("NewWebRenderFrameReady"),
|
|
Self::PipelineExited(..) => target!("PipelineExited"),
|
|
Self::PendingPaintMetric(..) => target!("PendingPaintMetric"),
|
|
Self::LoadComplete(..) => target!("LoadComplete"),
|
|
Self::WebDriverMouseButtonEvent(..) => target!("WebDriverMouseButtonEvent"),
|
|
Self::WebDriverMouseMoveEvent(..) => target!("WebDriverMouseMoveEvent"),
|
|
Self::GetClientWindow(..) => target!("GetClientWindow"),
|
|
Self::GetScreenSize(..) => target!("GetScreenSize"),
|
|
Self::GetScreenAvailSize(..) => target!("GetScreenAvailSize"),
|
|
Self::Forwarded(..) => target!("Forwarded"),
|
|
}
|
|
}
|
|
}
|
|
}
|