pub struct VirtualViewManager { /* private fields */ }Expand description
Manages VirtualView lifecycle, including re-invocation and PipelineId generation
Tracks which VirtualViews have been invoked, assigns unique DOM IDs to nested virtual views, and determines when VirtualViews need to be re-invoked (e.g., when the container bounds expand or the user scrolls near an edge).
Implementations§
Source§impl VirtualViewManager
impl VirtualViewManager
Sourcepub fn debug_counts(&self) -> (usize, usize)
pub fn debug_counts(&self) -> (usize, usize)
(states, pipeline_ids). Used by AZ_E2E_TEST to watch growth.
Sourcepub fn begin_frame(&mut self)
pub fn begin_frame(&mut self)
Called at the start of each frame (currently a no-op)
Sourcepub fn get_or_create_nested_dom_id(
&mut self,
dom_id: DomId,
node_id: NodeId,
) -> DomId
pub fn get_or_create_nested_dom_id( &mut self, dom_id: DomId, node_id: NodeId, ) -> DomId
Gets or creates a unique nested DOM ID for a VirtualView
Returns the existing DOM ID if the VirtualView was previously registered, otherwise allocates a new unique ID and initializes the VirtualView state.
Sourcepub fn get_nested_dom_id(&self, dom_id: DomId, node_id: NodeId) -> Option<DomId>
pub fn get_nested_dom_id(&self, dom_id: DomId, node_id: NodeId) -> Option<DomId>
Gets the nested DOM ID for a VirtualView if it exists
Sourcepub fn get_or_create_pipeline_id(
&mut self,
dom_id: DomId,
node_id: NodeId,
) -> PipelineId
pub fn get_or_create_pipeline_id( &mut self, dom_id: DomId, node_id: NodeId, ) -> PipelineId
Gets or creates a WebRender PipelineId for a VirtualView
PipelineIds are used by WebRender to identify distinct rendering contexts.
Sourcepub fn was_virtual_view_invoked(&self, dom_id: DomId, node_id: NodeId) -> bool
pub fn was_virtual_view_invoked(&self, dom_id: DomId, node_id: NodeId) -> bool
Returns whether the VirtualView has ever been invoked
Sourcepub fn get_virtual_scroll_size(
&self,
dom_id: DomId,
node_id: NodeId,
) -> Option<LogicalSize>
pub fn get_virtual_scroll_size( &self, dom_id: DomId, node_id: NodeId, ) -> Option<LogicalSize>
Returns the virtual scroll size for a VirtualView (if set by the callback)
Sourcepub fn get_scroll_size(
&self,
dom_id: DomId,
node_id: NodeId,
) -> Option<LogicalSize>
pub fn get_scroll_size( &self, dom_id: DomId, node_id: NodeId, ) -> Option<LogicalSize>
Returns the scroll size for a VirtualView (actual content size, if set by the callback)
Sourcepub fn update_virtual_view_info(
&mut self,
dom_id: DomId,
node_id: NodeId,
scroll_size: LogicalSize,
virtual_scroll_size: LogicalSize,
) -> Option<()>
pub fn update_virtual_view_info( &mut self, dom_id: DomId, node_id: NodeId, scroll_size: LogicalSize, virtual_scroll_size: LogicalSize, ) -> Option<()>
Updates the VirtualView’s content size information
Called after the VirtualView callback returns to record the actual content dimensions. If the new size is larger than previously recorded, clears the expansion flag to allow BoundsExpanded re-invocation.
Sourcepub fn mark_invoked(
&mut self,
dom_id: DomId,
node_id: NodeId,
reason: VirtualViewCallbackReason,
) -> Option<()>
pub fn mark_invoked( &mut self, dom_id: DomId, node_id: NodeId, reason: VirtualViewCallbackReason, ) -> Option<()>
Marks a VirtualView as invoked for a specific reason
Updates internal state flags based on the callback reason to prevent duplicate callbacks for the same trigger condition.
Sourcepub fn reset_all_invocation_flags(&mut self)
pub fn reset_all_invocation_flags(&mut self)
Reset invocation flags for ALL tracked VirtualViews
After layout_results.clear(), the child DOMs no longer exist in memory.
This method ensures check_reinvoke() returns InitialRender for every
VirtualView, so the callbacks re-run and re-populate layout_results.
Called from layout_and_generate_display_list() after clearing layout results.
Sourcepub fn force_reinvoke(&mut self, dom_id: DomId, node_id: NodeId) -> Option<()>
pub fn force_reinvoke(&mut self, dom_id: DomId, node_id: NodeId) -> Option<()>
Force a VirtualView to be re-invoked on the next layout pass
Clears all invocation flags, causing check_reinvoke() to return InitialRender. Used by trigger_virtual_view_rerender() to manually refresh VirtualView content.
Sourcepub fn check_reinvoke(
&mut self,
dom_id: DomId,
node_id: NodeId,
scroll_manager: &ScrollManager,
layout_bounds: LogicalRect,
) -> Option<VirtualViewCallbackReason>
pub fn check_reinvoke( &mut self, dom_id: DomId, node_id: NodeId, scroll_manager: &ScrollManager, layout_bounds: LogicalRect, ) -> Option<VirtualViewCallbackReason>
Checks whether a VirtualView needs to be re-invoked and returns the reason
Returns Some(reason) if the VirtualView callback should be invoked:
InitialRender: VirtualView has never been invokedBoundsExpanded: Container grew larger than contentEdgeScrolled: User scrolled near an edge (for lazy loading)
Returns None if no re-invocation is needed.
Sourcepub fn get_all_virtual_view_infos(&self) -> Vec<VirtualViewDebugInfo>
pub fn get_all_virtual_view_infos(&self) -> Vec<VirtualViewDebugInfo>
Returns debug info for all tracked VirtualViews
Each entry contains: (parent_dom_id, parent_node_id, nested_dom_id, scroll_size, virtual_scroll_size, was_invoked, last_bounds)
Trait Implementations§
Source§impl Clone for VirtualViewManager
impl Clone for VirtualViewManager
Source§fn clone(&self) -> VirtualViewManager
fn clone(&self) -> VirtualViewManager
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VirtualViewManager
impl Debug for VirtualViewManager
Source§impl Default for VirtualViewManager
impl Default for VirtualViewManager
Source§fn default() -> VirtualViewManager
fn default() -> VirtualViewManager
Auto Trait Implementations§
impl Freeze for VirtualViewManager
impl RefUnwindSafe for VirtualViewManager
impl Send for VirtualViewManager
impl Sync for VirtualViewManager
impl Unpin for VirtualViewManager
impl UnsafeUnpin for VirtualViewManager
impl UnwindSafe for VirtualViewManager
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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