Bug 1331213: Implement Device::media_type, without supporting overrides for now. r?heycam draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Sun, 15 Jan 2017 23:51:58 +0100
changeset 461274 901f11573e7312490251ee7683a88e03fde7334c
parent 461273 51b11fa96a56fe385fd5dd1dd04d90808d60d49d
child 461275 506db96fb87733282ac26e6cfcda70482e10098c
push id41626
push userbmo:emilio+bugs@crisal.io
push dateMon, 16 Jan 2017 09:45:21 +0000
reviewersheycam
bugs1331213
milestone53.0a1
Bug 1331213: Implement Device::media_type, without supporting overrides for now. r?heycam MozReview-Commit-ID: 9AeHViwoX1t Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
servo/components/style/gecko/media_queries.rs
--- a/servo/components/style/gecko/media_queries.rs
+++ b/servo/components/style/gecko/media_queries.rs
@@ -71,18 +71,27 @@ impl Device {
     pub fn reset(&mut self) {
         // NB: A following stylesheet flush will populate this if appropriate.
         self.viewport_override = None;
         self.default_values = ComputedValues::default_values(unsafe { &*self.pres_context });
     }
 
     /// Returns the current media type of the device.
     pub fn media_type(&self) -> MediaType {
-        // TODO
-        MediaType::Screen
+        unsafe {
+            // FIXME(emilio): Gecko allows emulating random media with
+            // mIsEmulatingMedia / mMediaEmulated . Refactor both sides so that
+            // is supported (probably just making MediaType an Atom).
+            if (*self.pres_context).mMedium == atom!("screen").as_ptr() {
+                MediaType::Screen
+            } else {
+                debug_assert!((*self.pres_context).mMedium == atom!("print").as_ptr());
+                MediaType::Print
+            }
+        }
     }
 
     /// Returns the current viewport size in app units.
     pub fn au_viewport_size(&self) -> Size2D<Au> {
         self.viewport_override.as_ref().map(|v| {
             Size2D::new(Au::from_f32_px(v.size.width),
                         Au::from_f32_px(v.size.height))
         }).unwrap_or_else(|| {