⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 106725 in webkit


Ignore:
Timestamp:
Feb 3, 2012, 6:01:27 PM (15 years ago)
Author:
Beth Dakin
Message:

https://bugs.webkit.org/show_bug.cgi?id=77782
WebPageProxy::didNewFirstVisuallyNonEmptyLayout should is called more than
once on some pages with frames
-and corresponding-
<rdar://problem/10798474>

Reviewed by Sam Weinig.

Source/WebCore:

startCountingRelevantRepaintedObjects() should only be called for the main
frame. Otherwise, the counter will be re-set inappropriately, and
didNewFirstVisuallyNonEmptyLayout may even end up firing more than once.

  • page/FrameView.cpp:

(WebCore::FrameView::performPostLayoutTasks):

Tools:

One new test.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp: Added.

(TestWebKitAPI):
(TestWebKitAPI::didForceRepaint):
(TestWebKitAPI::didFinishLoadForFrame):
(TestWebKitAPI::didNewFirstVisuallyNonEmptyLayout):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp: Added.

(TestWebKitAPI):
(NewFirstVisuallyNonEmptyLayoutFramesTest):
(TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::NewFirstVisuallyNonEmptyLayoutFramesTest):
(TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::didCreatePage):

  • TestWebKitAPI/Tests/WebKit2/lots-of-iframes.html: Added.
Location:
trunk
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r106724 r106725  
     12012-02-03  Beth Dakin  <bdakin@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=77782
     4        WebPageProxy::didNewFirstVisuallyNonEmptyLayout should is called more than
     5        once on some pages with frames
     6        -and corresponding-
     7        <rdar://problem/10798474>
     8
     9        Reviewed by Sam Weinig.
     10
     11        startCountingRelevantRepaintedObjects() should only be called for the main
     12        frame. Otherwise, the counter will be re-set inappropriately, and
     13        didNewFirstVisuallyNonEmptyLayout may even end up firing more than once.
     14        * page/FrameView.cpp:
     15        (WebCore::FrameView::performPostLayoutTasks):
     16
    1172012-02-03  Benjamin Poulain  <bpoulain@apple.com>
    218
  • trunk/Source/WebCore/page/FrameView.cpp

    r106690 r106725  
    22812281            m_firstLayoutCallbackPending = false;
    22822282            m_frame->loader()->didFirstLayout();
    2283             if (Page* page = m_frame->page())
    2284                 page->startCountingRelevantRepaintedObjects();
     2283            if (Page* page = m_frame->page()) {
     2284                if (page->mainFrame() == m_frame)
     2285                    page->startCountingRelevantRepaintedObjects();
     2286            }
    22852287        }
    22862288
  • trunk/Tools/ChangeLog

    r106721 r106725  
     12012-02-03  Beth Dakin  <bdakin@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=77782
     4        WebPageProxy::didNewFirstVisuallyNonEmptyLayout should is called more than
     5        once on some pages with frames
     6        -and corresponding-
     7        <rdar://problem/10798474>
     8
     9        Reviewed by Sam Weinig.
     10
     11        One new test.
     12        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     13        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp: Added.
     14        (TestWebKitAPI):
     15        (TestWebKitAPI::didForceRepaint):
     16        (TestWebKitAPI::didFinishLoadForFrame):
     17        (TestWebKitAPI::didNewFirstVisuallyNonEmptyLayout):
     18        (TestWebKitAPI::setPageLoaderClient):
     19        (TestWebKitAPI::TEST):
     20        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp: Added.
     21        (TestWebKitAPI):
     22        (NewFirstVisuallyNonEmptyLayoutFramesTest):
     23        (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::NewFirstVisuallyNonEmptyLayoutFramesTest):
     24        (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::didCreatePage):
     25        * TestWebKitAPI/Tests/WebKit2/lots-of-iframes.html: Added.
     26
    1272012-02-03  Dirk Pranke  <dpranke@chromium.org>
    228
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r106577 r106725  
    4242                52E5CE4914D21EAB003B2BD8 /* ParentFrame_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52E5CE4814D21EAB003B2BD8 /* ParentFrame_Bundle.cpp */; };
    4343                81B50193140F232300D9EB58 /* StringBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81B50192140F232300D9EB58 /* StringBuilder.cpp */; };
     44                9361002914DC95A70061379D /* lots-of-iframes.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9361002814DC957B0061379D /* lots-of-iframes.html */; };
    4445                939BA91714103412001A01BD /* DeviceScaleFactorOnBack.mm in Sources */ = {isa = PBXBuildFile; fileRef = 939BA91614103412001A01BD /* DeviceScaleFactorOnBack.mm */; };
    4546                93F1DB3114DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB3014DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp */; };
     
    4748                93F1DB5514DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB5414DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp */; };
    4849                93F1DB5714DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB5614DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp */; };
     50                93F7E86C14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F7E86B14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp */; };
     51                93F7E86F14DC8E5C00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F7E86E14DC8E5B00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp */; };
    4952                A7A966DB140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A966DA140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp */; };
    5053                BC029B181486AD6400817DA9 /* RetainPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC029B161486AD6400817DA9 /* RetainPtr.cpp */; };
     
    148151                                1A9E52C913E65EF4006917F5 /* 18-characters.html in Copy Resources */,
    149152                                C07E6CB213FD73930038B22B /* devicePixelRatio.html in Copy Resources */,
     153                                9361002914DC95A70061379D /* lots-of-iframes.html in Copy Resources */,
    150154                                33E79E06137B5FD900E32D99 /* mouse-move-listener.html in Copy Resources */,
    151155                                F6FDDDD614241C6F004F1729 /* push-state.html in Copy Resources */,
     
    201205                81B50192140F232300D9EB58 /* StringBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringBuilder.cpp; path = WTF/StringBuilder.cpp; sourceTree = "<group>"; };
    202206                8DD76FA10486AA7600D96B5E /* TestWebKitAPI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TestWebKitAPI; sourceTree = BUILT_PRODUCTS_DIR; };
     207                9361002814DC957B0061379D /* lots-of-iframes.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "lots-of-iframes.html"; sourceTree = "<group>"; };
    203208                939BA91614103412001A01BD /* DeviceScaleFactorOnBack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceScaleFactorOnBack.mm; sourceTree = "<group>"; };
    204209                93F1DB3014DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayout.cpp; sourceTree = "<group>"; };
     
    206211                93F1DB5414DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFails.cpp; sourceTree = "<group>"; };
    207212                93F1DB5614DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp; sourceTree = "<group>"; };
     213                93F7E86B14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFrames.cpp; sourceTree = "<group>"; };
     214                93F7E86E14DC8E5B00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp; sourceTree = "<group>"; };
    208215                A7A966DA140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CheckedArithmeticOperations.cpp; path = WTF/CheckedArithmeticOperations.cpp; sourceTree = "<group>"; };
    209216                BC029B161486AD6400817DA9 /* RetainPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RetainPtr.cpp; sourceTree = "<group>"; };
     
    452459                                93F1DB5414DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp */,
    453460                                93F1DB5614DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp */,
     461                                93F7E86B14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp */,
     462                                93F7E86E14DC8E5B00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp */,
    454463                                BC909779125571AB00083756 /* PageLoadBasic.cpp */,
    455464                                BC2D004812A9FDFA00E732A3 /* PageLoadDidChangeLocationWithinPageForFrame.cpp */,
     
    500509                                1A02C84B125D4A5E00E3F4BD /* find.html */,
    501510                                BCBD372E125ABBE600D2C29F /* icon.png */,
     511                                9361002814DC957B0061379D /* lots-of-iframes.html */,
    502512                                33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */,
    503513                                F6FDDDD514241C48004F1729 /* push-state.html */,
     
    751761                                93F1DB3114DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp in Sources */,
    752762                                93F1DB5514DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp in Sources */,
     763                                93F7E86C14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp in Sources */,
    753764                        );
    754765                        runOnlyForDeploymentPostprocessing = 0;
     
    776787                                93F1DB3414DA20870024C362 /* NewFirstVisuallyNonEmptyLayout_Bundle.cpp in Sources */,
    777788                                93F1DB5714DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp in Sources */,
     789                                93F7E86F14DC8E5C00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp in Sources */,
    778790                        );
    779791                        runOnlyForDeploymentPostprocessing = 0;
Note: See TracChangeset for help on using the changeset viewer.