diff --git a/components/layout/sequential.rs b/components/layout/sequential.rs index ae236008121..5fc123c30c7 100644 --- a/components/layout/sequential.rs +++ b/components/layout/sequential.rs @@ -18,24 +18,7 @@ use traversal::{AssignBSizesAndStoreOverflow, AssignISizes}; use traversal::{BubbleISizes, BuildDisplayList, ComputeAbsolutePositions, PostorderNodeMutTraversal}; use util::opts; -pub fn traverse_dom_preorder<'ln, N, C>(root: N, - shared: &C::SharedContext) - where N: TNode<'ln>, - C: DomTraversalContext<'ln, N> { - fn doit<'a, 'ln, N, C>(context: &'a C, node: N) - where N: TNode<'ln>, C: DomTraversalContext<'ln, N> { - context.process_preorder(node); - - for kid in node.children() { - doit::(context, kid); - } - - context.process_postorder(node); - } - - let context = C::new(shared, root.opaque()); - doit::(&context, root); -} +pub use style::sequential::traverse_dom_preorder; pub fn resolve_generated_content(root: &mut FlowRef, shared_layout_context: &SharedLayoutContext) { fn doit(flow: &mut Flow, level: u32, traversal: &mut ResolveGeneratedContent) { diff --git a/components/style/lib.rs b/components/style/lib.rs index 5623c5bd8ed..0f0dfca30cf 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -57,6 +57,7 @@ pub mod parallel; pub mod parser; pub mod restyle_hints; pub mod selector_matching; +pub mod sequential; pub mod stylesheets; pub mod traversal; #[macro_use] diff --git a/components/style/sequential.rs b/components/style/sequential.rs new file mode 100644 index 00000000000..b98d6e45029 --- /dev/null +++ b/components/style/sequential.rs @@ -0,0 +1,28 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//! Implements sequential traversal over the DOM tree. + +use dom::TNode; +use traversal::DomTraversalContext; + +pub fn traverse_dom_preorder<'ln, N, C>(root: N, + shared: &C::SharedContext) + where N: TNode<'ln>, + C: DomTraversalContext<'ln, N> { + fn doit<'a, 'ln, N, C>(context: &'a C, node: N) + where N: TNode<'ln>, C: DomTraversalContext<'ln, N> { + context.process_preorder(node); + + for kid in node.children() { + doit::(context, kid); + } + + context.process_postorder(node); + } + + let context = C::new(shared, root.opaque()); + doit::(&context, root); +} +