Diff
Modified: trunk/LayoutTests/ChangeLog (292189 => 292190)
--- trunk/LayoutTests/ChangeLog 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/LayoutTests/ChangeLog 2022-04-01 00:28:42 UTC (rev 292190)
@@ -1,3 +1,15 @@
+2022-03-31 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] [iOS] Text decoration is always drawn with solid stroke style
+ https://bugs.webkit.org/show_bug.cgi?id=236909
+ rdar://89196615
+
+ Reviewed by Simon Fraser.
+
+ Unskip failed text decoration layout tests.
+
+ * platform/ios-wk2/TestExpectations:
+
2022-03-31 Jon Lee <[email protected]>
Unreviewed test gardening.
Modified: trunk/LayoutTests/platform/ios-wk2/TestExpectations (292189 => 292190)
--- trunk/LayoutTests/platform/ios-wk2/TestExpectations 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/LayoutTests/platform/ios-wk2/TestExpectations 2022-04-01 00:28:42 UTC (rev 292190)
@@ -2215,12 +2215,6 @@
webkit.org/b/236908 fast/text/multiple-codeunit-vertical-upright-2.html [ ImageOnlyFailure ]
webkit.org/b/236908 fast/text/multiple-codeunit-vertical-upright.html [ ImageOnlyFailure ]
-# Text decoration failures
-webkit.org/b/236909 fast/css3-text/css3-text-decoration/text-decoration-dashed.html [ ImageOnlyFailure ]
-webkit.org/b/236909 fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html [ ImageOnlyFailure ]
-webkit.org/b/236909 fast/css3-text/css3-text-decoration/text-decoration-dotted.html [ ImageOnlyFailure ]
-webkit.org/b/236909 fast/css3-text/css3-text-decoration/text-underline-style.html [ ImageOnlyFailure ]
-
# Red text pokes out
webkit.org/b/236911 fast/text/international/synthesized-italic-vertical.html [ ImageOnlyFailure ]
Modified: trunk/Source/WebCore/ChangeLog (292189 => 292190)
--- trunk/Source/WebCore/ChangeLog 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/ChangeLog 2022-04-01 00:28:42 UTC (rev 292190)
@@ -1,3 +1,29 @@
+2022-03-31 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] [iOS] Text decoration is always drawn with solid stroke style
+ https://bugs.webkit.org/show_bug.cgi?id=236909
+ rdar://89196615
+
+ Reviewed by Simon Fraser.
+
+ Pass the missing StrokeStyle parameter to the DrawLinesForText item and
+ to the recorder methods: drawLinesForText() and recordDrawLinesForText().
+
+ * platform/graphics/GraphicsTypes.h:
+ * platform/graphics/displaylists/DisplayListItems.cpp:
+ (WebCore::DisplayList::DrawLinesForText::DrawLinesForText):
+ (WebCore::DisplayList::DrawLinesForText::apply const):
+ * platform/graphics/displaylists/DisplayListItems.h:
+ (WebCore::DisplayList::DrawLinesForText::style const):
+ (WebCore::DisplayList::DrawLinesForText::encode const):
+ (WebCore::DisplayList::DrawLinesForText::decode):
+ * platform/graphics/displaylists/DisplayListRecorder.cpp:
+ (WebCore::DisplayList::Recorder::drawLinesForText):
+ * platform/graphics/displaylists/DisplayListRecorder.h:
+ * platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
+ (WebCore::DisplayList::RecorderImpl::recordDrawLinesForText):
+ * platform/graphics/displaylists/DisplayListRecorderImpl.h:
+
2022-03-31 Don Olmstead <[email protected]>
Fix unused parameter warning in AccessibilityObject::previousLineStartPosition when !ENABLE(ACCESSIBILITY)
Modified: trunk/Source/WebCore/platform/graphics/GraphicsTypes.h (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/GraphicsTypes.h 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/GraphicsTypes.h 2022-04-01 00:28:42 UTC (rev 292190)
@@ -252,7 +252,7 @@
AlignHCenter
};
-enum StrokeStyle {
+enum StrokeStyle : uint8_t {
NoStroke,
SolidStroke,
DottedStroke,
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp 2022-04-01 00:28:42 UTC (rev 292190)
@@ -478,7 +478,7 @@
return ts;
}
-DrawLinesForText::DrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines)
+DrawLinesForText::DrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle style)
: m_blockLocation(blockLocation)
, m_localAnchor(localAnchor)
, m_widths(widths)
@@ -485,12 +485,13 @@
, m_thickness(thickness)
, m_printing(printing)
, m_doubleLines(doubleLines)
+ , m_style(style)
{
}
void DrawLinesForText::apply(GraphicsContext& context) const
{
- context.drawLinesForText(point(), m_thickness, m_widths, m_printing, m_doubleLines);
+ context.drawLinesForText(point(), m_thickness, m_widths, m_printing, m_doubleLines, m_style);
}
std::optional<FloatRect> DrawLinesForText::localBounds(const GraphicsContext&) const
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h 2022-04-01 00:28:42 UTC (rev 292190)
@@ -907,7 +907,7 @@
static constexpr bool isInlineItem = false;
static constexpr bool isDrawingItem = true;
- WEBCORE_EXPORT DrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines);
+ WEBCORE_EXPORT DrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle);
void setBlockLocation(const FloatPoint& blockLocation) { m_blockLocation = blockLocation; }
const FloatPoint& blockLocation() const { return m_blockLocation; }
@@ -917,6 +917,7 @@
const DashArray& widths() const { return m_widths; }
bool isPrinting() const { return m_printing; }
bool doubleLines() const { return m_doubleLines; }
+ StrokeStyle style() const { return m_style; }
WEBCORE_EXPORT void apply(GraphicsContext&) const;
@@ -933,6 +934,7 @@
float m_thickness;
bool m_printing;
bool m_doubleLines;
+ StrokeStyle m_style;
};
template<class Encoder>
@@ -944,6 +946,7 @@
encoder << m_thickness;
encoder << m_printing;
encoder << m_doubleLines;
+ encoder << m_style;
}
template<class Decoder>
@@ -979,7 +982,12 @@
if (!doubleLines)
return std::nullopt;
- return {{ *blockLocation, *localAnchor, *thickness, *widths, *printing, *doubleLines }};
+ std::optional<StrokeStyle> style;
+ decoder >> style;
+ if (!style)
+ return std::nullopt;
+
+ return { { *blockLocation, *localAnchor, *thickness, *widths, *printing, *doubleLines, *style } };
}
class DrawDotsForDocumentMarker {
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp 2022-04-01 00:28:42 UTC (rev 292190)
@@ -310,10 +310,10 @@
recordDrawLine(point1, point2);
}
-void Recorder::drawLinesForText(const FloatPoint& point, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle)
+void Recorder::drawLinesForText(const FloatPoint& point, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle style)
{
appendStateChangeItemIfNecessary();
- recordDrawLinesForText(FloatPoint(), toFloatSize(point), thickness, widths, printing, doubleLines);
+ recordDrawLinesForText(FloatPoint(), toFloatSize(point), thickness, widths, printing, doubleLines, style);
}
void Recorder::drawDotsForDocumentMarker(const FloatRect& rect, DocumentMarkerLineStyle style)
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h 2022-04-01 00:28:42 UTC (rev 292190)
@@ -90,7 +90,7 @@
virtual void recordEndTransparencyLayer() = 0;
virtual void recordDrawRect(const FloatRect&, float) = 0;
virtual void recordDrawLine(const FloatPoint& point1, const FloatPoint& point2) = 0;
- virtual void recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines) = 0;
+ virtual void recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle) = 0;
virtual void recordDrawDotsForDocumentMarker(const FloatRect&, const DocumentMarkerLineStyle&) = 0;
virtual void recordDrawEllipse(const FloatRect&) = 0;
virtual void recordDrawPath(const Path&) = 0;
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp 2022-04-01 00:28:42 UTC (rev 292190)
@@ -212,9 +212,9 @@
append<DrawLine>(point1, point2);
}
-void RecorderImpl::recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines)
+void RecorderImpl::recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle style)
{
- append<DrawLinesForText>(blockLocation, localAnchor, thickness, widths, printing, doubleLines);
+ append<DrawLinesForText>(blockLocation, localAnchor, thickness, widths, printing, doubleLines, style);
}
void RecorderImpl::recordDrawDotsForDocumentMarker(const FloatRect& rect, const DocumentMarkerLineStyle& style)
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h (292189 => 292190)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h 2022-04-01 00:28:42 UTC (rev 292190)
@@ -76,7 +76,7 @@
void recordEndTransparencyLayer() final;
void recordDrawRect(const FloatRect&, float) final;
void recordDrawLine(const FloatPoint& point1, const FloatPoint& point2) final;
- void recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines) final;
+ void recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle) final;
void recordDrawDotsForDocumentMarker(const FloatRect&, const DocumentMarkerLineStyle&) final;
void recordDrawEllipse(const FloatRect&) final;
void recordDrawPath(const Path&) final;
Modified: trunk/Source/WebKit/ChangeLog (292189 => 292190)
--- trunk/Source/WebKit/ChangeLog 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebKit/ChangeLog 2022-04-01 00:28:42 UTC (rev 292190)
@@ -1,3 +1,15 @@
+2022-03-31 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] [iOS] Text decoration is always drawn with solid stroke style
+ https://bugs.webkit.org/show_bug.cgi?id=236909
+ rdar://89196615
+
+ Reviewed by Simon Fraser.
+
+ * WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
+ (WebKit::RemoteDisplayListRecorderProxy::recordDrawLinesForText):
+ * WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
+
2022-03-31 Commit Queue <[email protected]>
Unreviewed, reverting r292183.
Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp (292189 => 292190)
--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp 2022-04-01 00:28:42 UTC (rev 292190)
@@ -225,9 +225,9 @@
send(Messages::RemoteDisplayListRecorder::DrawLine(point1, point2));
}
-void RemoteDisplayListRecorderProxy::recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines)
+void RemoteDisplayListRecorderProxy::recordDrawLinesForText(const FloatPoint& blockLocation, const FloatSize& localAnchor, float thickness, const DashArray& widths, bool printing, bool doubleLines, StrokeStyle style)
{
- send(Messages::RemoteDisplayListRecorder::DrawLinesForText(DisplayList::DrawLinesForText { blockLocation, localAnchor, thickness, widths, printing, doubleLines }));
+ send(Messages::RemoteDisplayListRecorder::DrawLinesForText(DisplayList::DrawLinesForText { blockLocation, localAnchor, thickness, widths, printing, doubleLines, style }));
}
void RemoteDisplayListRecorderProxy::recordDrawDotsForDocumentMarker(const FloatRect& rect, const DocumentMarkerLineStyle& style)
Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h (292189 => 292190)
--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h 2022-04-01 00:22:51 UTC (rev 292189)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h 2022-04-01 00:28:42 UTC (rev 292190)
@@ -95,7 +95,7 @@
void recordEndTransparencyLayer() final;
void recordDrawRect(const WebCore::FloatRect&, float) final;
void recordDrawLine(const WebCore::FloatPoint& point1, const WebCore::FloatPoint& point2) final;
- void recordDrawLinesForText(const WebCore::FloatPoint& blockLocation, const WebCore::FloatSize& localAnchor, float thickness, const WebCore::DashArray& widths, bool printing, bool doubleLines) final;
+ void recordDrawLinesForText(const WebCore::FloatPoint& blockLocation, const WebCore::FloatSize& localAnchor, float thickness, const WebCore::DashArray& widths, bool printing, bool doubleLines, WebCore::StrokeStyle) final;
void recordDrawDotsForDocumentMarker(const WebCore::FloatRect&, const WebCore::DocumentMarkerLineStyle&) final;
void recordDrawEllipse(const WebCore::FloatRect&) final;
void recordDrawPath(const WebCore::Path&) final;