Bug 76447 changed the way RenderSVGRoot figures out its size. Previously RenderSVGRoot directly called out to the ownerRenderer (RenderEmbeddedObject) to compute its replaced size when embedded through eg. <object> element, which was quite hacky. It now relies on the ownerRenderers availableLogicalWidth/Height to be correctly set, which requires that the ownerRenderer is always laid out before the RenderSVGRoot and not the other way round. This is the source of current flakiness bugs. In trunk FrameView contains several special hacks, to layout the ownerRenderers view, after the RenderSVGRoots view finished layout. This worked without flakiness as RenderSVGRoot used to directly call computeReplacedLogicalWidth/Height on the ownerRenderer, which is now gone. Fortunately we can keep the new design, and can remove all hacks out of RenderSVGRoot/FrameView, if we can guarantee that the ownerRenderer FrameView is laid out before the RenderSVGRoot FrameView. I have a patch doing this, and it works nicely, finally removing the FrameView hacks, that had to be invented before, to make the size negotiation work within the old design.
Created attachment 124115 [details] Patch
*** Bug 66320 has been marked as a duplicate of this bug. ***
*** Bug 77061 has been marked as a duplicate of this bug. ***
Comment on attachment 124115 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=124115&action=review r=me > Source/WebCore/page/FrameView.cpp:912 > + // If the embedded SVG document appears the first time, the ownerRenderer has releady finished Typo, already. > Source/WebCore/page/FrameView.cpp:913 > + // layout without knowing about the existance of the embedded SVG document, because RenderReplaced Typo, existence. > LayoutTests/ChangeLog:8 > + Introduce a testcase that fails reproducable w/o needed guard malloc, if we ever regress <object> sizing again. Typo, reproducibly.
Committed r106001: <http://trac.webkit.org/changeset/106001>
Comment on attachment 124115 [details] Patch Thanks for the quick review! Fixed your comments.