Bug 88198

Summary: Non-scaling strokes in patterns assert / render incorrectly
Product: WebKit Reporter: Philip Rogers <pdr>
Component: SVGAssignee: Philip Rogers <pdr>
Status: RESOLVED FIXED    
Severity: Normal CC: jbadics, webkit.review.bot, zimmermann
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Testcase
none
Expose SVGPatternElement's transform, fixing an assertion none

Description Philip Rogers 2012-06-03 14:08:31 PDT
Created attachment 145494 [details]
Testcase

See the attached testcase.

The assert is:
SHOULD NEVER BE REACHED
third_party/WebKit/Source/WebCore/svg/SVGStyledElement.cpp(454) : virtual WebCore::AffineTransform WebCore::SVGStyledElement::localCoordinateSpaceTransform(SVGLocatable::CTMScope) const

Patch forthcoming.
Comment 1 Philip Rogers 2012-06-03 15:04:41 PDT
Created attachment 145495 [details]
Expose SVGPatternElement's transform, fixing an assertion
Comment 2 Dirk Schulze 2012-06-04 06:09:56 PDT
Comment on attachment 145495 [details]
Expose SVGPatternElement's transform, fixing an assertion

According to your description, the same assertion should happen on Mask and ClipPath(maybe not ClipPath), no? r=me for this one. If clipPath and Mask are affected as well, we might refactor the code again.
Comment 3 WebKit Review Bot 2012-06-04 06:23:34 PDT
Comment on attachment 145495 [details]
Expose SVGPatternElement's transform, fixing an assertion

Clearing flags on attachment: 145495

Committed r119391: <http://trac.webkit.org/changeset/119391>
Comment 4 WebKit Review Bot 2012-06-04 06:23:39 PDT
All reviewed patches have been landed.  Closing bug.
Comment 5 János Badics 2012-06-04 07:26:00 PDT
Unfortunately this new test:
svg/stroke/non-scaling-stroke-pattern.svg
fails on Qt, GTK and EFL ports. A new bug has been created for the issue:
https://bugs.webkit.org/show_bug.cgi?id=88230
Comment 6 Philip Rogers 2012-06-04 10:55:45 PDT
Fix for broken Qt/Efl/Gtk failures landed: http://trac.webkit.org/changeset/119402


Dirk,
I looked into doing the same for SVGMaskElement and SVGClipPathElement and this turns out to not be required.
SVGClipPathElement is spec'ed to extend from SVGLocatable which handles the CTM call. SVGMaskElement is spec'ed to _not_ extend from SVGLocatable but in WebKit it actually does extend from SVGStyledLocatableElement so everything works as expected.