Source/WebCore: Frame flattening: Do not restart layout from parent frame, when the...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Apr 2012 21:35:08 +0000 (21:35 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Apr 2012 21:35:08 +0000 (21:35 +0000)
commit4db7edeaae750da9d8947b74073582305de4f3e3
tree4a6c61b6fc19e780646b85a0eea34cef166fce0a
parentf160b406f1b40bde8968f5c91a4aca4e46b6adf1
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
LayoutTests/ChangeLog
LayoutTests/http/tests/misc/iframe-flattening-3level-nesting-with-blocking-resource-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/misc/iframe-flattening-3level-nesting-with-blocking-resource.html [new file with mode: 0644]
LayoutTests/http/tests/misc/resources/3rd-level-iframe-with-blocking-resource.php [new file with mode: 0644]
LayoutTests/http/tests/misc/resources/nested-iframe-loading-another-iframe.html [new file with mode: 0644]
LayoutTests/platform/chromium/test_expectations.txt
Source/WebCore/ChangeLog
Source/WebCore/page/FrameView.cpp
Source/WebCore/page/FrameView.h