From 56941d61a78f0978480750698d0ee793da48a698 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 4 Jan 2017 13:41:47 -0500 Subject: [PATCH] Bug 1298588 part 5. Store a ComputedValues on SharedStyleContext. r=bholley --- components/layout_thread/lib.rs | 6 ++++++ components/style/context.rs | 5 +++++ ports/geckolib/glue.rs | 1 + 3 files changed, 12 insertions(+) diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index 78a1295c1b5..4d25350835b 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -118,6 +118,7 @@ use style::error_reporting::{ParseErrorReporter, StdoutErrorReporter}; use style::logical_geometry::LogicalPoint; use style::media_queries::{Device, MediaType}; use style::parser::ParserContextExtraData; +use style::properties::ComputedValues; use style::servo::restyle_damage::{REFLOW, REFLOW_OUT_OF_FLOW, REPAINT, REPOSITION, STORE_OVERFLOW}; use style::stylesheets::{Origin, Stylesheet, UserAgentStylesheets}; use style::stylist::Stylist; @@ -527,6 +528,11 @@ impl LayoutThread { local_context_creation_data: Mutex::new(thread_local_style_context_creation_data), timer: self.timer.clone(), quirks_mode: self.quirks_mode.unwrap(), + // FIXME(bz): This isn't really right, but it's no more wrong + // than what we used to do. See + // https://github.com/servo/servo/issues/14773 for fixing it + // properly. + default_computed_values: Arc::new(ComputedValues::initial_values().clone()), }, image_cache_thread: Mutex::new(self.image_cache_thread.clone()), image_cache_sender: Mutex::new(self.image_cache_sender.clone()), diff --git a/components/style/context.rs b/components/style/context.rs index 57a256d4911..ab5899e142f 100644 --- a/components/style/context.rs +++ b/components/style/context.rs @@ -13,6 +13,7 @@ use error_reporting::ParseErrorReporter; use euclid::Size2D; use matching::StyleSharingCandidateCache; use parking_lot::RwLock; +use properties::ComputedValues; use std::collections::HashMap; use std::sync::{Arc, Mutex}; use std::sync::mpsc::Sender; @@ -82,6 +83,10 @@ pub struct SharedStyleContext { /// The QuirksMode state which the document needs to be rendered with pub quirks_mode: QuirksMode, + + /// The default computed values to use for elements with no rules + /// applying to them. + pub default_computed_values: Arc, } /// A thread-local style context. diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 9758c696797..5e5b1316a9b 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -112,6 +112,7 @@ fn create_shared_context(per_doc_data: &PerDocumentStyleDataImpl) -> SharedStyle timer: Timer::new(), // FIXME Find the real QuirksMode information for this document quirks_mode: QuirksMode::NoQuirks, + default_computed_values: per_doc_data.default_computed_values.clone(), } }