mirror of
https://github.com/servo/servo.git
synced 2025-08-02 04:00:32 +01:00
Reduce the number of places where we need to enumerate ValidationData members.
MozReview-Commit-ID: 9m2ebknBFSE
This commit is contained in:
parent
6d8455a916
commit
f40c45fe1a
2 changed files with 7 additions and 25 deletions
|
@ -463,7 +463,7 @@ impl<E: TElement> ThreadLocalStyleContext<E> {
|
|||
self.current_element_info = Some(CurrentElementInfo {
|
||||
element: element.as_node().opaque(),
|
||||
is_initial_style: !data.has_styles(),
|
||||
validation_data: ValidationData::new(),
|
||||
validation_data: ValidationData::default(),
|
||||
possibly_expired_animations: Vec::new(),
|
||||
});
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ use properties::ComputedValues;
|
|||
use selectors::bloom::BloomFilter;
|
||||
use selectors::matching::{ElementSelectorFlags, StyleRelations};
|
||||
use smallvec::SmallVec;
|
||||
use std::mem;
|
||||
use std::ops::Deref;
|
||||
use stylist::{ApplicableDeclarationBlock, Stylist};
|
||||
|
||||
|
@ -36,7 +37,7 @@ pub enum StyleSharingBehavior {
|
|||
|
||||
/// Some data we want to avoid recomputing all the time while trying to share
|
||||
/// style.
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Default)]
|
||||
pub struct ValidationData {
|
||||
/// The class list of this element.
|
||||
///
|
||||
|
@ -53,23 +54,9 @@ pub struct ValidationData {
|
|||
}
|
||||
|
||||
impl ValidationData {
|
||||
/// Trivially construct an empty `ValidationData` with nothing on
|
||||
/// it.
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
class_list: None,
|
||||
pres_hints: None,
|
||||
revalidation_match_results: None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Move the cached data to a new instance, and return it.
|
||||
pub fn take(&mut self) -> Self {
|
||||
Self {
|
||||
class_list: self.class_list.take(),
|
||||
pres_hints: self.pres_hints.take(),
|
||||
revalidation_match_results: self.revalidation_match_results.take(),
|
||||
}
|
||||
mem::replace(self, Self::default())
|
||||
}
|
||||
|
||||
/// Get or compute the list of presentational attributes associated with
|
||||
|
@ -189,7 +176,7 @@ impl<E: TElement> StyleSharingTarget<E> {
|
|||
pub fn new(element: E) -> Self {
|
||||
Self {
|
||||
element: element,
|
||||
validation_data: ValidationData::new(),
|
||||
validation_data: ValidationData::default(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -242,8 +229,6 @@ impl<E: TElement> StyleSharingTarget<E> {
|
|||
data: &mut ElementData)
|
||||
-> StyleSharingResult
|
||||
{
|
||||
use std::mem;
|
||||
|
||||
let shared_context = &context.shared;
|
||||
let selector_flags_map = &mut context.thread_local.selector_flags;
|
||||
let bloom_filter = context.thread_local.bloom_filter.filter();
|
||||
|
@ -256,12 +241,9 @@ impl<E: TElement> StyleSharingTarget<E> {
|
|||
&mut self,
|
||||
data);
|
||||
|
||||
mem::swap(&mut self.validation_data,
|
||||
&mut context
|
||||
.thread_local
|
||||
.current_element_info.as_mut().unwrap()
|
||||
.validation_data);
|
||||
|
||||
context.thread_local.current_element_info.as_mut().unwrap().validation_data =
|
||||
self.validation_data.take();
|
||||
result
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue