aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/layout_interface.rs
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-06-16 12:28:43 +0100
committerMs2ger <Ms2ger@gmail.com>2016-06-20 19:08:12 +0200
commit9e2e0ff98c7c42b6bfb24f0846dc0c82e36e7d2c (patch)
treeaa32e333a8bc0c11895213251a226d5b818a4541 /components/script/layout_interface.rs
parent2c50318ee7c05ab926e27d225a3409c8da86c991 (diff)
downloadservo-9e2e0ff98c7c42b6bfb24f0846dc0c82e36e7d2c.tar.gz
servo-9e2e0ff98c7c42b6bfb24f0846dc0c82e36e7d2c.zip
Move the remainder of layout_interface into script_layout_interface.
Diffstat (limited to 'components/script/layout_interface.rs')
-rw-r--r--components/script/layout_interface.rs152
1 files changed, 0 insertions, 152 deletions
diff --git a/components/script/layout_interface.rs b/components/script/layout_interface.rs
deleted file mode 100644
index 350c8150109..00000000000
--- a/components/script/layout_interface.rs
+++ /dev/null
@@ -1,152 +0,0 @@
-/* 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/. */
-
-//! The high-level interface from script to layout. Using this abstract
-//! interface helps reduce coupling between these two components, and enables
-//! the DOM to be placed in a separate crate from layout.
-
-use app_units::Au;
-use euclid::point::Point2D;
-use euclid::rect::Rect;
-use gfx_traits::{Epoch, LayerId};
-use ipc_channel::ipc::{IpcReceiver, IpcSender};
-use msg::constellation_msg::{PanicMsg, PipelineId, WindowSizeData};
-use net_traits::image_cache_thread::ImageCacheThread;
-use profile_traits::mem::ReportsChan;
-use script_layout_interface::rpc::LayoutRPC;
-use script_layout_interface::{OpaqueStyleAndLayoutData, TrustedNodeAddress};
-use script_traits::{ConstellationControlMsg, LayoutControlMsg};
-use script_traits::{LayoutMsg as ConstellationMsg, StackingContextScrollState};
-use std::sync::Arc;
-use std::sync::mpsc::{Receiver, Sender};
-use string_cache::Atom;
-use style::context::ReflowGoal;
-use style::selector_impl::PseudoElement;
-use style::servo::Stylesheet;
-use url::Url;
-use util::ipc::OptionalOpaqueIpcSender;
-
-/// Asynchronous messages that script can send to layout.
-pub enum Msg {
- /// Adds the given stylesheet to the document.
- AddStylesheet(Arc<Stylesheet>),
-
- /// Puts a document into quirks mode, causing the quirks mode stylesheet to be loaded.
- SetQuirksMode,
-
- /// Requests a reflow.
- Reflow(ScriptReflow),
-
- /// Get an RPC interface.
- GetRPC(Sender<Box<LayoutRPC + Send>>),
-
- /// Requests that the layout thread render the next frame of all animations.
- TickAnimations,
-
- /// Requests that the layout thread reflow with a newly-loaded Web font.
- ReflowWithNewlyLoadedWebFont,
-
- /// Updates the layout visible rects, affecting the area that display lists will be constructed
- /// for.
- SetVisibleRects(Vec<(LayerId, Rect<Au>)>),
-
- /// Destroys layout data associated with a DOM node.
- ///
- /// TODO(pcwalton): Maybe think about batching to avoid message traffic.
- ReapStyleAndLayoutData(OpaqueStyleAndLayoutData),
-
- /// Requests that the layout thread measure its memory usage. The resulting reports are sent back
- /// via the supplied channel.
- CollectReports(ReportsChan),
-
- /// Requests that the layout thread enter a quiescent state in which no more messages are
- /// accepted except `ExitMsg`. A response message will be sent on the supplied channel when
- /// this happens.
- PrepareToExit(Sender<()>),
-
- /// Requests that the layout thread immediately shut down. There must be no more nodes left after
- /// this, or layout will crash.
- ExitNow,
-
- /// Get the last epoch counter for this layout thread.
- GetCurrentEpoch(IpcSender<Epoch>),
-
- /// Asks the layout thread whether any Web fonts have yet to load (if true, loads are pending;
- /// false otherwise).
- GetWebFontLoadState(IpcSender<bool>),
-
- /// Creates a new layout thread.
- ///
- /// This basically exists to keep the script-layout dependency one-way.
- CreateLayoutThread(NewLayoutThreadInfo),
-
- /// Set the final Url.
- SetFinalUrl(Url),
-
- /// Tells layout about the new scrolling offsets of each scrollable stacking context.
- SetStackingContextScrollStates(Vec<StackingContextScrollState>),
-}
-
-
-/// Any query to perform with this reflow.
-#[derive(PartialEq)]
-pub enum ReflowQueryType {
- NoQuery,
- ContentBoxQuery(TrustedNodeAddress),
- ContentBoxesQuery(TrustedNodeAddress),
- NodeOverflowQuery(TrustedNodeAddress),
- HitTestQuery(Point2D<f32>, bool),
- NodeGeometryQuery(TrustedNodeAddress),
- NodeLayerIdQuery(TrustedNodeAddress),
- NodeScrollGeometryQuery(TrustedNodeAddress),
- ResolvedStyleQuery(TrustedNodeAddress, Option<PseudoElement>, Atom),
- OffsetParentQuery(TrustedNodeAddress),
- MarginStyleQuery(TrustedNodeAddress),
-}
-
-/// Information needed for a reflow.
-pub struct Reflow {
- /// The goal of reflow: either to render to the screen or to flush layout info for script.
- pub goal: ReflowGoal,
- /// A clipping rectangle for the page, an enlarged rectangle containing the viewport.
- pub page_clip_rect: Rect<Au>,
-}
-
-/// Information needed for a script-initiated reflow.
-pub struct ScriptReflow {
- /// General reflow data.
- pub reflow_info: Reflow,
- /// The document node.
- pub document: TrustedNodeAddress,
- /// The document's list of stylesheets.
- pub document_stylesheets: Vec<Arc<Stylesheet>>,
- /// Whether the document's stylesheets have changed since the last script reflow.
- pub stylesheets_changed: bool,
- /// The current window size.
- pub window_size: WindowSizeData,
- /// The channel that we send a notification to.
- pub script_join_chan: Sender<()>,
- /// The type of query if any to perform during this reflow.
- pub query_type: ReflowQueryType,
-}
-
-impl Drop for ScriptReflow {
- fn drop(&mut self) {
- self.script_join_chan.send(()).unwrap();
- }
-}
-
-pub struct NewLayoutThreadInfo {
- pub id: PipelineId,
- pub url: Url,
- pub is_parent: bool,
- pub layout_pair: (Sender<Msg>, Receiver<Msg>),
- pub pipeline_port: IpcReceiver<LayoutControlMsg>,
- pub constellation_chan: IpcSender<ConstellationMsg>,
- pub panic_chan: IpcSender<PanicMsg>,
- pub script_chan: IpcSender<ConstellationControlMsg>,
- pub image_cache_thread: ImageCacheThread,
- pub paint_chan: OptionalOpaqueIpcSender,
- pub content_process_shutdown_chan: IpcSender<()>,
-}