Bug 1331213: Implement the resolution override. r?heycam
MozReview-Commit-ID: LFGam2hDoh7
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
--- a/servo/components/style/gecko/media_queries.rs
+++ b/servo/components/style/gecko/media_queries.rs
@@ -527,21 +527,26 @@ impl Expression {
}
(&Integer(one), &Integer(ref other)) => one.cmp(other),
(&BoolInteger(one), &BoolInteger(ref other)) => one.cmp(other),
(&Float(one), &Float(ref other)) => one.partial_cmp(other).unwrap(),
(&IntRatio(one_num, one_den), &IntRatio(other_num, other_den)) => {
(one_num * other_den).partial_cmp(&(other_num * one_den)).unwrap()
}
(&Resolution(ref one), &Resolution(ref other)) => {
- // FIXME(emilio): The pres context may override the DPPX of the
- // `other` resolution, we need to look at that here, but I'm
- // skipping that for now (we should check if bindgen can
- // generate nsPresContext correctly now).
- one.to_dpi().partial_cmp(&other.to_dpi()).unwrap()
+ let actual_dpi = unsafe {
+ if (*device.pres_context).mOverrideDPPX > 0.0 {
+ self::Resolution::Dppx((*device.pres_context).mOverrideDPPX)
+ .to_dpi()
+ } else {
+ other.to_dpi()
+ }
+ };
+
+ one.to_dpi().partial_cmp(&actual_dpi).unwrap()
}
(&Ident(ref one), &Ident(ref other)) => {
debug_assert!(self.feature.mRangeType != nsMediaFeature_RangeType::eMinMaxAllowed);
return one == other;
}
(&Enumerated(..), &Enumerated(..)) => {
// TODO(emilio)
unimplemented!();