From ecb2ec63de0ef76c15cb1ccf9d8a2d9c438c97c4 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Wed, 16 May 2018 14:35:37 +1000 Subject: [PATCH] style: Rename from_url_value_data to from_url_value and reuse URLValue passed in for ComputedUrl. Bug: 1461858 Reviewed-by: emilio MozReview-Commit-ID: LJGm3lUS9mD --- components/style/gecko/conversions.rs | 5 ++-- components/style/gecko/url.rs | 9 +++---- components/style/properties/gecko.mako.rs | 30 +++++++++-------------- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/components/style/gecko/conversions.rs b/components/style/gecko/conversions.rs index bb0ea1e50131..314ded9cb1cf 100644 --- a/components/style/gecko/conversions.rs +++ b/components/style/gecko/conversions.rs @@ -634,6 +634,7 @@ pub mod basic_shape { use gecko_bindings::structs::{StyleGeometryBox, StyleShapeSource, StyleShapeSourceType}; use gecko_bindings::structs::{nsStyleCoord, nsStyleCorners}; use gecko_bindings::sugar::ns_style_coord::{CoordDataMut, CoordDataValue}; + use gecko_bindings::sugar::refptr::RefPtr; use std::borrow::Borrow; use values::computed::basic_shape::{BasicShape, ClippingShape, FloatAreaShape, ShapeRadius}; use values::computed::border::{BorderCornerRadius, BorderRadius}; @@ -678,8 +679,8 @@ pub mod basic_shape { match other.mType { StyleShapeSourceType::URL => unsafe { let shape_image = &*other.mShapeImage.mPtr; - let other_url = &(**shape_image.__bindgen_anon_1.mURLValue.as_ref()); - let url = ComputedUrl::from_url_value_data(&other_url._base); + let other_url = RefPtr::from_ptr_ref(shape_image.__bindgen_anon_1.mURLValue.as_ref()); + let url = ComputedUrl::from_url_value(other_url.clone()); ShapeSource::ImageOrUrl(url) }, StyleShapeSourceType::Image => { diff --git a/components/style/gecko/url.rs b/components/style/gecko/url.rs index 163c16905232..cb503f4720a3 100644 --- a/components/style/gecko/url.rs +++ b/components/style/gecko/url.rs @@ -287,11 +287,10 @@ impl ToCss for ComputedUrl { } impl ComputedUrl { - /// Convert from URLValueData to ComputedUrl. - pub unsafe fn from_url_value_data(url: &URLValueData) -> Self { - ComputedUrl( - SpecifiedUrl::from_css_url(CssUrl::from_url_value_data(url)) - ) + /// Convert from RefPtr to ComputedUrl. + pub unsafe fn from_url_value(url_value: RefPtr) -> Self { + let url = CssUrl::from_url_value_data(&url_value._base); + ComputedUrl(SpecifiedUrl { url, url_value }) } } diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 2f091b8d5abf..bb71edaa7c31 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -43,6 +43,7 @@ use gecko_bindings::structs::mozilla::CSSPseudoElementType; use gecko_bindings::structs::mozilla::CSSPseudoElementType_InheritingAnonBox; use gecko_bindings::structs::root::NS_STYLE_CONTEXT_TYPE_SHIFT; use gecko_bindings::sugar::ns_style_coord::{CoordDataValue, CoordData, CoordDataMut}; +use gecko_bindings::sugar::refptr::RefPtr; use gecko::values::convert_nscolor_to_rgba; use gecko::values::convert_rgba_to_nscolor; use gecko::values::GeckoStyleCoordConvertible; @@ -758,13 +759,10 @@ def set_gecko_property(ffi_name, expr): nsStyleSVGPaintType::eStyleSVGPaintType_ContextFill => SVGPaintKind::ContextFill, nsStyleSVGPaintType::eStyleSVGPaintType_ContextStroke => SVGPaintKind::ContextStroke, nsStyleSVGPaintType::eStyleSVGPaintType_Server => { - unsafe { - SVGPaintKind::PaintServer( - ComputedUrl::from_url_value_data( - &(**paint.mPaint.mPaintServer.as_ref())._base - ) - ) - } + SVGPaintKind::PaintServer(unsafe { + let url = RefPtr::from_ptr_ref(paint.mPaint.mPaintServer.as_ref()); + ComputedUrl::from_url_value(url.clone()) + }) } nsStyleSVGPaintType::eStyleSVGPaintType_Color => { unsafe { SVGPaintKind::Color(convert_nscolor_to_rgba(*paint.mPaint.mColor.as_ref())) } @@ -967,12 +965,9 @@ def set_gecko_property(ffi_name, expr): return UrlOrNone::none() } - unsafe { - let gecko_url_value = &*self.gecko.${gecko_ffi_name}.mRawPtr; - UrlOrNone::Url( - ComputedUrl::from_url_value_data(&gecko_url_value._base) - ) - } + UrlOrNone::Url(unsafe { + ComputedUrl::from_url_value(self.gecko.${gecko_ffi_name}.to_safe()) + }) } @@ -4550,11 +4545,10 @@ fn static_assert() { }); }, NS_STYLE_FILTER_URL => { - filters.push(unsafe { - Filter::Url( - ComputedUrl::from_url_value_data(&(**filter.__bindgen_anon_1.mURL.as_ref())._base) - ) - }); + filters.push(Filter::Url(unsafe { + let url = RefPtr::from_ptr_ref(filter.__bindgen_anon_1.mURL.as_ref()); + ComputedUrl::from_url_value(url.clone()) + })); } _ => {}, }