RESOLVED FIXED 42046
connect-compositing-iframe2.html test sometimes shows blank iframe content
https://bugs.webkit.org/show_bug.cgi?id=42046
Summary connect-compositing-iframe2.html test sometimes shows blank iframe content
Simon Fraser (smfr)
Reported 2010-07-11 11:57:07 PDT
If you reload connect-compositing-iframe2.html after some other test files, sometimes the iframe content is missing.
Attachments
Patch (7.97 KB, patch)
2010-07-29 21:04 PDT, Simon Fraser (smfr)
no flags
Patch (9.48 KB, patch)
2010-07-30 15:24 PDT, Simon Fraser (smfr)
darin: review+
Simon Fraser (smfr)
Comment 1 2010-07-29 17:03:11 PDT
The SyntheticStyleChange is getting clobbered by a FullStyleChange when the class attribute changes, with the result that we don't call styleChanged on the RenderLayer.
Simon Fraser (smfr)
Comment 2 2010-07-29 21:04:06 PDT
Simon Fraser (smfr)
Comment 3 2010-07-29 21:26:33 PDT
Mitz says that setNeedsStyleRecalc() should ASSERT(changeType != NoStyleChange).
WebKit Review Bot
Comment 4 2010-07-29 22:37:31 PDT
Darin Adler
Comment 5 2010-07-29 23:30:31 PDT
Comment on attachment 63024 [details] Patch Two thoughts on how to refine this further: 1) setNeedsStyleRecalc no longer seems like a great name to me since this doesn't set a flag named "setNeedsStyleRecalc". It's still a bit like setNeedsDisplayInRect, so I guess we can leave the name along. But maybe we can find a better name. 2) setNeedsStyleRecalc should assert that changeType is != NoStyleChange, in case we missed any callers who need to call the new function. The setStyleChange function can't be called outside of Node.cpp because it's defined inside the file and marked inline. Thus if you want to call it from clearNeedsStyleRecalc you need to either move Node::setStyleChange to the header or move the body of clearNeedsStyleRecalc into the .cpp file and make it non-inline. Or you could write this: void clearNeedsStyleRecalc() { m_nodeFlags &= ~StyleChangeMask; } Which would have the added benefit of being more efficient. review- since it breaks the build as-is
Simon Fraser (smfr)
Comment 6 2010-07-30 08:41:45 PDT
(In reply to comment #5) > The setStyleChange function can't be called outside of Node.cpp because it's defined inside the file and marked inline. Thus if you want to call it from clearNeedsStyleRecalc you need to either move Node::setStyleChange to the header or move the body of clearNeedsStyleRecalc into the .cpp file and make it non-inline. I added + void clearNeedsStyleRecalc() { setStyleChange(NoStyleChange); } to Node.h. This patch builds just fine (all the tests pass with it). I agree with the rest of your feedback.
Simon Fraser (smfr)
Comment 7 2010-07-30 10:42:26 PDT
(In reply to comment #6) > This patch builds just fine (all the tests pass with it). I agree with the rest of your feedback. Ah, but I didn't build Release, so the inline didn't kick in. I see now.
Simon Fraser (smfr)
Comment 8 2010-07-30 15:24:24 PDT
Simon Fraser (smfr)
Comment 9 2010-07-30 16:02:50 PDT
Note You need to log in before you can comment on or make changes to this bug.