The LayoutMilestones didLayout callback should only fire for the main frame
authorbdakin@apple.com <bdakin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 12 Aug 2013 21:37:06 +0000 (21:37 +0000)
committerbdakin@apple.com <bdakin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 12 Aug 2013 21:37:06 +0000 (21:37 +0000)
commit411fe24d0c1ef88dc9fc0c7c0429ca67f06385cd
tree18cf75541202ee1956c598e3119989b8bbd3bba1
parentde2c342a9a23d4abc8740cc255d3d4e686ca6f01
The LayoutMilestones didLayout callback should only fire for the main frame
https://bugs.webkit.org/show_bug.cgi?id=119457

Reviewed by Sam Weinig.

Source/WebCore:

This patch makes it so that FrameLoader::didLayout(LayoutMilestones) is only ever
called for the main frame. Technically this will change existing API for
didFirstVisuallyNonEmptyLayoutInFrame and didFirstLayoutInFrame. Clients used to
be able to register for those callbacks for any frame they wanted, however, now
they will only ever get the callback when it applies to the main frame. We think
that this is acceptable since we don’t know of any clients that ever used those
APIs for a non-main frame. This change also makes nothing but sense for the
didLayout(LayoutMilestones) callback, since that is a Page-level concept, so it
should only fire for the main frame.

Only call didLayout for the main frame.
* dom/Document.cpp:
(WebCore::Document::setVisualUpdatesAllowed):

Assert that this is the main frame.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::didLayout):

Only call didLayout for the main frame.
* page/FrameView.cpp:
(WebCore::FrameView::performPostLayoutTasks):

Tools:

Now that the didLayout callback only fires for the main frame, we want to make
sure it will fire even when all of the content is in a subframe.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp: Added.
(TestWebKitAPI::didLayout):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit2/all-content-in-one-iframe.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153958 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/loader/FrameLoader.cpp
Source/WebCore/page/FrameView.cpp
Tools/ChangeLog
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Tools/TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp [new file with mode: 0644]
Tools/TestWebKitAPI/Tests/WebKit2/all-content-in-one-iframe.html [new file with mode: 0644]