RESOLVED FIXED 18445
Assertion failure in CSSGradientValue::image() when the body element has a background gradient
https://bugs.webkit.org/show_bug.cgi?id=18445
Summary Assertion failure in CSSGradientValue::image() when the body element has a ba...
mitz
Reported 2008-04-12 15:31:01 PDT
Failing the ASSERT(m_clients.contains(renderer)) in CSSGradientValue::image() because the body's background propagates to the root. See attached test case.
Attachments
Test case (will ASSERT) (114 bytes, text/html)
2008-04-12 15:33 PDT, mitz
no flags
testcases for gradient and canvas on body (1.33 KB, patch)
2008-12-03 18:14 PST, Dean Jackson
no flags
Change paintFillLayerExtended() to use body's renderer as the StyleImage client when the background is propagated from body to root (155.19 KB, patch)
2009-05-30 00:04 PDT, mitz
simon.fraser: review+
mitz
Comment 1 2008-04-12 15:33:58 PDT
Created attachment 20494 [details] Test case (will ASSERT)
mitz
Comment 2 2008-05-13 08:40:38 PDT
*** Bug 19030 has been marked as a duplicate of this bug. ***
Adam Roben (:aroben)
Comment 3 2008-05-13 08:41:39 PDT
Dean Jackson
Comment 4 2008-12-03 18:12:38 PST
Note that -webkit-canvas has the same problem. ASSERT(m_clients.contains(renderer)); in CSSCanvasValue::image There are a few options. 1. add the canvas and gradient as clients before asking for the images. I expect this wastes memory in the case where a canvas/gradient is set on the body, then removed. 2. remove the asserts. Since gradient calls getImage and it causes the renderer to be added as a client I don't think it is a big deal, but I didn't investigate much. I didn't try this with canvas. 3. Work out why body elements are not doing the right thing with updateFillImages from RenderObject::setStyle, which is where other elements add gradients and canvas as clients.
Dean Jackson
Comment 5 2008-12-03 18:14:55 PST
Created attachment 25730 [details] testcases for gradient and canvas on body here are two layout tests that will trigger the assert
mitz
Comment 6 2008-12-03 18:33:11 PST
(In reply to comment #4) > 3. Work out why body elements are not doing the right thing with > updateFillImages from RenderObject::setStyle, which is where other elements add > gradients and canvas as clients. I think this is the first option to pursue. If I am not mistaken, it has to do with the special rules for background-image propagation from <body> to <html>.
mitz
Comment 7 2009-05-30 00:04:01 PDT
Created attachment 30802 [details] Change paintFillLayerExtended() to use body's renderer as the StyleImage client when the background is propagated from body to root
Simon Fraser (smfr)
Comment 8 2009-05-30 08:44:06 PDT
Comment on attachment 30802 [details] Change paintFillLayerExtended() to use body's renderer as the StyleImage client when the background is propagated from body to root r=me
mitz
Comment 9 2009-05-30 10:58:04 PDT
Note You need to log in before you can comment on or make changes to this bug.