Bug 1461858 part 3 - Have from_image_request reuse ImageValue from image request directly. r?emilio
And also remove ComputedImageUrl::from_url_value_data.
MozReview-Commit-ID: 5zifQlU7tOz
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -1663,21 +1663,21 @@ Gecko_CreateGradient(uint8_t aShape,
for (uint32_t i = 0; i < aStopCount; i++) {
result->mStops.AppendElement(dummyStop);
}
return result;
}
-const mozilla::css::URLValueData*
-Gecko_GetURLValue(const nsStyleImage* aImage)
+const nsStyleImageRequest*
+Gecko_GetImageRequest(const nsStyleImage* aImage)
{
- MOZ_ASSERT(aImage && aImage->GetType() == eStyleImageType_Image);
- return aImage->GetURLValue();
+ MOZ_ASSERT(aImage);
+ return aImage->GetImageRequest();
}
nsAtom*
Gecko_GetImageElement(const nsStyleImage* aImage)
{
MOZ_ASSERT(aImage && aImage->GetType() == eStyleImageType_Element);
return const_cast<nsAtom*>(aImage->GetElementId());
}
--- a/layout/style/ServoBindings.h
+++ b/layout/style/ServoBindings.h
@@ -366,17 +366,17 @@ void Gecko_InitializeImageCropRect(nsSty
nsStyleGradient* Gecko_CreateGradient(uint8_t shape,
uint8_t size,
bool repeating,
bool legacy_syntax,
bool moz_legacy_syntax,
uint32_t stops);
-const mozilla::css::URLValueData* Gecko_GetURLValue(const nsStyleImage* image);
+const nsStyleImageRequest* Gecko_GetImageRequest(const nsStyleImage* image);
nsAtom* Gecko_GetImageElement(const nsStyleImage* image);
const nsStyleGradient* Gecko_GetGradientImageValue(const nsStyleImage* image);
// list-style-image style.
void Gecko_SetListStyleImageNone(nsStyleList* style_struct);
void Gecko_SetListStyleImageImageValue(nsStyleList* style_struct,
mozilla::css::ImageValue* aImageValue);
void Gecko_CopyListStyleImageFrom(nsStyleList* dest, const nsStyleList* src);
--- a/servo/components/style/gecko/conversions.rs
+++ b/servo/components/style/gecko/conversions.rs
@@ -421,19 +421,20 @@ impl nsStyleImage {
use gecko_string_cache::Atom;
let atom = bindings::Gecko_GetImageElement(self);
Some(GenericImage::Element(Atom::from_raw(atom)))
},
_ => panic!("Unexpected image type"),
}
}
- unsafe fn get_image_url(self: &nsStyleImage) -> ComputedImageUrl {
- let url_value = bindings::Gecko_GetURLValue(self);
- ComputedImageUrl::from_url_value_data(url_value.as_ref().unwrap())
+ unsafe fn get_image_url(&self) -> ComputedImageUrl {
+ let image_request = bindings::Gecko_GetImageRequest(self)
+ .as_ref().expect("Null image request?");
+ ComputedImageUrl::from_image_request(image_request)
}
unsafe fn get_gradient(self: &nsStyleImage) -> Box<Gradient> {
use gecko::values::convert_nscolor_to_rgba;
use self::structs::NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER as CLOSEST_CORNER;
use self::structs::NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE as CLOSEST_SIDE;
use self::structs::NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER as FARTHEST_CORNER;
use self::structs::NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE as FARTHEST_SIDE;
--- a/servo/components/style/gecko/url.rs
+++ b/servo/components/style/gecko/url.rs
@@ -304,23 +304,15 @@ impl ToCss for ComputedImageUrl {
where
W: Write
{
serialize_computed_url(&self.0.image_value._base, dest)
}
}
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) -> Self {
- let image_value = image_request.mImageValue.mRawPtr
- .as_ref().expect("mImageValue is null");
- let url_value_data = &image_value._base;
- Self::from_url_value_data(url_value_data)
+ let image_value = image_request.mImageValue.to_safe();
+ let url = CssUrl::from_url_value_data(&image_value._base);
+ ComputedImageUrl(SpecifiedImageUrl { url, image_value })
}
}