[Webkit-unassigned] [Bug 36208] New: dispatchDidFinishLoad() gets called before all resources finished loaded if another frame is loading the same resources

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Mar 16 22:11:44 PDT 2010


https://bugs.webkit.org/show_bug.cgi?id=36208

           Summary: dispatchDidFinishLoad() gets called before all
                    resources finished loaded if another frame is loading
                    the same resources
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Page Loading
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: mitz at webkit.org


Created an attachment (id=50874)
 --> (https://bugs.webkit.org/attachment.cgi?id=50874)
Sample project

Under certain conditions, dispatchDidFinishLoad() may get called on a
FrameLoaderClient before all the frame’s resources have actually finished
loading. Specifically, the scenario is as follows:
1. Frame A’s main resource begins loading
2. Frame A kicks off loading of subresource R
3. Frame B’s main resource begins loading
4. Frame B requests the same subresource R
5. Frame B’s main resource finishes loading

At that point, frame B’s FrameLoadClient will get dispatchDidFinishLoad(), even
though resource R has not finished loading.

The reason for this is that Frame B’s DocumentLoader doesn’t track the loading
of R, since the Cache::requestResource() returns an already-loading resource
(whose ResourceLoader is tracked by Frame A’s DocumentLoader). Thus when Frame
B’s main resource finishes loading, its DocumentLoader sees no subresource
loaders in progress, and that allows the didFinishLoad to be dispatched.

The attached project demonstrates this on Mac OS X. Open the project and build
DidNotQuiteFinishLoading. Then copy file1.html, file2.html and common.css into
your working directory and run DidNotQuiteFinishLoading. A printed value of
rgb(0, 0, 0) indicates that Frame B’s didFinishLoading occurred before the
style sheet had actually finished loading. A result of rgb(255, 0, 0) would be
correct.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list