Source/WebCore: Frame flattening: Do not restart layout from parent frame, when the parent is clean.
https://bugs.webkit.org/show_bug.cgi?id=81114
Patch by Zalan Bujtas <zbujtas@gmail.com> on 2012-04-03
Reviewed by Antti Koivisto.
When frame flattening is on, child frames try to mark the ancestors dirty
to be able to restart layout from the main frame. Child frames mark the
anchestors in FrameView::scheduleRelayout(). Marking fails when scheduling is disabled,
for example when the iframe's <head> has blocking resource and the <body> has not
been injected into the document.
When marking ancestor fails, child frame layout needs to continue normally.
It is expected to have layouts, when scheduling is enabled.
Test: http/tests/misc/iframe-flattening-3level-nesting-with-blocking-resource.html
* page/FrameView.cpp:
(WebCore::FrameView::layout):
(WebCore::FrameView::isInChildFrameWithFrameFlattening):
(WebCore):
(WebCore::FrameView::doLayoutWithFrameFlattening):
* page/FrameView.h:
(FrameView):
LayoutTests: Add test case for 3 level nested iframes with frame flattening on.
https://bugs.webkit.org/show_bug.cgi?id=81114
Patch by Zalan Bujtas <zbujtas@gmail.com> on 2012-04-03
Reviewed by Antti Koivisto.
* http/tests/misc/iframe-flattening-3level-nesting-with-blocking-resource-expected.txt: Added.
* http/tests/misc/iframe-flattening-3level-nesting-with-blocking-resource.html: Added.
* http/tests/misc/resources/3rd-level-iframe-with-blocking-resource.php: Added.
* http/tests/misc/resources/nested-iframe-loading-another-iframe.html: Added.
* platform/chromium/test_expectations.txt:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113091
268f45cc-cd09-0410-ab3c-
d52691b4dbfc