BaseDocument

Struct BaseDocument 

Source
pub struct BaseDocument {
    pub net_provider: Arc<dyn NetProvider<Resource>>,
    pub navigation_provider: Arc<dyn NavigationProvider>,
    pub shell_provider: Arc<dyn ShellProvider>,
    pub html_parser_provider: Arc<dyn HtmlParserProvider>,
    /* private fields */
}

Fields§

§net_provider: Arc<dyn NetProvider<Resource>>

Network provider. Can be used to fetch assets.

§navigation_provider: Arc<dyn NavigationProvider>

Navigation provider. Can be used to navigate to a new page (bubbles up the event on e.g. clicking a Link)

§shell_provider: Arc<dyn ShellProvider>

Shell provider. Can be used to request a redraw or set the cursor icon

§html_parser_provider: Arc<dyn HtmlParserProvider>

HTML parser provider. Used to parse HTML for setInnerHTML

Implementations§

Source§

impl BaseDocument

Source

pub fn new(config: DocumentConfig) -> Self

Create a new (empty) BaseDocument with the specified configuration

Source

pub fn set_net_provider(&mut self, net_provider: SharedProvider<Resource>)

Set the Document’s networking provider

Source

pub fn set_navigation_provider( &mut self, navigation_provider: Arc<dyn NavigationProvider>, )

Set the Document’s navigation provider

Source

pub fn set_shell_provider(&mut self, shell_provider: Arc<dyn ShellProvider>)

Set the Document’s shell provider

Source

pub fn set_html_parser_provider( &mut self, html_parser_provider: Arc<dyn HtmlParserProvider>, )

Set the Document’s html parser provider

Source

pub fn set_base_url(&mut self, url: &str)

Set base url for resolving linked resources (stylesheets, images, fonts, etc)

Source

pub fn guard(&self) -> &SharedRwLock

Source

pub fn tree(&self) -> &Slab<Node>

Source

pub fn id(&self) -> usize

Source

pub fn get_node(&self, node_id: usize) -> Option<&Node>

Source

pub fn get_node_mut(&mut self, node_id: usize) -> Option<&mut Node>

Source

pub fn get_focussed_node_id(&self) -> Option<usize>

Source

pub fn mutate<'doc>(&'doc mut self) -> DocumentMutator<'doc>

Source

pub fn handle_dom_event<F: FnMut(DomEvent)>( &mut self, event: &mut DomEvent, dispatch_event: F, )

Source

pub fn as_any_mut(&mut self) -> &mut dyn Any

Source

pub fn label_bound_input_element(&self, label_node_id: usize) -> Option<&Node>

Find the label’s bound input elements: the element id referenced by the “for” attribute of a given label element or the first input element which is nested in the label Note that although there should only be one bound element, we return all possibilities instead of just the first in order to allow the caller to decide which one is correct

Source

pub fn toggle_checkbox(el: &mut ElementData) -> bool

Source

pub fn toggle_radio(&mut self, radio_set_name: String, target_radio_id: usize)

Source

pub fn set_style_property(&mut self, node_id: usize, name: &str, value: &str)

Source

pub fn remove_style_property(&mut self, node_id: usize, name: &str)

Source

pub fn root_node(&self) -> &Node

Source

pub fn root_node_mut(&mut self) -> &mut Node

Source

pub fn try_root_element(&self) -> Option<&Node>

Source

pub fn root_element(&self) -> &Node

Source

pub fn create_node(&mut self, node_data: NodeData) -> usize

Source

pub fn has_changes(&self) -> bool

Whether the document has been mutated

Source

pub fn create_text_node(&mut self, text: &str) -> usize

Source

pub fn deep_clone_node(&mut self, node_id: usize) -> usize

Source

pub fn print_tree(&self)

Source

pub fn print_subtree(&self, node_id: usize)

Source

pub fn reload_resource_by_href(&mut self, href_to_reload: &str)

Source

pub fn process_style_element(&mut self, target_id: usize)

Source

pub fn remove_user_agent_stylesheet(&mut self, contents: &str)

Source

pub fn add_user_agent_stylesheet(&mut self, css: &str)

Source

pub fn make_stylesheet( &self, css: impl AsRef<str>, origin: Origin, ) -> DocumentStyleSheet

Source

pub fn upsert_stylesheet_for_node(&mut self, node_id: usize)

Source

pub fn add_stylesheet_for_node( &mut self, stylesheet: DocumentStyleSheet, node_id: usize, )

Source

pub fn load_resource(&mut self, resource: Resource)

Source

pub fn snapshot_node(&mut self, node_id: usize)

Source

pub fn snapshot_node_and(&mut self, node_id: usize, cb: impl FnOnce(&mut Node))

Source

pub fn resolve(&mut self, current_time_for_animations: f64)

Restyle the tree and then relayout it

Source

pub fn hit(&self, x: f32, y: f32) -> Option<HitResult>

Source

pub fn focus_next_node(&mut self) -> Option<usize>

Source

pub fn clear_focus(&mut self)

Clear the focussed node

Source

pub fn set_mousedown_node_id(&mut self, node_id: Option<usize>)

Source

pub fn set_focus_to(&mut self, focus_node_id: usize) -> bool

Source

pub fn active_node(&mut self) -> bool

Source

pub fn unactive_node(&mut self) -> bool

Source

pub fn set_hover_to(&mut self, x: f32, y: f32) -> bool

Source

pub fn get_hover_node_id(&self) -> Option<usize>

Source

pub fn set_viewport(&mut self, viewport: Viewport)

Source

pub fn viewport(&self) -> &Viewport

Source

pub fn viewport_mut(&mut self) -> ViewportMut<'_>

Source

pub fn zoom_by(&mut self, increment: f32)

Source

pub fn zoom_to(&mut self, zoom: f32)

Source

pub fn get_viewport(&self) -> Viewport

Source

pub fn devtools(&self) -> &DevtoolSettings

Source

pub fn devtools_mut(&mut self) -> &mut DevtoolSettings

Source

pub fn is_animating(&self) -> bool

Source

pub fn set_stylist_device(&mut self, device: Device)

Update the device and reset the stylist to process the new size

Source

pub fn stylist_device(&mut self) -> &Device

Source

pub fn resolve_layout_children(&mut self)

Ensure that the layout_children field is populated for all nodes

Source

pub fn resolve_deferred_tasks(&mut self)

Source

pub fn resolve_layout(&mut self)

Walk the nodes now that they’re properly styled and transfer their styles to the taffy style system

TODO: update taffy to use an associated type instead of slab key TODO: update taffy to support traited styles so we don’t even need to rely on taffy for storage

Source

pub fn get_cursor(&self) -> Option<CursorIcon>

Source

pub fn scroll_node_by(&mut self, node_id: usize, x: f64, y: f64)

Source

pub fn scroll_node_by_has_changed( &mut self, node_id: usize, x: f64, y: f64, ) -> bool

Scroll a node by given x and y Will bubble scrolling up to parent node once it can no longer scroll further If we’re already at the root node, bubbles scrolling up to the viewport

Source

pub fn scroll_viewport_by(&mut self, x: f64, y: f64)

Source

pub fn scroll_viewport_by_has_changed(&mut self, x: f64, y: f64) -> bool

Scroll the viewport by the given values

Source

pub fn viewport_scroll(&self) -> Point<f64>

Source

pub fn set_viewport_scroll(&mut self, scroll: Point<f64>)

Source

pub fn find_title_node(&self) -> Option<&Node>

Source§

impl BaseDocument

Source

pub fn print_taffy_tree(&self)

Source

pub fn debug_log_node(&self, node_id: usize)

Source§

impl BaseDocument

Source

pub fn reset_form_owner(&mut self, node_id: usize)

Resets the form owner for a given node by either using an explicit form attribute or finding the nearest ancestor form element

§Arguments
  • node_id - The ID of the node whose form owner needs to be reset

https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#reset-the-form-owner

Source

pub fn submit_form(&self, node_id: usize, submitter_id: usize)

Submits a form with the given form node ID and submitter node ID

§Arguments
  • node_id - The ID of the form node to submit
  • submitter_id - The ID of the node that triggered the submission

https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm

Source§

impl BaseDocument

Source

pub fn flush_styles_to_layout(&mut self, node_id: usize)

Walk the whole tree, converting styles to layout

Source§

impl BaseDocument

Source

pub fn get_element_by_id(&self, id: &str) -> Option<usize>

Find the node with the specified id attribute (if one exists)

Source

pub fn query_selector<'input>( &self, selector: &'input str, ) -> Result<Option<usize>, ParseError<'input>>

Find the first node that matches the selector specified as a string Returns:

  • Err(_) if parsing the selector fails
  • Ok(None) if nothing matches
  • Ok(Some(node_id)) with the first node ID that matches if one is found
Source

pub fn query_selector_raw( &self, selector_list: &SelectorList<SelectorImpl>, ) -> Option<usize>

Find the first node that matches the selector(s) specified in selector_list

Source

pub fn query_selector_all<'input>( &self, selector: &'input str, ) -> Result<SmallVec<[usize; 32]>, ParseError<'input>>

Find all nodes that match the selector specified as a string Returns:

  • Err(_) if parsing the selector fails
  • Ok(SmallVec<usize>) with all matching nodes otherwise
Source

pub fn query_selector_all_raw( &self, selector_list: &SelectorList<SelectorImpl>, ) -> SmallVec<[usize; 32]>

Find all nodes that match the selector(s) specified in selector_list

Source

pub fn try_parse_selector_list<'input>( &self, input: &'input str, ) -> Result<SelectorList<SelectorImpl>, ParseError<'input>>

Source§

impl BaseDocument

Source

pub fn resolve_stylist(&mut self, now: f64)

Source§

impl BaseDocument

Source

pub fn node_chain(&self, node_id: usize) -> Vec<usize>

Collect the nodes into a chain by traversing upwards

Source

pub fn visit<F>(&self, visit: F)
where F: FnMut(usize, &Node),

Source

pub fn non_anon_ancestor_if_anon(&self, node_id: usize) -> usize

If the node is non-anonymous then returns the node’s id Else find’s the first non-anonymous ancester of the node

Source

pub fn iter_children_mut( &mut self, node_id: usize, cb: impl FnMut(usize, &mut BaseDocument), )

Source

pub fn iter_subtree_mut( &mut self, node_id: usize, cb: impl FnMut(usize, &mut BaseDocument), )

Source

pub fn iter_children_and_pseudos_mut( &mut self, node_id: usize, cb: impl FnMut(usize, &mut BaseDocument), )

Source

pub fn next_node( &self, start: &Node, filter: impl FnMut(&Node) -> bool, ) -> Option<usize>

Source

pub fn node_layout_ancestors(&self, node_id: usize) -> Vec<usize>

Source

pub fn maybe_node_layout_ancestors(&self, node_id: Option<usize>) -> Vec<usize>

Source§

impl BaseDocument

Trait Implementations§

Source§

impl AsMut<BaseDocument> for BaseDocument

Source§

fn as_mut(&mut self) -> &mut BaseDocument

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<BaseDocument> for BaseDocument

Source§

fn as_ref(&self) -> &BaseDocument

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl CacheTree for BaseDocument

Source§

fn cache_get( &self, node_id: NodeId, known_dimensions: Size<Option<f32>>, available_space: Size<AvailableSpace>, run_mode: RunMode, ) -> Option<LayoutOutput>

Try to retrieve a cached result from the cache
Source§

fn cache_store( &mut self, node_id: NodeId, known_dimensions: Size<Option<f32>>, available_space: Size<AvailableSpace>, run_mode: RunMode, layout_output: LayoutOutput, )

Store a computed size in the cache
Source§

fn cache_clear(&mut self, node_id: NodeId)

Clear all cache entries for the node
Source§

impl LayoutBlockContainer for BaseDocument

Source§

type BlockContainerStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing the CSS Block container’s styles
Source§

type BlockItemStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing each CSS Block item’s styles
Source§

fn get_block_container_style( &self, node_id: NodeId, ) -> Self::BlockContainerStyle<'_>

Get the container’s styles
Source§

fn get_block_child_style( &self, child_node_id: NodeId, ) -> Self::BlockItemStyle<'_>

Get the child’s styles
Source§

impl LayoutFlexboxContainer for BaseDocument

Source§

type FlexboxContainerStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing the Flexbox container’s styles
Source§

type FlexboxItemStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing each Flexbox item’s styles
Source§

fn get_flexbox_container_style( &self, node_id: NodeId, ) -> Self::FlexboxContainerStyle<'_>

Get the container’s styles
Source§

fn get_flexbox_child_style( &self, child_node_id: NodeId, ) -> Self::FlexboxItemStyle<'_>

Get the child’s styles
Source§

impl LayoutGridContainer for BaseDocument

Source§

type GridContainerStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing the CSS Grid container’s styles
Source§

type GridItemStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing each CSS Grid item’s styles
Source§

fn get_grid_container_style( &self, node_id: NodeId, ) -> Self::GridContainerStyle<'_>

Get the container’s styles
Source§

fn get_grid_child_style(&self, child_node_id: NodeId) -> Self::GridItemStyle<'_>

Get the child’s styles
Source§

impl LayoutPartialTree for BaseDocument

Source§

type CoreContainerStyle<'a> = &'a Style<Atom<AtomStaticSet>> where Self: 'a

The style type representing the core container styles that all containers should have Used when laying out the root node of a tree
Source§

type CustomIdent = Atom<AtomStaticSet>

String type for representing “custom identifiers” (for example, named grid lines or areas) If you are unsure what to use here then consider Arc<str>.
Source§

fn get_core_container_style(&self, node_id: NodeId) -> &Style<Atom>

Get core style
Source§

fn set_unrounded_layout(&mut self, node_id: NodeId, layout: &Layout)

Set the node’s unrounded layout
Source§

fn resolve_calc_value(&self, calc_ptr: *const (), parent_size: f32) -> f32

Resolve calc value
Source§

fn compute_child_layout( &mut self, node_id: NodeId, inputs: LayoutInput, ) -> LayoutOutput

Compute the specified node’s size or full layout given the specified constraints
Source§

impl PrintTree for BaseDocument

Source§

fn get_debug_label(&self, node_id: NodeId) -> &'static str

Get a debug label for the node (typically the type of node: flexbox, grid, text, image, etc)
Source§

fn get_final_layout(&self, node_id: NodeId) -> Layout

Get a reference to the node’s final layout
Source§

impl RoundTree for BaseDocument

Source§

fn get_unrounded_layout(&self, node_id: NodeId) -> Layout

Get the node’s unrounded layout
Source§

fn set_final_layout(&mut self, node_id: NodeId, layout: &Layout)

Get a reference to the node’s final layout
Source§

impl TraversePartialTree for BaseDocument

Source§

type ChildIter<'a> = RefCellChildIter<'a>

Type representing an iterator of the children of a node
Source§

fn child_ids(&self, node_id: NodeId) -> Self::ChildIter<'_>

Get the list of children IDs for the given node
Source§

fn child_count(&self, node_id: NodeId) -> usize

Get the number of children for the given node
Source§

fn get_child_id(&self, node_id: NodeId, index: usize) -> NodeId

Get a specific child of a node, where the index represents the nth child
Source§

impl TraverseTree for BaseDocument

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> MaybeBoxed<Box<T>> for T

Source§

fn maybe_boxed(self) -> Box<T>

Convert
Source§

impl<T> MaybeBoxed<T> for T

Source§

fn maybe_boxed(self) -> T

Convert
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,