[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE
From:       David Faure <faure () kde ! org>
Date:       2008-07-02 8:47:20
Message-ID: 1214988440.880986.9277.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 827076 by dfaure:

Fix infinite loop when KHTMLPart is requested to open a directory.
konqueror saw the redirection from $URL to $URL as a jump to anchor, so it didn't \
re-evaluate the mimetype before asking khtmlpart to open the url again. Now khtmlpart \
flags the error, and konqueror tests for a loading error before assuming \
                jump-to-anchor.
BUG: 164495


 M  +3 -2      kdebase/apps/konqueror/src/konqmainwindow.cpp  
 M  +6 -0      kdebase/apps/konqueror/src/konqview.h  
 M  +11 -0     kdebase/apps/konqueror/src/tests/konqhtmltest.cpp  
 M  +1 -0      kdelibs/khtml/khtml_part.cpp  


--- trunk/KDE/kdebase/apps/konqueror/src/konqmainwindow.cpp #827075:827076
@@ -1004,8 +1004,9 @@
 
   // Clicking on a link that points to the page itself (e.g. anchor)
   if ( !browserArgs.doPost() && !args.reload() &&
-          childView && urlcmp( url.url(), childView->url().url(),
-                               KUrl::CompareWithoutTrailingSlash | \
KUrl::CompareWithoutFragment ) ) +       childView && !childView->aborted() && // \
#164495 +       urlcmp( url.url(), childView->url().url(),
+               KUrl::CompareWithoutTrailingSlash | KUrl::CompareWithoutFragment ) )
   {
     QString serviceType = args.mimeType();
     if ( serviceType.isEmpty() )
--- trunk/KDE/kdebase/apps/konqueror/src/konqview.h #827075:827076
@@ -237,6 +237,12 @@
    */
   void partDeleted() { m_pPart = 0L; }
 
+    /**
+     * Return true if the loading in the view was aborted due to an error
+     * or to user cancellation
+     */
+    bool aborted() const { return m_bAborted; }
+
   KParts::BrowserExtension *browserExtension() const;
 
   KParts::StatusBarExtension *statusBarExtension() const;
--- trunk/KDE/kdebase/apps/konqueror/src/tests/konqhtmltest.cpp #827075:827076
@@ -40,7 +40,18 @@
         QVERIFY(view->part());
         QVERIFY(QTest::kWaitForSignal(view, SIGNAL(viewCompleted(KonqView*)), \
1000));  QCOMPARE(view->serviceType(), QString("text/html"));
+        //KHTMLPart* part = qobject_cast<KHTMLPart *>(view->part());
+        //QVERIFY(part);
+    }
 
+    void loadDirectory() // #164495
+    {
+        KonqMainWindow mainWindow;
+        mainWindow.openUrl(0, KUrl(QDir::homePath()), "text/html");
+        KonqView* view = mainWindow.currentView();
+        QVERIFY(QTest::kWaitForSignal(view, SIGNAL(viewCompleted(KonqView*)), \
1000)); // error calls openUrlRequest +        QVERIFY(QTest::kWaitForSignal(view, \
SIGNAL(viewCompleted(KonqView*)), 1000)); // which then opens the right part +        \
QCOMPARE(view->serviceType(), QString("inode/directory"));  }
 
     void rightClickClose() // #149736
--- trunk/KDE/kdelibs/khtml/khtml_part.cpp #827075:827076
@@ -1806,6 +1806,7 @@
     // a directory...
     if (job->error() == KIO::ERR_IS_DIRECTORY)
     {
+      emit canceled( job->errorString() );
       emit d->m_extension->openUrlRequest( d->m_workingURL );
     }
     else


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic