Propagate quirks mode all the way to ParserContext

The quirks mode is still not properly propagated in geckolib.
This commit is contained in:
Anthony Ramine 2017-04-23 11:07:48 +02:00
parent 10fb8e61c7
commit f68e2fded9
39 changed files with 225 additions and 100 deletions

View file

@ -5,6 +5,7 @@
//! Gecko's media-query device and expression representation.
use app_units::Au;
use context::QuirksMode;
use cssparser::{CssStringWriter, Parser, Token};
use euclid::Size2D;
use font_metrics::get_metrics_provider_for_product;
@ -521,7 +522,7 @@ impl Expression {
}
/// Returns whether this media query evaluates to true for the given device.
pub fn matches(&self, device: &Device) -> bool {
pub fn matches(&self, device: &Device, quirks_mode: QuirksMode) -> bool {
let mut css_value = nsCSSValue::null();
unsafe {
(self.feature.mGetter.unwrap())(device.pres_context,
@ -534,12 +535,13 @@ impl Expression {
None => return false,
};
self.evaluate_against(device, &value)
self.evaluate_against(device, &value, quirks_mode)
}
fn evaluate_against(&self,
device: &Device,
actual_value: &MediaExpressionValue)
actual_value: &MediaExpressionValue,
quirks_mode: QuirksMode)
-> bool {
use self::MediaExpressionValue::*;
use std::cmp::Ordering;
@ -564,6 +566,8 @@ impl Expression {
style: default_values.clone(),
font_metrics_provider: &provider,
in_media_query: true,
// TODO: pass the correct value here.
quirks_mode: quirks_mode,
};
let required_value = match self.value {