pub struct AccessibilityTree {
nodes: FxHashMap<NodeId, ArcRefCell<AccessibilityNode>>,
opaque_node_to_id: FxHashMap<OpaqueNode, NodeId>,
tree_id: TreeId,
root_node_id: Option<NodeId>,
embedder_epoch: Epoch,
debug: DiagnosticsLogging,
}Expand description
A retained, internal representation of the accessibility tree for a document.
accesskit only provides interchange types for tree updates and action requests, so we need
to define our own representation for incremental tree building.
Fields§
§nodes: FxHashMap<NodeId, ArcRefCell<AccessibilityNode>>All nodes currently in the tree as of the most recent update. New nodes are added and stale
nodes are pruned during AccessibilityTree::update_tree().
opaque_node_to_id: FxHashMap<OpaqueNode, NodeId>A map to allow retrieving the AccessibilityNode which corresponds to a particular DOM
node, if any.
tree_id: TreeIdSent with each accesskit::TreeUpdate. This allows this tree to be
grafted into
an application’s tree.
root_node_id: Option<NodeId>Sent with each accesskit::TreeUpdate to identify the root node, and also used in
Self::assert_integrity().
embedder_epoch: EpochSent to the embedder alongside each accesskit::TreeUpdate, so that the embedder can
drop updates from documents which have been navigated away from.
debug: DiagnosticsLoggingDebug options, copied from configuration to this AccessibilityTree in order
to avoid having to constantly access the thread-safe global options.
Implementations§
Source§impl AccessibilityTree
impl AccessibilityTree
Sourcepub(crate) fn new(tree_id: TreeId, embedder_epoch: Epoch) -> Self
pub(crate) fn new(tree_id: TreeId, embedder_epoch: Epoch) -> Self
See Self::tree_id and Self::embedder_epoch for explanations of the parameters.
Sourcepub(crate) fn update_tree(
&mut self,
root_dom_node: &ServoLayoutNode<'_>,
) -> Option<TreeUpdate>
pub(crate) fn update_tree( &mut self, root_dom_node: &ServoLayoutNode<'_>, ) -> Option<TreeUpdate>
Update this tree based on the current state of the given DOM tree, and if anything changed,
return an accesskit::TreeUpdate representing what changed.
Sourcefn update_node_and_descendants(
&mut self,
dom_node: &ServoLayoutNode<'_>,
update: &mut AccessibilityUpdate,
) -> bool
fn update_node_and_descendants( &mut self, dom_node: &ServoLayoutNode<'_>, update: &mut AccessibilityUpdate, ) -> bool
Update this tree starting at the given DOM node, adding any changed nodes to the given
AccessibilityUpdate.
fn get_or_create_node( &mut self, dom_node: &ServoLayoutNode<'_>, update: &mut AccessibilityUpdate, ) -> ArcRefCell<AccessibilityNode>
fn node_for_dom_node( &mut self, dom_node: &ServoLayoutNode<'_>, ) -> Option<ArcRefCell<AccessibilityNode>>
fn assert_node_for_dom_node( &mut self, dom_node: &ServoLayoutNode<'_>, ) -> ArcRefCell<AccessibilityNode>
fn assert_node_for_id(&self, id: NodeId) -> ArcRefCell<AccessibilityNode>
Sourcefn remove_node(&mut self, id: &NodeId)
fn remove_node(&mut self, id: &NodeId)
Remove the node with the given ID from the cache, if it exists.
fn id_for_opaque(&mut self, opaque: OpaqueNode) -> NodeId
pub(crate) fn embedder_epoch(&self) -> Epoch
Sourcefn assert_integrity(&self)
fn assert_integrity(&self)
Assert that the tree is a tree without any dangling references or orphaned nodes.
For accessibility tests only, because it’s expensive.
fn print(&self)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AccessibilityTree
impl !RefUnwindSafe for AccessibilityTree
impl Send for AccessibilityTree
impl Sync for AccessibilityTree
impl Unpin for AccessibilityTree
impl UnsafeUnpin for AccessibilityTree
impl !UnwindSafe for AccessibilityTree
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> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
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