fast/css/paint-order-shadow.html [ ImageOnlyFailure ] imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/mathml/relations/css-styling/color-005.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-inline.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-writing-modes.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-variables/vars-font-shorthand-001.html [ ImageOnlyFailure ]
<rdar://problem/89196794>
obb-paintserver.html turns into a Crash, and paint-order-shadow.html still fails, but the others are resolved with the patch for 237728.
The crash in orb-paintserver.html is fixed. It was happening because of infinite recursion. It was happening because of this new function inline bool operator==(const std::variant<Ref<Gradient>, Ref<Pattern>>& a, const std::variant<Ref<Gradient>, Ref<Pattern>>& b) { return WTF::switchOn(a, [&] (const Ref<Gradient>& aGradient) { if (auto* bGradient = std::get_if<Ref<Gradient>>(&b)) return aGradient == *bGradient; return false; }, [&] (const Ref<Pattern>& aPattern) { if (auto* bPattern = std::get_if<Ref<Pattern>>(&b)) return aPattern == *bPattern; return false; } ); } The equality in "return aPattern == *bPattern;" was causing the recursion. Ref<Pattern> was converted to std::variant<Ref<Gradient>, Ref<Pattern>> so the function was calling itself infinitely. The fix is not to compare Ref<Pattern> but to compare the raw pointers: "return aPattern.ptr() == bPattern->ptr();"
Can we use arePointingToEqualData() here?
Remaining failures: https://results.webkit.org/?suite=layout-tests&suite=layout-tests&test=fast%2Fcss%2Fpaint-order-shadow.html&test=imported%2Fblink%2Fsvg%2Ftext%2Fobb-paintserver.html fast/css/paint-order-shadow.html [ ImageOnlyFailure ] imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ]
The failure: imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ] is tracked by bug 236924. Let this bug track the failure: imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ]
Created attachment 456432 [details] Patch
Comment on attachment 456432 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=456432&action=review > Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:51 > Recorder::Recorder(const GraphicsContextState& state, const FloatRect& initialClip, const AffineTransform& initialCTM, DrawGlyphsRecorder::DeconstructDrawGlyphs deconstructDrawGlyphs) > : GraphicsContext(state) > - , m_drawGlyphsRecorder(*this, deconstructDrawGlyphs) > + , m_drawGlyphsRecorder(*this, initialCTM.xScale(), deconstructDrawGlyphs) Does this do the right thing when zoomed?
Created attachment 456531 [details] Patch
Comment on attachment 456432 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=456432&action=review >> Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:51 >> + , m_drawGlyphsRecorder(*this, initialCTM.xScale(), deconstructDrawGlyphs) > > Does this do the right thing when zoomed? yes
Committed r292294 (249192@main): <https://commits.webkit.org/249192@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 456531 [details].