Skip to content

Commit

Permalink
Stop using associated types for the concrete ElementSnapshot implemen…
Browse files Browse the repository at this point in the history
…tation.

MozReview-Commit-ID: LS23s2RbMBg
  • Loading branch information
bholley committed Nov 7, 2016
1 parent 9588065 commit b69fdad
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 29 deletions.
4 changes: 2 additions & 2 deletions components/script/dom/bindings/trace.rs
Expand Up @@ -94,7 +94,7 @@ use style::attr::{AttrIdentifier, AttrValue, LengthOrPercentageOrAuto};
use style::element_state::*;
use style::media_queries::MediaQueryList;
use style::properties::PropertyDeclarationBlock;
use style::selector_impl::{ElementSnapshot, PseudoElement};
use style::selector_impl::{PseudoElement, Snapshot};
use style::values::specified::Length;
use time::Duration;
use url::Origin as UrlOrigin;
Expand Down Expand Up @@ -346,7 +346,7 @@ no_jsmanaged_fields!(DOMString);
no_jsmanaged_fields!(Mime);
no_jsmanaged_fields!(AttrIdentifier);
no_jsmanaged_fields!(AttrValue);
no_jsmanaged_fields!(ElementSnapshot);
no_jsmanaged_fields!(Snapshot);
no_jsmanaged_fields!(HttpsState);
no_jsmanaged_fields!(Request);
no_jsmanaged_fields!(SharedRt);
Expand Down
12 changes: 6 additions & 6 deletions components/script/dom/document.rs
Expand Up @@ -125,7 +125,7 @@ use std::sync::Arc;
use std::time::{Duration, Instant};
use style::attr::AttrValue;
use style::context::ReflowGoal;
use style::selector_impl::ElementSnapshot;
use style::selector_impl::Snapshot;
use style::str::{split_html_space_chars, str_join};
use style::stylesheets::Stylesheet;
use time;
Expand Down Expand Up @@ -236,7 +236,7 @@ pub struct Document {
appropriate_template_contents_owner_document: MutNullableHeap<JS<Document>>,
/// For each element that has had a state or attribute change since the last restyle,
/// track the original condition of the element.
modified_elements: DOMRefCell<HashMap<JS<Element>, ElementSnapshot>>,
modified_elements: DOMRefCell<HashMap<JS<Element>, Snapshot>>,
/// This flag will be true if layout suppressed a reflow attempt that was
/// needed in order for the page to be painted.
needs_paint: Cell<bool>,
Expand Down Expand Up @@ -1708,7 +1708,7 @@ pub enum DocumentSource {
#[allow(unsafe_code)]
pub trait LayoutDocumentHelpers {
unsafe fn is_html_document_for_layout(&self) -> bool;
unsafe fn drain_modified_elements(&self) -> Vec<(LayoutJS<Element>, ElementSnapshot)>;
unsafe fn drain_modified_elements(&self) -> Vec<(LayoutJS<Element>, Snapshot)>;
unsafe fn needs_paint_from_layout(&self);
unsafe fn will_paint(&self);
}
Expand All @@ -1722,7 +1722,7 @@ impl LayoutDocumentHelpers for LayoutJS<Document> {

#[inline]
#[allow(unrooted_must_root)]
unsafe fn drain_modified_elements(&self) -> Vec<(LayoutJS<Element>, ElementSnapshot)> {
unsafe fn drain_modified_elements(&self) -> Vec<(LayoutJS<Element>, Snapshot)> {
let mut elements = (*self.unsafe_get()).modified_elements.borrow_mut_for_layout();
let result = elements.drain().map(|(k, v)| (k.to_layout(), v)).collect();
result
Expand Down Expand Up @@ -1970,7 +1970,7 @@ impl Document {
let mut map = self.modified_elements.borrow_mut();
let snapshot = map.entry(JS::from_ref(el))
.or_insert_with(|| {
ElementSnapshot::new(el.html_element_in_html_document())
Snapshot::new(el.html_element_in_html_document())
});
if snapshot.state.is_none() {
snapshot.state = Some(el.state());
Expand All @@ -1981,7 +1981,7 @@ impl Document {
let mut map = self.modified_elements.borrow_mut();
let mut snapshot = map.entry(JS::from_ref(el))
.or_insert_with(|| {
ElementSnapshot::new(el.html_element_in_html_document())
Snapshot::new(el.html_element_in_html_document())
});
if snapshot.attrs.is_none() {
let attrs = el.attrs()
Expand Down
4 changes: 2 additions & 2 deletions components/script/layout_wrapper.rs
Expand Up @@ -66,7 +66,7 @@ use style::dom::{LayoutIterator, NodeInfo, OpaqueNode, PresentationalHintsSynthe
use style::dom::{TRestyleDamage, UnsafeNode};
use style::element_state::*;
use style::properties::{ComputedValues, PropertyDeclarationBlock};
use style::selector_impl::{ElementSnapshot, NonTSPseudoClass, PseudoElement, ServoSelectorImpl};
use style::selector_impl::{NonTSPseudoClass, PseudoElement, ServoSelectorImpl, Snapshot};
use style::selector_matching::ApplicableDeclarationBlock;
use style::sink::Push;
use style::str::is_whitespace;
Expand Down Expand Up @@ -382,7 +382,7 @@ impl<'ld> TDocument for ServoLayoutDocument<'ld> {
self.as_node().children().find(ServoLayoutNode::is_element)
}

fn drain_modified_elements(&self) -> Vec<(ServoLayoutElement<'ld>, ElementSnapshot)> {
fn drain_modified_elements(&self) -> Vec<(ServoLayoutElement<'ld>, Snapshot)> {
let elements = unsafe { self.document.drain_modified_elements() };
elements.into_iter().map(|(el, snapshot)| (ServoLayoutElement::from_layout_js(el), snapshot)).collect()
}
Expand Down
5 changes: 2 additions & 3 deletions components/style/dom.rs
Expand Up @@ -14,7 +14,7 @@ use parking_lot::RwLock;
use properties::{ComputedValues, PropertyDeclarationBlock};
use properties::longhands::display::computed_value as display;
use restyle_hints::{RESTYLE_DESCENDANTS, RESTYLE_LATER_SIBLINGS, RESTYLE_SELF, RestyleHint};
use selector_impl::{ElementExt, PseudoElement};
use selector_impl::{ElementExt, PseudoElement, Snapshot};
use selector_matching::ApplicableDeclarationBlock;
use sink::Push;
use std::fmt::Debug;
Expand Down Expand Up @@ -159,8 +159,7 @@ pub trait TDocument : Sized + Copy + Clone {

fn root_node(&self) -> Option<Self::ConcreteNode>;

fn drain_modified_elements(&self) -> Vec<(Self::ConcreteElement,
<Self::ConcreteElement as ElementExt>::Snapshot)>;
fn drain_modified_elements(&self) -> Vec<(Self::ConcreteElement, Snapshot)>;

fn needs_paint_from_layout(&self);
fn will_paint(&self);
Expand Down
2 changes: 0 additions & 2 deletions components/style/gecko/wrapper.rs
Expand Up @@ -691,8 +691,6 @@ impl<'le> ::selectors::MatchAttr for GeckoElement<'le> {
}

impl<'le> ElementExt for GeckoElement<'le> {
type Snapshot = GeckoElementSnapshot;

#[inline]
fn is_link(&self) -> bool {
self.match_non_ts_pseudo_class(NonTSPseudoClass::AnyLink)
Expand Down
8 changes: 4 additions & 4 deletions components/style/restyle_hints.rs
Expand Up @@ -8,7 +8,7 @@ use Atom;
use element_state::*;
#[cfg(feature = "servo")]
use heapsize::HeapSizeOf;
use selector_impl::{AttrValue, ElementExt, NonTSPseudoClass, TheSelectorImpl};
use selector_impl::{AttrValue, ElementExt, NonTSPseudoClass, Snapshot, TheSelectorImpl};
use selectors::{Element, MatchAttr};
use selectors::matching::{MatchingReason, StyleRelations};
use selectors::matching::matches_complex_selector;
Expand Down Expand Up @@ -85,7 +85,7 @@ struct ElementWrapper<'a, E>
where E: ElementExt
{
element: E,
snapshot: Option<&'a E::Snapshot>,
snapshot: Option<&'a Snapshot>,
}

impl<'a, E> ElementWrapper<'a, E>
Expand All @@ -95,7 +95,7 @@ impl<'a, E> ElementWrapper<'a, E>
ElementWrapper { element: el, snapshot: None }
}

pub fn new_with_snapshot(el: E, snapshot: &'a E::Snapshot) -> ElementWrapper<'a, E> {
pub fn new_with_snapshot(el: E, snapshot: &'a Snapshot) -> ElementWrapper<'a, E> {
ElementWrapper { element: el, snapshot: Some(snapshot) }
}
}
Expand Down Expand Up @@ -424,7 +424,7 @@ impl DependencySet {
}

pub fn compute_hint<E>(&self, el: &E,
snapshot: &E::Snapshot,
snapshot: &Snapshot,
current_state: ElementState)
-> RestyleHint
where E: ElementExt + Clone
Expand Down
15 changes: 9 additions & 6 deletions components/style/selector_impl.rs
Expand Up @@ -5,7 +5,6 @@
//! The pseudo-classes and pseudo-elements supported by the style system.

use matching::{common_style_affecting_attributes, CommonStyleAffectingAttributeMode};
use restyle_hints;
use selectors::Element;
use selectors::parser::{AttrSelector, SelectorImpl};

Expand All @@ -14,14 +13,20 @@ pub type AttrValue = <TheSelectorImpl as SelectorImpl>::AttrValue;
#[cfg(feature = "servo")]
pub use servo_selector_impl::*;

#[cfg(feature = "gecko")]
pub use gecko::selector_impl::*;

#[cfg(feature = "servo")]
pub use servo_selector_impl::{ServoSelectorImpl as TheSelectorImpl, ServoElementSnapshot as ElementSnapshot};
pub use servo_selector_impl::ServoSelectorImpl as TheSelectorImpl;

#[cfg(feature = "gecko")]
pub use gecko::selector_impl::*;
pub use gecko::selector_impl::GeckoSelectorImpl as TheSelectorImpl;

#[cfg(feature = "servo")]
pub use servo_selector_impl::ServoElementSnapshot as Snapshot;

#[cfg(feature = "gecko")]
pub use gecko::selector_impl::{GeckoSelectorImpl as TheSelectorImpl};
pub use gecko::snapshot::GeckoElementSnapshot as Snapshot;

/// This function determines if a pseudo-element is eagerly cascaded or not.
///
Expand Down Expand Up @@ -71,8 +76,6 @@ impl PseudoElementCascadeType {
}

pub trait ElementExt: Element<Impl=TheSelectorImpl> {
type Snapshot: restyle_hints::ElementSnapshot + 'static;

fn is_link(&self) -> bool;
}

Expand Down
4 changes: 2 additions & 2 deletions components/style/selector_matching.rs
Expand Up @@ -16,7 +16,7 @@ use properties::{PropertyDeclaration, PropertyDeclarationBlock};
use quickersort::sort_by;
use restyle_hints::{RestyleHint, DependencySet};
use rule_tree::{RuleTree, StrongRuleNode, StyleSource};
use selector_impl::{ElementExt, TheSelectorImpl, PseudoElement};
use selector_impl::{ElementExt, TheSelectorImpl, PseudoElement, Snapshot};
use selectors::Element;
use selectors::bloom::BloomFilter;
use selectors::matching::{AFFECTED_BY_STYLE_ATTRIBUTE, AFFECTED_BY_PRESENTATIONAL_HINTS};
Expand Down Expand Up @@ -611,7 +611,7 @@ impl Stylist {
}

pub fn compute_restyle_hint<E>(&self, element: &E,
snapshot: &E::Snapshot,
snapshot: &Snapshot,
// NB: We need to pass current_state as an argument because
// selectors::Element doesn't provide access to ElementState
// directly, and computing it from the ElementState would be
Expand Down
2 changes: 0 additions & 2 deletions components/style/servo_selector_impl.rs
Expand Up @@ -384,8 +384,6 @@ impl MatchAttrGeneric for ServoElementSnapshot {
}

impl<E: Element<Impl=TheSelectorImpl>> ElementExt for E {
type Snapshot = ServoElementSnapshot;

fn is_link(&self) -> bool {
self.match_non_ts_pseudo_class(NonTSPseudoClass::AnyLink)
}
Expand Down

0 comments on commit b69fdad

Please sign in to comment.