Closed Bug 437106 Opened 16 years ago Closed 16 years ago

Bad SVG rendering when element referenced by <use> comes after the <use>

Categories

(Core :: SVG, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: fabrice.tiercelin, Unassigned)

References

()

Details

(Keywords: regression, testcase)

Attachments

(3 files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008051206 Firefox/3.0
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008051206 Firefox/3.0

Here is an example of a badly rendered .svg file (Scalable Vector Graphics) :
http://upload.wikimedia.org/wikipedia/commons/1/17/Construction.svg

Reproducible: Always

Steps to Reproduce:
1. Go to http://upload.wikimedia.org/wikipedia/commons/1/17/Construction.svg
Actual Results:  
http://upload.wikimedia.org/wikipedia/commons/1/17/Construction.svg

Expected Results:  
http://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Construction.svg/48px-Construction.svg.png

This problem may concern more .svg files.
Version: unspecified → 3.0 Branch
Component: File Handling → SVG
Product: Firefox → Core
QA Contact: file.handling → general
Version: 3.0 Branch → unspecified
There is at least one regression range: 
http://bonsai.mozilla.org/cvsquery.cgi?module=PhoenixTinderbox&date=explicit&mindate=1184125200&maxdate=1184129639
This is the range when it really stopped working. But before that range I saw it also sometimes not working. 
The problem seems to have started on 6 May but I'm not 100% sure.
I believe I've seen this kind of bug before.
Blocks: 380028
Someone who actually knows SVG should be able to create a simple DOM-mutation testcase pretty easily, I would think.
Status: UNCONFIRMED → NEW
Ever confirmed: true
This seems to just be down to the document order of elements. (Yuck!) I've reduced the attached testcase to a testcase that uses a <clipPath> containing a <use>. If the element referenced by the <use> comes after the <use>, I see the bug. If the element referenced by the <use> comes before the <use>, everything works fine.
Roc's work on ID matching should fix it in that case. What we have basically is that the document draws without the reference being resolved and then when the reference is resolvable it doesn't cause an update as it should.
> This seems to just be down to the document order of elements.

Yeah.  Did I forget to say that when I attached the testcase?  :(

And yeah, roc's thing will fix this.  The reason it worked in Firefox 2 is that we never started painting SVG until it was all loaded.

Which means we should either take roc's id-matching on the 1.9 branch or disable incremental loading for SVG or something...  At least I think it would be good to not have timing issues like this.
Well I didn't understand "order" dependent from "timing or size" dependent, but all's good. I'd really like to see roc's id-matching patch on 1.9 if at all possible, especially since we worked so hard to fix the bugs that appeared with incremental XML support.
Depends on: 344258
Keywords: testcase
Summary: [Scalable Vector Graphics] .svg bad rendering → Bad SVG rendering when element referenced by <use> comes after the <use>
The id-matching patch could be backported to 1.9 if you take out the part where I refactor nsXULDocument a lot. I'll try to extract the patch and submit it for 1.9.1 today.
I'm guessing you mean 1.9.0.1 / Firefox 3.0.1.  Isn't that a pretty big change for a security-and-stability update?
Keywords: regression
I guess it is. I'm not sure what we should do about 1.9. Maybe we should turn off incremental loading for SVG documents.
Fixed by check-in for bug 344258
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: