Bug 1325878: Pass the MediaList down to Servo, making <style media> work. r=xidorn

MozReview-Commit-ID: BUCSQJs2CNI
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
This commit is contained in:
Emilio Cobos Álvarez 2017-04-11 22:13:16 +08:00
parent 482740bb11
commit ac7bc414d9
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
14 changed files with 63 additions and 43 deletions

View file

@ -12,6 +12,7 @@ use media_queries::MediaList;
use self::encoding::{EncodingRef, DecoderTrap};
use shared_lock::SharedRwLock;
use std::str;
use std::sync::Arc;
use stylesheets::{Stylesheet, StylesheetLoader, Origin, UrlExtraData};
struct RustEncoding;
@ -62,7 +63,7 @@ impl Stylesheet {
Stylesheet::from_str(&string,
url_data,
origin,
media,
Arc::new(shared_lock.wrap(media)),
shared_lock,
stylesheet_loader,
error_reporter)

View file

@ -35,8 +35,9 @@ impl ToCss for MediaList {
}
}
impl Default for MediaList {
fn default() -> MediaList {
impl MediaList {
/// Create an empty MediaList.
pub fn empty() -> Self {
MediaList { media_queries: vec![] }
}
}
@ -251,7 +252,7 @@ impl MediaQuery {
/// https://drafts.csswg.org/mediaqueries/#error-handling
pub fn parse_media_query_list(context: &ParserContext, input: &mut Parser) -> MediaList {
if input.is_exhausted() {
return Default::default()
return MediaList::empty()
}
let mut media_queries = vec![];

View file

@ -723,7 +723,7 @@ impl Stylesheet {
pub fn from_str(css: &str,
url_data: UrlExtraData,
origin: Origin,
media: MediaList,
media: Arc<Locked<MediaList>>,
shared_lock: SharedRwLock,
stylesheet_loader: Option<&StylesheetLoader>,
error_reporter: &ParseErrorReporter) -> Stylesheet {
@ -737,7 +737,7 @@ impl Stylesheet {
url_data: url_data,
namespaces: RwLock::new(namespaces),
rules: CssRules::new(rules, &shared_lock),
media: Arc::new(shared_lock.wrap(media)),
media: media,
shared_lock: shared_lock,
dirty_on_viewport_size_change: AtomicBool::new(dirty_on_viewport_size_change),
disabled: AtomicBool::new(false),