Skip to main content

servo_constellation/
tracing.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5/// Log an event from embedder at trace level.
6/// - To disable tracing: RUST_LOG='constellation<embedder@=off'
7/// - To enable tracing: RUST_LOG='constellation<embedder@'
8/// - Recommended filters when tracing is enabled:
9///   - constellation<embedder@ForwardEvent(MouseMoveEvent)=off
10///   - constellation<embedder@LogEntry=off
11///   - constellation<embedder@ReadyToPresent=off
12macro_rules! trace_msg_from_embedder {
13    // This macro only exists to put the docs in the same file as the target prefix,
14    // so the macro definition is always the same.
15    ($event:expr, $($rest:tt)+) => {
16        ::log::trace!(target: $crate::tracing::LogTarget::log_target(&$event), $($rest)+)
17    };
18}
19
20/// Log an event from script at trace level.
21/// - To disable tracing: RUST_LOG='constellation<script@=off'
22/// - To enable tracing: RUST_LOG='constellation<script@'
23/// - Recommended filters when tracing is enabled:
24///   - constellation<script@LogEntry=off
25macro_rules! trace_script_msg {
26    // This macro only exists to put the docs in the same file as the target prefix,
27    // so the macro definition is always the same.
28    ($event:expr, $($rest:tt)+) => {
29        ::log::trace!(target: $crate::tracing::LogTarget::log_target(&$event), $($rest)+)
30    };
31}
32
33/// Get the log target for an event, as a static string.
34pub(crate) trait LogTarget {
35    fn log_target(&self) -> &'static str;
36}
37
38mod from_embedder {
39    use embedder_traits::{InputEvent, InputEventAndId};
40
41    use super::LogTarget;
42
43    macro_rules! target {
44        ($($name:literal)+) => {
45            concat!("constellation<embedder@", $($name),+)
46        };
47    }
48
49    impl LogTarget for servo_constellation_traits::EmbedderToConstellationMessage {
50        fn log_target(&self) -> &'static str {
51            match self {
52                Self::Exit => target!("Exit"),
53                Self::AllowNavigationResponse(..) => target!("AllowNavigationResponse"),
54                Self::LoadUrl(..) => target!("LoadUrl"),
55                Self::TraverseHistory(..) => target!("TraverseHistory"),
56                Self::ChangeViewportDetails(..) => target!("ChangeViewportDetails"),
57                Self::ThemeChange(..) => target!("ThemeChange"),
58                Self::TickAnimation(..) => target!("TickAnimation"),
59                Self::WebDriverCommand(..) => target!("WebDriverCommand"),
60                Self::Reload(..) => target!("Reload"),
61                Self::LogEntry(..) => target!("LogEntry"),
62                Self::NewWebView(..) => target!("NewWebView"),
63                Self::CloseWebView(..) => target!("CloseWebView"),
64                Self::SetWebViewHasSystemFocus(..) => target!("SetWebViewHasSystemFocus"),
65                Self::ForwardInputEvent(_webview_id, event, ..) => event.log_target(),
66                Self::RefreshCursor(..) => target!("RefreshCursor"),
67                Self::ExitFullScreen(_) => target!("ExitFullScreen"),
68                Self::MediaSessionAction(_) => target!("MediaSessionAction"),
69                Self::SetWebViewHidden(_, _) => target!("SetWebViewHidden"),
70                Self::SetScrollStates(..) => target!("SetScrollStates"),
71                Self::PaintMetric(..) => target!("PaintMetric"),
72                Self::EvaluateJavaScript(..) => target!("EvaluateJavaScript"),
73                Self::CreateMemoryReport(..) => target!("CreateMemoryReport"),
74                Self::SendImageKeysForPipeline(..) => target!("SendImageKeysForPipeline"),
75                Self::PreferencesUpdated(..) => target!("PreferencesUpdated"),
76                Self::NoLongerWaitingOnAsynchronousImageUpdates(..) => {
77                    target!("NoLongerWaitingOnCanvas")
78                },
79                Self::RequestScreenshotReadiness(..) => target!("RequestScreenshotReadiness"),
80                Self::EmbedderControlResponse(..) => target!("EmbedderControlResponse"),
81                Self::UserContentManagerAction(..) => target!("UserContentManagerAction"),
82                Self::UpdatePinchZoomInfos(..) => target!("UpdatePinchZoomInfos"),
83                Self::SetAccessibilityActive(..) => target!("SetAccessibilityActive"),
84                Self::ForwardAccessibilityAction(..) => target!("ForwardAccessibilityAction"),
85                Self::ClearSessionHistory(..) => target!("ClearHistory"),
86                Self::SetNetworkOnlineState(..) => target!("SetNetworkOnlineState"),
87            }
88        }
89    }
90
91    impl LogTarget for InputEventAndId {
92        fn log_target(&self) -> &'static str {
93            macro_rules! target_variant {
94                ($name:literal) => {
95                    target!("ForwardInputEvent(" $name ")")
96                };
97            }
98            match self.event {
99                InputEvent::EditingAction(..) => target_variant!("EditingAction"),
100                #[cfg(feature = "gamepad")]
101                InputEvent::Gamepad(..) => target_variant!("Gamepad"),
102                InputEvent::Ime(..) => target_variant!("Ime"),
103                InputEvent::Keyboard(..) => target_variant!("Keyboard"),
104                InputEvent::MouseButton(..) => target_variant!("MouseButton"),
105                InputEvent::MouseMove(..) => target_variant!("MouseMove"),
106                InputEvent::MouseLeftViewport(..) => target_variant!("MouseLeftViewport"),
107                InputEvent::Touch(..) => target_variant!("Touch"),
108                InputEvent::Wheel(..) => target_variant!("Wheel"),
109            }
110        }
111    }
112}
113
114mod from_script {
115    use super::LogTarget;
116
117    macro_rules! target {
118        ($($name:literal)+) => {
119            concat!("constellation<script@", $($name),+)
120        };
121    }
122
123    impl LogTarget for servo_constellation_traits::ScriptToConstellationMessage {
124        fn log_target(&self) -> &'static str {
125            match self {
126                Self::ServiceWorkerAlgorithm(..) => target!("ServiceWorkerAlgorithm"),
127                Self::CompleteMessagePortTransfer(..) => target!("CompleteMessagePortTransfer"),
128                Self::MessagePortTransferResult(..) => target!("MessagePortTransferResult"),
129                Self::NewMessagePort(..) => target!("NewMessagePort"),
130                Self::NewMessagePortRouter(..) => target!("NewMessagePortRouter"),
131                Self::RemoveMessagePortRouter(..) => target!("RemoveMessagePortRouter"),
132                Self::RerouteMessagePort(..) => target!("RerouteMessagePort"),
133                Self::MessagePortShipped(..) => target!("MessagePortShipped"),
134                Self::EntanglePorts(..) => target!("EntanglePorts"),
135                Self::DisentanglePorts(..) => target!("DisentanglePorts"),
136                Self::NewBroadcastChannelRouter(..) => target!("NewBroadcastChannelRouter"),
137                Self::RemoveBroadcastChannelRouter(..) => target!("RemoveBroadcastChannelRouter"),
138                Self::NewBroadcastChannelNameInRouter(..) => {
139                    target!("NewBroadcastChannelNameInRouter")
140                },
141                Self::RemoveBroadcastChannelNameInRouter(..) => {
142                    target!("RemoveBroadcastChannelNameInRouter")
143                },
144                Self::ScheduleBroadcast(..) => target!("ScheduleBroadcast"),
145                Self::RegisterInterest(..) => target!("RegisterInterest"),
146                Self::UnregisterInterest(..) => target!("UnregisterInterest"),
147                Self::BroadcastStorageEvent(..) => target!("BroadcastStorageEvent"),
148                Self::ChangeRunningAnimationsState(..) => target!("ChangeRunningAnimationsState"),
149                Self::RegisterWorkerAnimationFrameProvider(..) => {
150                    target!("RegisterWorkerAnimationFrameProvider")
151                },
152                Self::UnregisterWorkerAnimationFrameProvider(..) => {
153                    target!("UnregisterWorkerAnimationFrameProvider")
154                },
155                Self::ChangeWorkerAnimationFrameProviderState(..) => {
156                    target!("ChangeWorkerAnimationFrameProviderState")
157                },
158                Self::CreateCanvasPaintThread(..) => target!("CreateCanvasPaintThread"),
159                Self::FocusAncestorBrowsingContextsForFocusingSteps(..) => {
160                    target!("FocusAncestorBrowsingContextsForFocusingSteps")
161                },
162                Self::FocusRemoteBrowsingContext(..) => target!("FocusRemoteBrowsingContext"),
163                Self::GetTopForBrowsingContext(..) => target!("GetTopForBrowsingContext"),
164                Self::GetBrowsingContextInfo(..) => target!("GetBrowsingContextInfo"),
165                Self::GetDocumentOrigin(..) => target!("GetDocumentOrigin"),
166                Self::IsCurrentlyFullyActive(..) => target!("IsCurrentlyFullyActive"),
167                Self::GetDocumentOriginDetails(..) => {
168                    target!("GetDocumentOriginDetails")
169                },
170                Self::GetChildBrowsingContextCount(..) => target!("GetChildBrowsingContextCount"),
171                Self::GetChildBrowsingContextId(..) => target!("GetChildBrowsingContextId"),
172                Self::LoadFinished { .. } => target!("LoadFinished"),
173                Self::LoadUrl(..) => target!("LoadUrl"),
174                Self::AbortLoadUrl => target!("AbortLoadUrl"),
175                Self::PostMessage { .. } => target!("PostMessage"),
176                Self::NavigatedToFragment(..) => target!("NavigatedToFragment"),
177                Self::TraverseHistory(..) => target!("TraverseHistory"),
178                Self::PushHistoryState(..) => target!("PushHistoryState"),
179                Self::ReplaceHistoryState(..) => target!("ReplaceHistoryState"),
180                Self::JointSessionHistoryLength(..) => target!("JointSessionHistoryLength"),
181                Self::RemoveIFrame(..) => target!("RemoveIFrame"),
182                Self::ScriptLoadedURLInIFrame(..) => target!("ScriptLoadedURLInIFrame"),
183                Self::ScriptNewIFrame(..) => target!("ScriptNewIFrame"),
184                Self::CreateAuxiliaryWebView(..) => target!("ScriptNewAuxiliary"),
185                Self::ActivateDocument => target!("ActivateDocument"),
186                Self::SetFinalUrl(..) => target!("SetFinalUrl"),
187                Self::LogEntry(..) => target!("LogEntry"),
188                Self::DiscardDocument => target!("DiscardDocument"),
189                Self::DiscardTopLevelBrowsingContext => target!("DiscardTopLevelBrowsingContext"),
190                Self::PipelineExited => target!("PipelineExited"),
191                Self::ForwardDOMMessage(..) => target!("ForwardDOMMessage"),
192                Self::MediaSessionEvent(..) => target!("MediaSessionEvent"),
193                #[cfg(feature = "webgpu")]
194                Self::RequestAdapter(..) => target!("RequestAdapter"),
195                #[cfg(feature = "webgpu")]
196                Self::GetWebGPUChan(..) => target!("GetWebGPUChan"),
197                Self::TitleChanged(..) => target!("TitleChanged"),
198                Self::IFrameSizes(..) => target!("IFrameSizes"),
199                Self::ReportMemory(..) => target!("ReportMemory"),
200                Self::FinishJavaScriptEvaluation(..) => target!("FinishJavaScriptEvaluation"),
201                Self::ForwardKeyboardScroll(..) => target!("ForwardKeyboardScroll"),
202                Self::RespondToScreenshotReadinessRequest(..) => {
203                    target!("RespondToScreenshotReadinessRequest")
204                },
205                Self::TriggerGarbageCollection => target!("TriggerGarbageCollection"),
206                Self::AcquireWakeLock(..) => target!("AcquireWakeLock"),
207                Self::ReleaseWakeLock(..) => target!("ReleaseWakeLock"),
208            }
209        }
210    }
211}