Title: [292190] trunk
Revision
292190
Author
[email protected]
Date
2022-03-31 17:28:42 -0700 (Thu, 31 Mar 2022)

Log Message

[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.

Source/WebCore:

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:

Source/WebKit:

* WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordDrawLinesForText):
* WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:

LayoutTests:

Unskip failed text decoration layout tests.

* platform/ios-wk2/TestExpectations:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to