Title: [282495] releases/WebKitGTK/webkit-2.32/Source/WebCore
Revision
282495
Author
[email protected]
Date
2021-09-16 01:00:00 -0700 (Thu, 16 Sep 2021)

Log Message

Merge r275495 - [css-grid] Initialize auto-repeat data in RenderStyle in applyInitialGridTemplate{Columns|Rows}
https://bugs.webkit.org/show_bug.cgi?id=222852

Reviewed by Antti Koivisto.

We should initialize the auto repeat data (like auto repeat tracks or the insertion point) whenever
applyInitialGridTemplateXXX is called. That method is normally called using different RenderStyle's
but under some circumstances it might be the same. For those cases we wouldn't like to end up with
obsolete data from a previous style resolution.

The same applies also to the applyInheritGridTemplateXXX calls. We're also removing a duplicate call
to setGridAutoRepeat{Row|Column}sInsertionPoint() that is not needed at all.

In order to have a single place with all the style properties affecting columns and rows, all the set
calls were moved to a macro that is used by all the apply{Initial|Inherit}GridTemplate{Columns|Rows}
methods. This would allow us to prevent eventual out-of-sync issues like this one.

* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyInitialGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateRows):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateRows):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog (282494 => 282495)


--- releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog	2021-09-16 07:41:10 UTC (rev 282494)
+++ releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog	2021-09-16 08:00:00 UTC (rev 282495)
@@ -1,3 +1,28 @@
+2021-03-24  Sergio Villar Senin  <[email protected]>
+
+        [css-grid] Initialize auto-repeat data in RenderStyle in applyInitialGridTemplate{Columns|Rows}
+        https://bugs.webkit.org/show_bug.cgi?id=222852
+
+        Reviewed by Antti Koivisto.
+
+        We should initialize the auto repeat data (like auto repeat tracks or the insertion point) whenever
+        applyInitialGridTemplateXXX is called. That method is normally called using different RenderStyle's
+        but under some circumstances it might be the same. For those cases we wouldn't like to end up with
+        obsolete data from a previous style resolution.
+
+        The same applies also to the applyInheritGridTemplateXXX calls. We're also removing a duplicate call
+        to setGridAutoRepeat{Row|Column}sInsertionPoint() that is not needed at all.
+
+        In order to have a single place with all the style properties affecting columns and rows, all the set
+        calls were moved to a macro that is used by all the apply{Initial|Inherit}GridTemplate{Columns|Rows}
+        methods. This would allow us to prevent eventual out-of-sync issues like this one.
+
+        * style/StyleBuilderCustom.h:
+        (WebCore::Style::BuilderCustom::applyInitialGridTemplateColumns):
+        (WebCore::Style::BuilderCustom::applyInheritGridTemplateColumns):
+        (WebCore::Style::BuilderCustom::applyInitialGridTemplateRows):
+        (WebCore::Style::BuilderCustom::applyInheritGridTemplateRows):
+
 2021-04-02  Ryosuke Niwa  <[email protected]>
 
         PendingImageBitmap gets created on a stopped script execution context.

Modified: releases/WebKitGTK/webkit-2.32/Source/WebCore/style/StyleBuilderCustom.h (282494 => 282495)


--- releases/WebKitGTK/webkit-2.32/Source/WebCore/style/StyleBuilderCustom.h	2021-09-16 07:41:10 UTC (rev 282494)
+++ releases/WebKitGTK/webkit-2.32/Source/WebCore/style/StyleBuilderCustom.h	2021-09-16 08:00:00 UTC (rev 282495)
@@ -1799,31 +1799,38 @@
     builderState.style().setNamedGridAreaColumnCount(gridTemplateAreasValue.columnCount());
 }
 
+#define SET_TRACKS_DATA_INTERNAL(tracksData, style, parentStyle, TrackType) \
+    ASSERT(tracksData || parentStyle); \
+    style.setGrid##TrackType##s(tracksData ? tracksData->m_trackSizes : parentStyle->grid##TrackType##s()); \
+    style.setNamedGrid##TrackType##Lines(tracksData ? tracksData->m_namedGridLines : parentStyle->namedGrid##TrackType##Lines()); \
+    style.setOrderedNamedGrid##TrackType##Lines(tracksData ? tracksData->m_orderedNamedGridLines : parentStyle->orderedNamedGrid##TrackType##Lines()); \
+    style.setGridAutoRepeat##TrackType##s(tracksData ? tracksData->m_autoRepeatTrackSizes : parentStyle->gridAutoRepeat##TrackType##s()); \
+    style.setGridAutoRepeat##TrackType##sInsertionPoint(tracksData ? tracksData->m_autoRepeatInsertionPoint : parentStyle->gridAutoRepeat##TrackType##sInsertionPoint()); \
+    style.setAutoRepeatNamedGrid##TrackType##Lines(tracksData ? tracksData->m_autoRepeatNamedGridLines : parentStyle->autoRepeatNamedGrid##TrackType##Lines()); \
+    style.setAutoRepeatOrderedNamedGrid##TrackType##Lines(tracksData ? tracksData->m_autoRepeatOrderedNamedGridLines : parentStyle->autoRepeatOrderedNamedGrid##TrackType##Lines()); \
+    style.setGridAutoRepeat##TrackType##sType(tracksData ? tracksData->m_autoRepeatType : parentStyle->gridAutoRepeat##TrackType##sType());
+
+#define SET_INHERIT_TRACKS_DATA(style, parentStyle, TrackType) \
+    BuilderConverter::TracksData* tracksData = nullptr; \
+    const RenderStyle* parentStylePointer = &parentStyle; \
+    SET_TRACKS_DATA_INTERNAL(tracksData, style, parentStylePointer, TrackType)
+
+#define SET_TRACKS_DATA(tracksData, style, TrackType) \
+    BuilderConverter::TracksData* tracksDataPointer = &tracksData; \
+    const RenderStyle* parentStyle = nullptr; \
+    SET_TRACKS_DATA_INTERNAL(tracksDataPointer, style, parentStyle, TrackType)
+
 inline void BuilderCustom::applyInitialGridTemplateColumns(BuilderState& builderState)
 {
-    builderState.style().setGridColumns(RenderStyle::initialGridColumns());
-    builderState.style().setNamedGridColumnLines(RenderStyle::initialNamedGridColumnLines());
-    builderState.style().setOrderedNamedGridColumnLines(RenderStyle::initialOrderedNamedGridColumnLines());
+    BuilderConverter::TracksData initialTracksData;
+    SET_TRACKS_DATA(initialTracksData, builderState.style(), Column);
 }
 
 inline void BuilderCustom::applyInheritGridTemplateColumns(BuilderState& builderState)
 {
-    builderState.style().setGridColumns(builderState.parentStyle().gridColumns());
-    builderState.style().setNamedGridColumnLines(builderState.parentStyle().namedGridColumnLines());
-    builderState.style().setOrderedNamedGridColumnLines(builderState.parentStyle().orderedNamedGridColumnLines());
+    SET_INHERIT_TRACKS_DATA(builderState.style(), builderState.parentStyle(), Column);
 }
 
-#define SET_TRACKS_DATA(tracksData, style, TrackType) \
-    style.setGrid##TrackType##s(tracksData.m_trackSizes); \
-    style.setNamedGrid##TrackType##Lines(tracksData.m_namedGridLines); \
-    style.setOrderedNamedGrid##TrackType##Lines(tracksData.m_orderedNamedGridLines); \
-    style.setGridAutoRepeat##TrackType##s(tracksData.m_autoRepeatTrackSizes); \
-    style.setGridAutoRepeat##TrackType##sInsertionPoint(tracksData.m_autoRepeatInsertionPoint); \
-    style.setAutoRepeatNamedGrid##TrackType##Lines(tracksData.m_autoRepeatNamedGridLines); \
-    style.setAutoRepeatOrderedNamedGrid##TrackType##Lines(tracksData.m_autoRepeatOrderedNamedGridLines); \
-    style.setGridAutoRepeat##TrackType##sType(tracksData.m_autoRepeatType); \
-    style.setGridAutoRepeat##TrackType##sInsertionPoint(tracksData.m_autoRepeatInsertionPoint);
-
 inline void BuilderCustom::applyValueGridTemplateColumns(BuilderState& builderState, CSSValue& value)
 {
     BuilderConverter::TracksData tracksData;
@@ -1838,16 +1845,13 @@
 
 inline void BuilderCustom::applyInitialGridTemplateRows(BuilderState& builderState)
 {
-    builderState.style().setGridRows(RenderStyle::initialGridRows());
-    builderState.style().setNamedGridRowLines(RenderStyle::initialNamedGridRowLines());
-    builderState.style().setOrderedNamedGridRowLines(RenderStyle::initialOrderedNamedGridRowLines());
+    BuilderConverter::TracksData initialTracksData;
+    SET_TRACKS_DATA(initialTracksData, builderState.style(), Row);
 }
 
 inline void BuilderCustom::applyInheritGridTemplateRows(BuilderState& builderState)
 {
-    builderState.style().setGridRows(builderState.parentStyle().gridRows());
-    builderState.style().setNamedGridRowLines(builderState.parentStyle().namedGridRowLines());
-    builderState.style().setOrderedNamedGridRowLines(builderState.parentStyle().orderedNamedGridRowLines());
+    SET_INHERIT_TRACKS_DATA(builderState.style(), builderState.parentStyle(), Row);
 }
 
 inline void BuilderCustom::applyValueGridTemplateRows(BuilderState& builderState, CSSValue& value)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to