Bug 1461858 part 2 - Make from_image_request infallible. r?emilio draft
authorXidorn Quan <me@upsuper.org>
Wed, 16 May 2018 13:39:58 +1000
changeset 795572 f7792299454862a1329fcc01be8a434bd7c3cab6
parent 795571 3a2abb22875a9d5f9c6259713c36815453248bb2
child 795573 7cf7f53c2a327a34cf4cf337cdaf03ce6a72f36d
push id110018
push userxquan@mozilla.com
push dateWed, 16 May 2018 05:40:41 +0000
reviewersemilio
bugs1461858
milestone62.0a1
Bug 1461858 part 2 - Make from_image_request infallible. r?emilio All callsites already assert, so moving the assertion into the method should be fine. It is not expected to handle a null image value anyway. MozReview-Commit-ID: J8CA8m22eSv
servo/components/style/gecko/url.rs
servo/components/style/properties/gecko.mako.rs
--- a/servo/components/style/gecko/url.rs
+++ b/servo/components/style/gecko/url.rs
@@ -312,18 +312,15 @@ impl ComputedImageUrl {
     /// Convert from URLValueData to SpecifiedUrl.
     pub unsafe fn from_url_value_data(url: &URLValueData) -> Self {
         ComputedImageUrl(
             SpecifiedImageUrl::from_css_url(CssUrl::from_url_value_data(url))
         )
     }
 
     /// Convert from nsStyleImageReques to ComputedImageUrl.
-    pub unsafe fn from_image_request(image_request: &nsStyleImageRequest) -> Result<Self, ()> {
-        if image_request.mImageValue.mRawPtr.is_null() {
-            return Err(());
-        }
-
-        let image_value = image_request.mImageValue.mRawPtr.as_ref().unwrap();
+    pub unsafe fn from_image_request(image_request: &nsStyleImageRequest) -> Self {
+        let image_value = image_request.mImageValue.mRawPtr
+            .as_ref().expect("mImageValue is null");
         let url_value_data = &image_value._base;
-        Ok(Self::from_url_value_data(url_value_data))
+        Self::from_url_value_data(url_value_data)
     }
 }
--- a/servo/components/style/properties/gecko.mako.rs
+++ b/servo/components/style/properties/gecko.mako.rs
@@ -4140,19 +4140,17 @@ fn static_assert() {
         use values::computed::url::ComputedImageUrl;
 
         if self.gecko.mListStyleImage.mRawPtr.is_null() {
             return UrlOrNone::None;
         }
 
         unsafe {
             let ref gecko_image_request = *self.gecko.mListStyleImage.mRawPtr;
-            UrlOrNone::Url(ComputedImageUrl::from_image_request(
-                gecko_image_request
-            ).expect("mListStyleImage could not convert to ComputedImageUrl"))
+            UrlOrNone::Url(ComputedImageUrl::from_image_request(gecko_image_request))
         }
     }
 
     pub fn set_list_style_type(&mut self, v: longhands::list_style_type::computed_value::T, device: &Device) {
         use gecko_bindings::bindings::Gecko_SetCounterStyleToString;
         use nsstring::{nsACString, nsCStr};
         use self::longhands::list_style_type::computed_value::T;
         match v {
@@ -5432,17 +5430,16 @@ clip-path
             structs::NS_STYLE_CURSOR_ZOOM_OUT => CursorKind::ZoomOut,
             _ => panic!("Found unexpected value in style struct for cursor property"),
         };
 
         let images = self.gecko.mCursorImages.iter().map(|gecko_cursor_image| {
             let url = unsafe {
                 let gecko_image_request = gecko_cursor_image.mImage.mRawPtr.as_ref().unwrap();
                 ComputedImageUrl::from_image_request(&gecko_image_request)
-                    .expect("mCursorImages.mImage could not convert to ComputedImageUrl")
             };
 
             let hotspot =
                 if gecko_cursor_image.mHaveHotspot {
                     Some((gecko_cursor_image.mHotspotX, gecko_cursor_image.mHotspotY))
                 } else {
                     None
                 };
@@ -5708,17 +5705,16 @@ clip-path
                         }
                     },
                     eStyleContentType_Image => {
                         unsafe {
                             let gecko_image_request =
                                 &**gecko_content.mContent.mImage.as_ref();
                             ContentItem::Url(
                                 ComputedImageUrl::from_image_request(gecko_image_request)
-                                    .expect("mContent could not convert to ComputedImageUrl")
                             )
                         }
                     },
                     _ => panic!("Found unexpected value in style struct for content property"),
                 }
             }).collect::<Vec<_>>().into_boxed_slice()
         )
     }