[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 15:37:08 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 1f584b4157c744cf794d23d8b7d77b1bfd2807ba
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 9 13:01:21 2010 +0000

    2010-11-09  Jenn Braithwaite  <jennb at chromium.org>
    
            Reviewed by Dmitry Titov.
    
            Update ProgressTracker when moving a frame between documents
            https://bugs.webkit.org/show_bug.cgi?id=48368
    
            No new tests. andersca informs me it's not possible to test
            ProgressTracker changes via layouttests. Review extra carefully...
    
            * loader/DocumentLoader.cpp:
            (WebCore::DocumentLoader::transferLoadingResourcesFromPage):
            Changed to use FrameLoader to deliver the notification to the
            client via the notifier.
            * loader/FrameLoader.cpp:
            (WebCore::FrameLoader:;transferLoadingResourcesFromPage):
            Update old and new progress tracker about frame progress.
            (WebCore::FrameLoader::dispatchTransferLoadingResourceFromPage):
            Added to route notification via the notifier.
            * loader/FrameLoader.h:
            * loader/ProgressTracker.cpp:
            (WebCore::ProgressTracker::completeProgress):
            Comment change only.
            * loader/ResourceLoadNotifier.cpp:
            (WebCore::ResourceLoadNotifier::dispatchTransferLoadingResourceFromPage):
            Added to provide one place to notify client and progress tracker -
            and probably inspector controller (separate patch).
            * loader/ResourceLoadNotifier.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71625 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 229a85d..19c653d 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,32 @@
+2010-11-09  Jenn Braithwaite  <jennb at chromium.org>
+
+        Reviewed by Dmitry Titov.
+
+        Update ProgressTracker when moving a frame between documents
+        https://bugs.webkit.org/show_bug.cgi?id=48368
+
+        No new tests. andersca informs me it's not possible to test
+        ProgressTracker changes via layouttests. Review extra carefully...
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::transferLoadingResourcesFromPage):
+        Changed to use FrameLoader to deliver the notification to the
+        client via the notifier.
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader:;transferLoadingResourcesFromPage):
+        Update old and new progress tracker about frame progress.
+        (WebCore::FrameLoader::dispatchTransferLoadingResourceFromPage):
+        Added to route notification via the notifier.
+        * loader/FrameLoader.h:
+        * loader/ProgressTracker.cpp:
+        (WebCore::ProgressTracker::completeProgress):
+        Comment change only.
+        * loader/ResourceLoadNotifier.cpp:
+        (WebCore::ResourceLoadNotifier::dispatchTransferLoadingResourceFromPage):
+        Added to provide one place to notify client and progress tracker -
+        and probably inspector controller (separate patch).
+        * loader/ResourceLoadNotifier.h:
+
 2010-11-09  Dai Mikurube  <dmikurube at google.com>
 
         Reviewed by Kent Tamura.
diff --git a/WebCore/loader/DocumentLoader.cpp b/WebCore/loader/DocumentLoader.cpp
index 19a55ef..7e4b1d9 100644
--- a/WebCore/loader/DocumentLoader.cpp
+++ b/WebCore/loader/DocumentLoader.cpp
@@ -791,10 +791,12 @@ void DocumentLoader::transferLoadingResourcesFromPage(Page* oldPage)
 {
     ASSERT(oldPage != m_frame->page());
 
-    FrameLoaderClient* frameLoaderClient = frameLoader()->client();
+    FrameLoader* loader = frameLoader();
+    ASSERT(loader);
+
     const ResourceRequest& request = originalRequest();
     if (isLoadingMainResource()) {
-        frameLoaderClient->transferLoadingResourceFromPage(
+        loader->dispatchTransferLoadingResourceFromPage(
             m_mainResourceLoader->identifier(), this, request, oldPage);
     }
 
@@ -802,7 +804,7 @@ void DocumentLoader::transferLoadingResourcesFromPage(Page* oldPage)
         ResourceLoaderSet::const_iterator it = m_subresourceLoaders.begin();
         ResourceLoaderSet::const_iterator end = m_subresourceLoaders.end();
         for (; it != end; ++it) {
-            frameLoaderClient->transferLoadingResourceFromPage(
+            loader->dispatchTransferLoadingResourceFromPage(
                 (*it)->identifier(), this, request, oldPage);
         }
     }
diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
index ed988dd..c48ca30 100644
--- a/WebCore/loader/FrameLoader.cpp
+++ b/WebCore/loader/FrameLoader.cpp
@@ -1747,8 +1747,17 @@ bool FrameLoader::frameHasLoaded() const
 void FrameLoader::transferLoadingResourcesFromPage(Page* oldPage)
 {
     ASSERT(oldPage != m_frame->page());
-    if (isLoading())
+    if (isLoading()) {
         activeDocumentLoader()->transferLoadingResourcesFromPage(oldPage);
+        oldPage->progress()->progressCompleted(m_frame);
+        if (m_frame->page())
+            m_frame->page()->progress()->progressStarted(m_frame);
+    }
+}
+
+void FrameLoader::dispatchTransferLoadingResourceFromPage(unsigned long identifier, DocumentLoader* docLoader, const ResourceRequest& request, Page* oldPage)
+{
+    notifier()->dispatchTransferLoadingResourceFromPage(identifier, docLoader, request, oldPage);
 }
 
 void FrameLoader::setDocumentLoader(DocumentLoader* loader)
diff --git a/WebCore/loader/FrameLoader.h b/WebCore/loader/FrameLoader.h
index 57ba07a..9ebef29 100644
--- a/WebCore/loader/FrameLoader.h
+++ b/WebCore/loader/FrameLoader.h
@@ -134,6 +134,7 @@ public:
     bool isLoading() const;
     bool frameHasLoaded() const;
     void transferLoadingResourcesFromPage(Page*);
+    void dispatchTransferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*);
 
     int numPendingOrLoadingRequests(bool recurse) const;
     String referrer() const;
diff --git a/WebCore/loader/ProgressTracker.cpp b/WebCore/loader/ProgressTracker.cpp
index 6bc2055..cd15433 100644
--- a/WebCore/loader/ProgressTracker.cpp
+++ b/WebCore/loader/ProgressTracker.cpp
@@ -241,7 +241,7 @@ void ProgressTracker::completeProgress(unsigned long identifier)
 {
     ProgressItem* item = m_progressItems.get(identifier);
     
-    // FIXME: Can this happen?
+    // This can happen if a load fails without receiving any response data.
     if (!item)
         return;
     
diff --git a/WebCore/loader/ResourceLoadNotifier.cpp b/WebCore/loader/ResourceLoadNotifier.cpp
index b32b737..d002ef3 100644
--- a/WebCore/loader/ResourceLoadNotifier.cpp
+++ b/WebCore/loader/ResourceLoadNotifier.cpp
@@ -160,6 +160,14 @@ void ResourceLoadNotifier::dispatchDidFinishLoading(DocumentLoader* loader, unsi
 #endif
 }
 
+void ResourceLoadNotifier::dispatchTransferLoadingResourceFromPage(unsigned long identifier, DocumentLoader* loader, const ResourceRequest& request, Page* oldPage)
+{
+    ASSERT(oldPage != m_frame->page());
+    m_frame->loader()->client()->transferLoadingResourceFromPage(identifier, loader, request, oldPage);
+
+    oldPage->progress()->completeProgress(identifier);
+}
+
 void ResourceLoadNotifier::sendRemainingDelegateMessages(DocumentLoader* loader, unsigned long identifier, const ResourceResponse& response, int length, const ResourceError& error)
 {
     if (!response.isNull())
diff --git a/WebCore/loader/ResourceLoadNotifier.h b/WebCore/loader/ResourceLoadNotifier.h
index 93fcccc..2f10856 100644
--- a/WebCore/loader/ResourceLoadNotifier.h
+++ b/WebCore/loader/ResourceLoadNotifier.h
@@ -37,6 +37,7 @@ namespace WebCore {
 class AuthenticationChallenge;
 class DocumentLoader;
 class Frame;
+class Page;
 class ResourceError;
 class ResourceLoader;
 class ResourceResponse;
@@ -60,6 +61,7 @@ public:
     void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&);
     void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int length);
     void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier, double finishTime);
+    void dispatchTransferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*);
 
     void sendRemainingDelegateMessages(DocumentLoader*, unsigned long identifier, const ResourceResponse&, int length, const ResourceError&);
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list