Use noop loader whenever loader is not provided for @import. r?emilio draft
authorXidorn Quan <me@upsuper.org>
Fri, 31 Mar 2017 15:10:09 +1100
changeset 554629 5ca5a0ad0a5e3d774d36fe774a38f8cb8bfff8f9
parent 554628 4afc2eb15c52808fcaaf3f0ff79a0ea4c19c12bd
child 554630 da02743c82518ff9aaa96b88324e633c4b96c931
push id52016
push userxquan@mozilla.com
push dateSat, 01 Apr 2017 07:30:38 +0000
reviewersemilio
milestone55.0a1
Use noop loader whenever loader is not provided for @import. r?emilio I don't really know what I should do here. It seems that before the changes here, stylesheet.base_url.is_invalid() is always true for geckolib? After these changes, base_url is replaced by url_data, which is now valid url info for geckolib, so this "expect" panics. MozReview-Commit-ID: 55GRlv3ybXU
servo/components/style/stylesheets.rs
--- a/servo/components/style/stylesheets.rs
+++ b/servo/components/style/stylesheets.rs
@@ -865,21 +865,17 @@ impl<'a> AtRuleParser for TopLevelRulePa
                 if self.state.get() <= State::Imports {
                     self.state.set(State::Imports);
                     let url_string = input.expect_url_or_string()?;
                     let specified_url = SpecifiedUrl::parse_from_string(url_string, &self.context)?;
 
                     let media = parse_media_query_list(input);
 
                     let noop_loader = NoOpLoader;
-                    let loader = if !specified_url.is_invalid() {
-                        self.loader.expect("Expected a stylesheet loader for @import")
-                    } else {
-                        &noop_loader
-                    };
+                    let loader = self.loader.unwrap_or(&noop_loader);
 
                     let mut specified_url = Some(specified_url);
                     let arc = loader.request_stylesheet(media, &mut |media| {
                         ImportRule {
                             url: specified_url.take().unwrap(),
                             stylesheet: Arc::new(Stylesheet {
                                 rules: CssRules::new(Vec::new(), self.shared_lock),
                                 media: Arc::new(self.shared_lock.wrap(media)),