Bug 1914777 - Use cbindgen for border-image-repeat. r=firefox-style-system-reviewers,layout-reviewers,emilio

nsStyleBorder field mBorderImageRepeat replaces fields
mBorderImageRepeatH and mBorderImageRepeatY.

Differential Revision: https://phabricator.services.mozilla.com/D220074
This commit is contained in:
Zach Hoffman 2024-08-25 15:57:04 +00:00
Родитель 11860bb190
Коммит 3929b2eab0
8 изменённых файлов: 14 добавлений и 37 удалений

Просмотреть файл

@ -716,9 +716,9 @@ ImgDrawResult nsCSSRendering::CreateWebRenderCommandsForBorderWithStyleBorder(
return ImgDrawResult::NOT_SUPPORTED; return ImgDrawResult::NOT_SUPPORTED;
} }
if (aStyleBorder.mBorderImageRepeatH == if (aStyleBorder.mBorderImageRepeat._0 ==
StyleBorderImageRepeatKeyword::Space || StyleBorderImageRepeatKeyword::Space ||
aStyleBorder.mBorderImageRepeatV == aStyleBorder.mBorderImageRepeat._1 ==
StyleBorderImageRepeatKeyword::Space) { StyleBorderImageRepeatKeyword::Space) {
return ImgDrawResult::NOT_SUPPORTED; return ImgDrawResult::NOT_SUPPORTED;
} }

Просмотреть файл

@ -3884,7 +3884,7 @@ nsCSSBorderImageRenderer::nsCSSBorderImageRenderer(
"rounding error in width reduction???"); "rounding error in width reduction???");
} }
mRepeatModeHorizontal = aStyleBorder.mBorderImageRepeatH; mRepeatModeHorizontal = aStyleBorder.mBorderImageRepeat._0;
mRepeatModeVertical = aStyleBorder.mBorderImageRepeatV; mRepeatModeVertical = aStyleBorder.mBorderImageRepeat._1;
mFill = aStyleBorder.mBorderImageSlice.fill; mFill = aStyleBorder.mBorderImageSlice.fill;
} }

Просмотреть файл

@ -459,6 +459,7 @@ cbindgen-types = [
{ gecko = "StyleGenericPositionOrAuto", servo = "crate::values::generics::position::PositionOrAuto" }, { gecko = "StyleGenericPositionOrAuto", servo = "crate::values::generics::position::PositionOrAuto" },
{ gecko = "StyleBackgroundSize", servo = "crate::values::computed::BackgroundSize" }, { gecko = "StyleBackgroundSize", servo = "crate::values::computed::BackgroundSize" },
{ gecko = "StyleGenericBackgroundSize", servo = "crate::values::generics::background::BackgroundSize" }, { gecko = "StyleGenericBackgroundSize", servo = "crate::values::generics::background::BackgroundSize" },
{ gecko = "StyleBorderImageRepeat", servo = "crate::values::specified::border::BorderImageRepeat" },
{ gecko = "StyleBorderImageRepeatKeyword", servo = "crate::values::specified::border::BorderImageRepeatKeyword" }, { gecko = "StyleBorderImageRepeatKeyword", servo = "crate::values::specified::border::BorderImageRepeatKeyword" },
{ gecko = "StyleBorderImageSlice", servo = "crate::values::computed::BorderImageSlice" }, { gecko = "StyleBorderImageSlice", servo = "crate::values::computed::BorderImageSlice" },
{ gecko = "StyleBorderSpacing", servo = "crate::values::computed::BorderSpacing" }, { gecko = "StyleBorderSpacing", servo = "crate::values::computed::BorderSpacing" },

Просмотреть файл

@ -397,8 +397,8 @@ nsStyleBorder::nsStyleBorder()
mBorderImageSlice( mBorderImageSlice(
{StyleRectWithAllSides(StyleNumberOrPercentage::Percentage({1.})), {StyleRectWithAllSides(StyleNumberOrPercentage::Percentage({1.})),
false}), false}),
mBorderImageRepeatH(StyleBorderImageRepeatKeyword::Stretch), mBorderImageRepeat{StyleBorderImageRepeatKeyword::Stretch,
mBorderImageRepeatV(StyleBorderImageRepeatKeyword::Stretch), StyleBorderImageRepeatKeyword::Stretch},
mFloatEdge(StyleFloatEdge::ContentBox), mFloatEdge(StyleFloatEdge::ContentBox),
mBoxDecorationBreak(StyleBoxDecorationBreak::Slice), mBoxDecorationBreak(StyleBoxDecorationBreak::Slice),
mBorderTopColor(StyleColor::CurrentColor()), mBorderTopColor(StyleColor::CurrentColor()),
@ -421,8 +421,7 @@ nsStyleBorder::nsStyleBorder(const nsStyleBorder& aSrc)
mBorderImageWidth(aSrc.mBorderImageWidth), mBorderImageWidth(aSrc.mBorderImageWidth),
mBorderImageOutset(aSrc.mBorderImageOutset), mBorderImageOutset(aSrc.mBorderImageOutset),
mBorderImageSlice(aSrc.mBorderImageSlice), mBorderImageSlice(aSrc.mBorderImageSlice),
mBorderImageRepeatH(aSrc.mBorderImageRepeatH), mBorderImageRepeat(aSrc.mBorderImageRepeat),
mBorderImageRepeatV(aSrc.mBorderImageRepeatV),
mFloatEdge(aSrc.mFloatEdge), mFloatEdge(aSrc.mFloatEdge),
mBoxDecorationBreak(aSrc.mBoxDecorationBreak), mBoxDecorationBreak(aSrc.mBoxDecorationBreak),
mBorderTopColor(aSrc.mBorderTopColor), mBorderTopColor(aSrc.mBorderTopColor),
@ -516,8 +515,7 @@ nsChangeHint nsStyleBorder::CalcDifference(
// actually loaded. // actually loaded.
if (!mBorderImageSource.IsNone() || !aNewData.mBorderImageSource.IsNone()) { if (!mBorderImageSource.IsNone() || !aNewData.mBorderImageSource.IsNone()) {
if (mBorderImageSource != aNewData.mBorderImageSource || if (mBorderImageSource != aNewData.mBorderImageSource ||
mBorderImageRepeatH != aNewData.mBorderImageRepeatH || mBorderImageRepeat != aNewData.mBorderImageRepeat ||
mBorderImageRepeatV != aNewData.mBorderImageRepeatV ||
mBorderImageSlice != aNewData.mBorderImageSlice || mBorderImageSlice != aNewData.mBorderImageSlice ||
mBorderImageWidth != aNewData.mBorderImageWidth) { mBorderImageWidth != aNewData.mBorderImageWidth) {
return nsChangeHint_RepaintFrame; return nsChangeHint_RepaintFrame;
@ -533,8 +531,7 @@ nsChangeHint nsStyleBorder::CalcDifference(
// mBorderImage* fields are checked only when border-image is not 'none'. // mBorderImage* fields are checked only when border-image is not 'none'.
if (mBorderImageSource != aNewData.mBorderImageSource || if (mBorderImageSource != aNewData.mBorderImageSource ||
mBorderImageRepeatH != aNewData.mBorderImageRepeatH || mBorderImageRepeat != aNewData.mBorderImageRepeat ||
mBorderImageRepeatV != aNewData.mBorderImageRepeatV ||
mBorderImageSlice != aNewData.mBorderImageSlice || mBorderImageSlice != aNewData.mBorderImageSlice ||
mBorderImageWidth != aNewData.mBorderImageWidth) { mBorderImageWidth != aNewData.mBorderImageWidth) {
return nsChangeHint_NeutralChange; return nsChangeHint_NeutralChange;

Просмотреть файл

@ -501,8 +501,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleBorder {
mozilla::StyleBorderImageWidth mBorderImageWidth; mozilla::StyleBorderImageWidth mBorderImageWidth;
mozilla::StyleNonNegativeLengthOrNumberRect mBorderImageOutset; mozilla::StyleNonNegativeLengthOrNumberRect mBorderImageOutset;
mozilla::StyleBorderImageSlice mBorderImageSlice; // factor, percent mozilla::StyleBorderImageSlice mBorderImageSlice; // factor, percent
mozilla::StyleBorderImageRepeatKeyword mBorderImageRepeatH; mozilla::StyleBorderImageRepeat mBorderImageRepeat;
mozilla::StyleBorderImageRepeatKeyword mBorderImageRepeatV;
mozilla::StyleFloatEdge mFloatEdge; mozilla::StyleFloatEdge mFloatEdge;
mozilla::StyleBoxDecorationBreak mBoxDecorationBreak; mozilla::StyleBoxDecorationBreak mBoxDecorationBreak;

Просмотреть файл

@ -598,7 +598,7 @@ fn static_assert() {
for x in CORNERS]) %> for x in CORNERS]) %>
<%self:impl_trait style_struct_name="Border" <%self:impl_trait style_struct_name="Border"
skip_longhands="${skip_border_longhands} border-image-repeat"> skip_longhands="${skip_border_longhands}">
% for side in SIDES: % for side in SIDES:
pub fn set_border_${side.ident}_style(&mut self, v: BorderStyle) { pub fn set_border_${side.ident}_style(&mut self, v: BorderStyle) {
self.mBorderStyle[${side.index}] = v; self.mBorderStyle[${side.index}] = v;
@ -658,28 +658,6 @@ fn static_assert() {
% for corner in CORNERS: % for corner in CORNERS:
${impl_simple("border_%s_radius" % corner, "mBorderRadius.%s" % corner)} ${impl_simple("border_%s_radius" % corner, "mBorderRadius.%s" % corner)}
% endfor % endfor
pub fn set_border_image_repeat(&mut self, v: longhands::border_image_repeat::computed_value::T) {
% for i, side in enumerate(["H", "V"]):
self.mBorderImageRepeat${side} = v.${i};
% endfor
}
pub fn copy_border_image_repeat_from(&mut self, other: &Self) {
self.mBorderImageRepeatH = other.mBorderImageRepeatH;
self.mBorderImageRepeatV = other.mBorderImageRepeatV;
}
pub fn reset_border_image_repeat(&mut self, other: &Self) {
self.copy_border_image_repeat_from(other)
}
pub fn clone_border_image_repeat(&self) -> longhands::border_image_repeat::computed_value::T {
% for side in ["H", "V"]:
let servo_${side.lower()} = self.mBorderImageRepeat${side};
% endfor
longhands::border_image_repeat::computed_value::T(servo_h, servo_v)
}
</%self:impl_trait> </%self:impl_trait>
<% skip_scroll_margin_longhands = " ".join(["scroll-margin-%s" % x.ident for x in SIDES]) %> <% skip_scroll_margin_longhands = " ".join(["scroll-margin-%s" % x.ident for x in SIDES]) %>

Просмотреть файл

@ -327,6 +327,7 @@ pub enum BorderImageRepeatKeyword {
ToResolvedValue, ToResolvedValue,
ToShmem, ToShmem,
)] )]
#[repr(C)]
pub struct BorderImageRepeat(pub BorderImageRepeatKeyword, pub BorderImageRepeatKeyword); pub struct BorderImageRepeat(pub BorderImageRepeatKeyword, pub BorderImageRepeatKeyword);
impl ToCss for BorderImageRepeat { impl ToCss for BorderImageRepeat {

Просмотреть файл

@ -189,6 +189,7 @@ include = [
"BackgroundSize", "BackgroundSize",
"BaselineSource", "BaselineSource",
"BorderImageSlice", "BorderImageSlice",
"BorderImageRepeat",
"BorderImageRepeatKeyword", "BorderImageRepeatKeyword",
"BorderSpacing", "BorderSpacing",
"BorderRadius", "BorderRadius",