diff --git a/components/style/gecko/values.rs b/components/style/gecko/values.rs index 62cad421e87..cb288e866fb 100644 --- a/components/style/gecko/values.rs +++ b/components/style/gecko/values.rs @@ -8,7 +8,9 @@ use app_units::Au; use cssparser::RGBA; -use gecko_bindings::structs::{nsStyleCoord, StyleGridTrackBreadth, StyleShapeRadius}; +use gecko_bindings::bindings; +use gecko_bindings::structs::{CounterStylePtr, nsStyleCoord}; +use gecko_bindings::structs::{StyleGridTrackBreadth, StyleShapeRadius}; use gecko_bindings::sugar::ns_style_coord::{CoordData, CoordDataMut, CoordDataValue}; use std::cmp::max; use values::{Auto, Either, ExtremumLength, None_, Normal}; @@ -16,6 +18,7 @@ use values::computed::{Angle, LengthOrPercentage, LengthOrPercentageOrAuto}; use values::computed::{LengthOrPercentageOrNone, Number, NumberOrPercentage}; use values::computed::{MaxLength, MozLength}; use values::computed::basic_shape::ShapeRadius as ComputedShapeRadius; +use values::generics::CounterStyleOrNone; use values::generics::basic_shape::ShapeRadius; use values::generics::grid::{TrackBreadth, TrackKeyword}; use values::specified::Percentage; @@ -390,3 +393,16 @@ pub fn round_border_to_device_pixels(width: Au, au_per_device_px: Au) -> Au { max(au_per_device_px, Au(width.0 / au_per_device_px.0 * au_per_device_px.0)) } } + +impl CounterStyleOrNone { + /// Convert this counter style to a Gecko CounterStylePtr. + pub fn to_gecko_value(self, gecko_value: &mut CounterStylePtr) { + let ptr = match self { + CounterStyleOrNone::None_ => atom!("none"), + CounterStyleOrNone::Name(name) => name.0, + }; + unsafe { + bindings::Gecko_SetCounterStyleToName(gecko_value, ptr.into_addrefed()); + } + } +} diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index a0a372bcb75..2290825d525 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -21,11 +21,11 @@ use gecko_bindings::bindings::Gecko_CopyConstruct_${style_struct.gecko_ffi_name} use gecko_bindings::bindings::Gecko_Destroy_${style_struct.gecko_ffi_name}; % endfor use gecko_bindings::bindings::Gecko_Construct_nsStyleVariables; +use gecko_bindings::bindings::Gecko_CopyCounterStyle; use gecko_bindings::bindings::Gecko_CopyCursorArrayFrom; use gecko_bindings::bindings::Gecko_CopyFontFamilyFrom; use gecko_bindings::bindings::Gecko_CopyImageValueFrom; use gecko_bindings::bindings::Gecko_CopyListStyleImageFrom; -use gecko_bindings::bindings::Gecko_CopyListStyleTypeFrom; use gecko_bindings::bindings::Gecko_Destroy_nsStyleVariables; use gecko_bindings::bindings::Gecko_EnsureImageLayersLength; use gecko_bindings::bindings::Gecko_FontFamilyList_AppendGeneric; @@ -39,7 +39,6 @@ use gecko_bindings::bindings::Gecko_nsStyleFont_SetLang; use gecko_bindings::bindings::Gecko_nsStyleFont_CopyLangFrom; use gecko_bindings::bindings::Gecko_SetListStyleImageNone; use gecko_bindings::bindings::Gecko_SetListStyleImageImageValue; -use gecko_bindings::bindings::Gecko_SetListStyleType; use gecko_bindings::bindings::Gecko_SetNullImageValue; use gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull; use gecko_bindings::bindings::{Gecko_ResetFilters, Gecko_CopyFiltersFrom}; @@ -3150,18 +3149,12 @@ fn static_assert() { } pub fn set_list_style_type(&mut self, v: longhands::list_style_type::computed_value::T) { - use values::generics::CounterStyleOrNone; - let name = match v.0 { - CounterStyleOrNone::None_ => atom!("none"), - CounterStyleOrNone::Name(name) => name.0, - }; - unsafe { Gecko_SetListStyleType(&mut self.gecko, name.as_ptr()); } + v.0.to_gecko_value(&mut self.gecko.mCounterStyle); } - pub fn copy_list_style_type_from(&mut self, other: &Self) { unsafe { - Gecko_CopyListStyleTypeFrom(&mut self.gecko, &other.gecko); + Gecko_CopyCounterStyle(&mut self.gecko.mCounterStyle, &other.gecko.mCounterStyle); } } @@ -4257,7 +4250,6 @@ clip-path use properties::longhands::content::computed_value::T; use properties::longhands::content::computed_value::ContentItem; use values::generics::CounterStyleOrNone; - use gecko_bindings::structs::nsIAtom; use gecko_bindings::structs::nsStyleContentData; use gecko_bindings::structs::nsStyleContentType; use gecko_bindings::structs::nsStyleContentType::*; @@ -4285,11 +4277,7 @@ clip-path if content_type == eStyleContentType_Counters { counter_func.mSeparator.assign_utf8(sep); } - let ptr = match style { - CounterStyleOrNone::None_ => atom!("none"), - CounterStyleOrNone::Name(name) => name.0, - }.into_addrefed(); - unsafe { counter_func.mCounterStyleName.set_raw_from_addrefed::(ptr); } + style.to_gecko_value(&mut counter_func.mCounterStyle); } match v {