Change device and rule_set references to accessors

This commit is contained in:
heyzoos 2017-05-18 22:18:16 -05:00
parent 0ad0641872
commit 4196156bb9
7 changed files with 37 additions and 22 deletions

View file

@ -476,7 +476,7 @@ fn compute_style_for_animation_step(context: &SharedStyleContext,
};
let computed =
properties::apply_declarations(&context.stylist.device,
properties::apply_declarations(context.stylist.device(),
/* is_root = */ false,
iter,
previous_style,

View file

@ -150,7 +150,7 @@ pub struct SharedStyleContext<'a> {
impl<'a> SharedStyleContext<'a> {
/// Return a suitable viewport size in order to be used for viewport units.
pub fn viewport_size(&self) -> Size2D<Au> {
self.stylist.device.au_viewport_size()
self.stylist.device().au_viewport_size()
}
}

View file

@ -95,7 +95,7 @@ impl PerDocumentStyleDataImpl {
///
/// Implies also a stylesheet flush.
pub fn reset_device(&mut self, guard: &SharedRwLockReadGuard) {
Arc::get_mut(&mut self.stylist.device).unwrap().reset();
Arc::get_mut(self.stylist.device_mut()).unwrap().reset();
self.stylesheets.force_dirty();
self.flush_stylesheets(guard);
}
@ -123,7 +123,7 @@ impl PerDocumentStyleDataImpl {
/// Get the default computed values for this document.
pub fn default_computed_values(&self) -> &Arc<ComputedValues> {
self.stylist.device.default_computed_values_arc()
self.stylist.device().default_computed_values_arc()
}
/// Clear the stylist. This will be a no-op if the stylist is

View file

@ -476,7 +476,7 @@ trait PrivateMatchMethods: TElement {
// Invoke the cascade algorithm.
let values =
Arc::new(cascade(&shared_context.stylist.device,
Arc::new(cascade(shared_context.stylist.device(),
rule_node,
&shared_context.guards,
style_to_inherit_from,
@ -603,7 +603,7 @@ trait PrivateMatchMethods: TElement {
-> Option<Arc<ComputedValues>> {
let rule_node = &primary_style.rules;
let without_transition_rules =
context.shared.stylist.rule_tree.remove_transition_rule_if_applicable(rule_node);
context.shared.stylist.rule_tree().remove_transition_rule_if_applicable(rule_node);
if without_transition_rules == *rule_node {
// We don't have transition rule in this case, so return None to let the caller
// use the original ComputedValues.
@ -955,7 +955,7 @@ pub trait MatchMethods : TElement {
// Handle animations here.
if let Some(animation_rule) = animation_rules.0 {
let animation_rule_node =
context.shared.stylist.rule_tree
context.shared.stylist.rule_tree()
.update_rule_at_level(CascadeLevel::Animations,
Some(&animation_rule),
&mut rules,
@ -967,7 +967,7 @@ pub trait MatchMethods : TElement {
if let Some(animation_rule) = animation_rules.1 {
let animation_rule_node =
context.shared.stylist.rule_tree
context.shared.stylist.rule_tree()
.update_rule_at_level(CascadeLevel::Transitions,
Some(&animation_rule),
&mut rules,
@ -1011,7 +1011,7 @@ pub trait MatchMethods : TElement {
*relations = matching_context.relations;
let primary_rule_node =
compute_rule_node::<Self>(&stylist.rule_tree,
compute_rule_node::<Self>(stylist.rule_tree(),
&mut applicable_declarations,
&context.shared.guards);
@ -1044,7 +1044,7 @@ pub trait MatchMethods : TElement {
// at us later in the closure.
let stylist = &context.shared.stylist;
let guards = &context.shared.guards;
let rule_tree = &stylist.rule_tree;
let rule_tree = stylist.rule_tree();
let bloom_filter = context.thread_local.bloom_filter.filter();
let mut matching_context =
@ -1172,7 +1172,7 @@ pub trait MatchMethods : TElement {
let mut replace_rule_node = |level: CascadeLevel,
pdb: Option<&Arc<Locked<PropertyDeclarationBlock>>>,
path: &mut StrongRuleNode| {
let new_node = context.shared.stylist.rule_tree
let new_node = context.shared.stylist.rule_tree()
.update_rule_at_level(level, pdb, path, &context.shared.guards);
if let Some(n) = new_node {
*path = n;
@ -1430,7 +1430,7 @@ pub trait MatchMethods : TElement {
let relevant_style = pseudo_style.unwrap_or(primary_style);
let rule_node = &relevant_style.rules;
let without_animation_rules =
shared_context.stylist.rule_tree.remove_animation_rules(rule_node);
shared_context.stylist.rule_tree().remove_animation_rules(rule_node);
if without_animation_rules == *rule_node {
// Note that unwrapping here is fine, because the style is
// only incomplete during the styling process.

View file

@ -88,7 +88,7 @@ pub struct Stylist {
///
/// In both cases, the device is actually _owned_ by the Stylist, and it's
/// only an `Arc` so we can implement `add_stylesheet` more idiomatically.
pub device: Arc<Device>,
device: Arc<Device>,
/// Viewport constraints based on the current device.
viewport_constraints: Option<ViewportConstraints>,
@ -110,7 +110,7 @@ pub struct Stylist {
/// The rule tree, that stores the results of selector matching.
///
/// FIXME(emilio): Not `pub`!
pub rule_tree: RuleTree,
rule_tree: RuleTree,
/// The selector maps corresponding to a given pseudo-element
/// (depending on the implementation)
@ -1065,6 +1065,21 @@ impl Stylist {
CascadeFlags::empty(),
self.quirks_mode))
}
/// Accessor for a shared reference to the device.
pub fn device(&self) -> &Arc<Device> {
&self.device
}
/// Accessor for a mutable reference to the device.
pub fn device_mut(&mut self) -> &mut Arc<Device> {
&mut self.device
}
/// Accessor for a shared reference to the rule tree.
pub fn rule_tree(&self) -> &RuleTree {
&self.rule_tree
}
}
impl Drop for Stylist {