pub(crate) struct ConstellationWebView {Show 15 fields
webview_id: WebViewId,
pub active_top_level_pipeline_id: Option<PipelineId>,
pub active_top_level_pipeline_epoch: Epoch,
pub pending_changes: Vec<SessionHistoryChange>,
pub focused_browsing_context_id: BrowsingContextId,
pub hovered_browsing_context_id: Option<BrowsingContextId>,
pub last_mouse_move_point: Point2D<f32, CSSPixel>,
pub session_history: JointSessionHistory,
pub session_history_traversal_request_queue: VecDeque<SessionHistoryTraversalRequest>,
pub ongoing_history_traversal_request: Option<OngoingHistoryTraversalRequest>,
pending_viewport_details: HashMap<BrowsingContextId, ViewportDetails>,
pub user_content_manager_id: Option<UserContentManagerId>,
theme: Theme,
pub accessibility_active: bool,
screenshot_readiness_requests: Vec<ScreenshotReadinessRequest>,
}Expand description
The Constellation’s view of a WebView in the embedding layer. This tracks all of the
Constellation state for this WebView.
Fields§
§webview_id: WebViewIdThe WebViewId of this ConstellationWebView.
active_top_level_pipeline_id: Option<PipelineId>The PipelineId of the currently active pipeline at the top level of this WebView.
active_top_level_pipeline_epoch: EpochA counter for changes to Self::active_top_level_pipeline_id.
pending_changes: Vec<SessionHistoryChange>When a navigation is performed, we do not immediately update
the session history, instead we ask the event loop to begin loading
the new document, and do not update the browsing context until the
document is active. Between starting the load and it activating,
we store a SessionHistoryChange object for the navigation in progress.
focused_browsing_context_id: BrowsingContextIdThe currently focused browsing context in this webview for key events. The focused pipeline is the current entry of the focused browsing context.
hovered_browsing_context_id: Option<BrowsingContextId>The BrowsingContextId of the currently hovered browsing context, to use for
knowing which frame is currently receiving cursor events.
last_mouse_move_point: Point2D<f32, CSSPixel>The last mouse move point in the coordinate space of the Pipeline that it happened int.
session_history: JointSessionHistoryThe joint session history for this webview.
session_history_traversal_request_queue: VecDeque<SessionHistoryTraversalRequest>https://html.spec.whatwg.org/multipage/#tn-session-history-traversal-queue
A queue of traversals that should be applied sequentially. The next item from
the queue is applied once Self::ongoing_history_traversal_request has finished.
ongoing_history_traversal_request: Option<OngoingHistoryTraversalRequest>The currently running session history traversal. This will be completed once all
Pipelines in a traversal become active or their load fails for some other reason.
pending_viewport_details: HashMap<BrowsingContextId, ViewportDetails>Pending viewport changes for browsing contexts that are not yet known to the constellation.
user_content_manager_id: Option<UserContentManagerId>The UserContentManagerId for all pipelines in this WebView. This is Some
if the embedder has set a UserContentManager using the WebViewBuilder API and
it is None otherwise.
theme: ThemeThe Theme that this ConstellationWebView uses. This is communicated to all
ScriptThreads so that they know how to render the contents of a particular `WebView.
accessibility_active: boolWhether accessibility is active for this webview.
Set by crate::Constellation::set_accessibility_active(), and forwarded to the
webview’s active pipelines (of those that represent documents) at any given moment
via ScriptThreadMessage::SetAccessibilityActive in set_accessibility_active()
and crate::Constellation::set_frame_tree_for_webview().
screenshot_readiness_requests: Vec<ScreenshotReadinessRequest>Pending screenshot readiness requests. These are collected until the screenshot is ready to take place, at which point the Constellation informs the renderer that it can start the process of taking the screenshot.
Implementations§
Source§impl ConstellationWebView
impl ConstellationWebView
pub(crate) fn new( webview_id: WebViewId, focused_browsing_context_id: BrowsingContextId, user_content_manager_id: Option<UserContentManagerId>, ) -> Self
Sourcepub(crate) fn set_theme(&mut self, new_theme: Theme) -> bool
pub(crate) fn set_theme(&mut self, new_theme: Theme) -> bool
Set the Theme on this ConstellationWebView returning true if the theme changed.
Sourcepub(crate) fn theme(&self) -> Theme
pub(crate) fn theme(&self) -> Theme
Get the Theme of this ConstellationWebView.
fn target_pipeline_id_for_input_event( &self, event: &ConstellationInputEvent, browsing_contexts: &FxHashMap<BrowsingContextId, BrowsingContext>, ) -> Option<PipelineId>
Sourcepub(crate) fn forward_input_event(
&mut self,
event: ConstellationInputEvent,
pipelines: &FxHashMap<PipelineId, Pipeline>,
browsing_contexts: &FxHashMap<BrowsingContextId, BrowsingContext>,
) -> bool
pub(crate) fn forward_input_event( &mut self, event: ConstellationInputEvent, pipelines: &FxHashMap<PipelineId, Pipeline>, browsing_contexts: &FxHashMap<BrowsingContextId, BrowsingContext>, ) -> bool
Forward the InputEvent to this ConstellationWebView. Returns false if
the event could not be forwarded or true otherwise.
pub(crate) fn close_browsing_context( &mut self, browsing_context_id: BrowsingContextId, )
Sourcepub(crate) fn maybe_finish_ongoing_session_history_traversal_request(
&mut self,
) -> Option<SessionHistoryTraversalRequest>
pub(crate) fn maybe_finish_ongoing_session_history_traversal_request( &mut self, ) -> Option<SessionHistoryTraversalRequest>
If there is an ongoing history traversal request that is waiting on documents to reload, check to see if none of its pipelines are awaiting activation. If that’s the case unset the ongoing request and return it.
pub(crate) fn has_pending_change(&self) -> bool
pub(crate) fn pipeline_is_pending(&self, pipeline_id: PipelineId) -> bool
pub(crate) fn add_pending_change(&mut self, change: SessionHistoryChange)
pub(crate) fn remove_pending_change_for_pipeline( &mut self, pipeline_id: PipelineId, ) -> Option<SessionHistoryChange>
pub(crate) fn handle_screenshot_readiness_request( &mut self, browsing_contexts: &FxHashMap<BrowsingContextId, BrowsingContext>, pipelines: &FxHashMap<PipelineId, Pipeline>, )
pub(crate) fn send_screenshot_readiness_requests_to_pipelines( &mut self, browsing_contexts: &FxHashMap<BrowsingContextId, BrowsingContext>, pipelines: &FxHashMap<PipelineId, Pipeline>, )
pub(crate) fn handle_screenshot_readiness_response( &mut self, updated_pipeline_id: PipelineId, response: ScreenshotReadinessResponse, paint_proxy: &PaintProxy, )
pub(crate) fn add_viewport_details( &mut self, browsing_context_id: BrowsingContextId, viewport_details: ViewportDetails, )
pub(crate) fn take_pending_viewport_details( &mut self, browsing_context_id: &BrowsingContextId, ) -> Option<ViewportDetails>
Auto Trait Implementations§
impl Freeze for ConstellationWebView
impl !RefUnwindSafe for ConstellationWebView
impl Send for ConstellationWebView
impl Sync for ConstellationWebView
impl Unpin for ConstellationWebView
impl UnsafeUnpin for ConstellationWebView
impl !UnwindSafe for ConstellationWebView
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more