Reviewed by Darin.
[WebKit-https.git] / WebCore / khtml / misc / loader.cpp
index d548d38c6df4a3ec0ce26d2a9755119f61590f0a..24a008a4b310aba7f1e0568967cd68941b4874f3 100644 (file)
@@ -1257,6 +1257,7 @@ DocLoader::DocLoader(KHTMLPart* part, DocumentImpl* doc)
     m_showAnimations = KHTMLSettings::KAnimationEnabled;
     m_part = part;
     m_doc = doc;
+    m_loadInProgress = false;
 
 #if APPLE_CHANGES
     Cache::init();
@@ -1469,6 +1470,11 @@ void DocLoader::removeCachedObject( CachedObject* o ) const
     m_docObjects.removeRef( o );
 }
 
+void DocLoader::setLoadInProgress(bool load)
+{
+    m_loadInProgress = load;
+}
+
 // ------------------------------------------------------------------------------------------
 
 Loader::Loader() : QObject()
@@ -1571,7 +1577,7 @@ void Loader::slotFinished( KIO::Job* job)
 
   if ( !r )
     return;
-
+  
   if (j->error() || j->isErrorPage())
   {
       kdDebug(6060) << "Loader::slotFinished, with error. job->error()= " << j->error() << " job->isErrorPage()=" << j->isErrorPage() << endl;
@@ -1580,8 +1586,7 @@ void Loader::slotFinished( KIO::Job* job)
   }
   else
   {
-      r->object->data(r->m_buffer, true);
-
+      r->object->data(r->m_buffer, true);  
       emit requestDone( r->m_docLoader, r->object );
       time_t expireDate = j->queryMetaData("expire-date").toLong();
 kdDebug(6060) << "Loader::slotFinished, url = " << j->url().url() << " expires " << ctime(&expireDate) << endl;
@@ -1620,16 +1625,19 @@ void Loader::slotFinished( KIO::Job* job, NSData *allData)
             callback->handleError();
         }
         else {
+            docLoader->setLoadInProgress(true);
             r->object->error( job->error(), job->errorText().ascii() );
+            docLoader->setLoadInProgress(false);
             emit requestFailed( docLoader, object );
             Cache::removeCacheEntry( object );
         }
     }
     else {
+        docLoader->setLoadInProgress(true);
         object->data(r->m_buffer, true);
-
         r->object->setAllData(allData);
-
+        docLoader->setLoadInProgress(false);
+        
         // Let the background image decoder trigger the done signal.
         if (!backgroundImageDecoding)
             emit requestDone( docLoader, object );
@@ -1706,6 +1714,9 @@ int Loader::numRequests( DocLoader* dl ) const
             res++;
 #endif
 
+    if (dl->loadInProgress())
+        res++;
+        
     return res;
 }