2010-07-16 Maciej Stachowiak <mjs@apple.com>
authormjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Jul 2010 00:15:31 +0000 (00:15 +0000)
committermjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Jul 2010 00:15:31 +0000 (00:15 +0000)
        Reviewed by Sam Weinig.

        Asynchronous policy checks make FrameLoader think it is done loading prematurely
        https://bugs.webkit.org/show_bug.cgi?id=42489

        This caused many (~100) layout tsts to fail under WebKit2.

        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::loadSubframe): Right after loading a new subframe,
        if m_complete is true, do not consider it done if it has a provisional loader.
        This will happen in the case where the policy check is asynchronous.
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::subframeIsLoading): For similar reasons,
        consider a subframe to be loading if it has a policy decision pending.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63620 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/loader/FrameLoader.cpp
WebCore/loader/SubframeLoader.cpp

index 5571fb21d0496b61a9cd9f9d172fc35b3467cf57..982e6579daddd87cd387486ac6821d0717120ca4 100644 (file)
@@ -1,3 +1,20 @@
+2010-07-16  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Asynchronous policy checks make FrameLoader think it is done loading prematurely
+        https://bugs.webkit.org/show_bug.cgi?id=42489
+
+        This caused many (~100) layout tsts to fail under WebKit2.
+
+        * loader/SubframeLoader.cpp:
+        (WebCore::SubframeLoader::loadSubframe): Right after loading a new subframe,
+        if m_complete is true, do not consider it done if it has a provisional loader.
+        This will happen in the case where the policy check is asynchronous.
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::subframeIsLoading): For similar reasons,
+        consider a subframe to be loading if it has a policy decision pending.
+
 2010-07-15  Qi Zhang  <qi.2.zhang@nokia.com>
 
         Reviewed by Kenneth Rohde Christiansen.
index 51a069509b7e98ff2aa9ae2a873640e18642dad2..361e9cd2e63df280c77ada17dd729bbb05f67aac 100644 (file)
@@ -2333,6 +2333,9 @@ bool FrameLoader::subframeIsLoading() const
         documentLoader = childLoader->provisionalDocumentLoader();
         if (documentLoader && documentLoader->isLoadingInAPISense())
             return true;
+        documentLoader = childLoader->policyDocumentLoader();
+        if (documentLoader)
+            return true;
     }
     return false;
 }
index f5a4c18c748de2d3775e7d5603c8c4db8b612bcc..f5ced183406b7ec0747819a01b17a29fc1c4cb15 100644 (file)
@@ -272,7 +272,7 @@ Frame* SubframeLoader::loadSubframe(HTMLFrameOwnerElement* ownerElement, const K
     // FIXME: In this case the Frame will have finished loading before 
     // it's being added to the child list. It would be a good idea to
     // create the child first, then invoke the loader separately.
-    if (frame->loader()->state() == FrameStateComplete)
+    if (frame->loader()->state() == FrameStateComplete && !frame->loader()->policyDocumentLoader())
         frame->loader()->checkCompleted();
 
     return frame.get();