aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/selector_matching.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/style/selector_matching.rs')
-rw-r--r--components/style/selector_matching.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/components/style/selector_matching.rs b/components/style/selector_matching.rs
index 211ae3dbe56..a9c0839f5e8 100644
--- a/components/style/selector_matching.rs
+++ b/components/style/selector_matching.rs
@@ -17,6 +17,7 @@ use media_queries::Device;
use node::TElementAttributes;
use properties::{PropertyDeclaration, PropertyDeclarationBlock};
use stylesheets::{Stylesheet, CSSRuleIteratorExt, Origin};
+use viewport::{ViewportConstraints, ViewportRuleCascade};
pub type DeclarationBlock = GenericDeclarationBlock<Vec<PropertyDeclaration>>;
@@ -69,6 +70,14 @@ impl Stylist {
stylist
}
+ pub fn constrain_viewport(&self) -> Option<ViewportConstraints> {
+ let cascaded_rule = self.stylesheets.iter()
+ .flat_map(|s| s.effective_rules(&self.device).viewport())
+ .cascade();
+
+ ViewportConstraints::maybe_new(self.device.viewport_size, &cascaded_rule)
+ }
+
pub fn update(&mut self) -> bool {
if self.is_dirty {
self.element_map = PerPseudoElementSelectorMap::new();