2006-10-12 Nikolas Zimmermann <zimmermann@kde.org>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Oct 2006 01:31:34 +0000 (01:31 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Oct 2006 01:31:34 +0000 (01:31 +0000)
        Reviewed by Maciej.

        Trying to fix "DRT hangs on certain testcases" like fast/dom/Document/document-reopen.html
        document.open(); document.write(..); and NO document.close(). On the Qt platform this
        leaves a HTMLDocument which is still in parsing mode (parsing() always returns true).
        DRT waits forever, but m_frame->isComplete() is never true due the parsing mode problem.

        Hmpf, this took me nine hours to debug today.
        Result: Couldn't find the real fix, going for a workaround for now.

        540 minutes, 1 line of code changed after all -> 0,0019 lines per minute.

        * platform/qt/FrameQt.cpp:
        (WebCore::FrameQt::handledOnloadEvents): Call endIfNotLoading() manually.
        * platform/qt/FrameQtClient.cpp:
        (WebCore::FrameQtClientDefault::receivedData): Use write() again instead of addData().

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

WebCore/ChangeLog
WebCore/platform/qt/FrameQt.cpp
WebCore/platform/qt/FrameQtClient.cpp

index da3129a8fca562b2c64b504a1ea5e6ac54b694db..95815c9bfbe8a7f40237d52da2f33c2394454807 100644 (file)
@@ -1,3 +1,22 @@
+2006-10-12  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Maciej.
+
+        Trying to fix "DRT hangs on certain testcases" like fast/dom/Document/document-reopen.html
+        document.open(); document.write(..); and NO document.close(). On the Qt platform this
+        leaves a HTMLDocument which is still in parsing mode (parsing() always returns true).
+        DRT waits forever, but m_frame->isComplete() is never true due the parsing mode problem.
+
+        Hmpf, this took me nine hours to debug today.
+        Result: Couldn't find the real fix, going for a workaround for now.
+        
+        540 minutes, 1 line of code changed after all -> 0,0019 lines per minute.
+
+        * platform/qt/FrameQt.cpp:
+        (WebCore::FrameQt::handledOnloadEvents): Call endIfNotLoading() manually.
+        * platform/qt/FrameQtClient.cpp:
+        (WebCore::FrameQtClientDefault::receivedData): Use write() again instead of addData().
+
 2006-10-12  Adam Roben  <aroben@apple.com>
 
         Reviewed by Adele.
 2006-10-12  Adam Roben  <aroben@apple.com>
 
         Reviewed by Adele.
index d92d6712112ed88724ddb7b496f9e98f915ae309..d9a0d473f08683162d75ef703ce6fe7333140b3f 100644 (file)
@@ -446,7 +446,13 @@ bool FrameQt::canGoBackOrForward(int distance) const
 
 void FrameQt::handledOnloadEvents()
 {
 
 void FrameQt::handledOnloadEvents()
 {
-    // no-op
+    // TODO: FrameMac doesn't need that - it seems.
+    // It must be handled differently, can't figure it out.
+    // If we won't call this here doc->parsing() remains 'true'
+    // all the time. Calling document.open(); document.write(...)
+    // from JavaScript leaves the parsing state 'true', and DRT will
+    // hang on these tests (fast/dom/Document/document-reopen.html for instance)
+    endIfNotLoading();
 }
 
 bool FrameQt::canPaste() const
 }
 
 bool FrameQt::canPaste() const
index 7475e97c736b000f89d3cb8e47062d949a710c92..e4941b5da00420be75e1d17f86bad829d4b38ecd 100644 (file)
@@ -98,7 +98,7 @@ void FrameQtClientDefault::receivedData(ResourceLoader* job, const char* data, i
     m_frame->setEncoding(d->m_charset, false);
 
     // Feed with new data
     m_frame->setEncoding(d->m_charset, false);
 
     // Feed with new data
-    m_frame->addData(data, length);
+    m_frame->write(data, length);
 }
 
 void FrameQtClientDefault::receivedAllData(ResourceLoader* job, PlatformData data)
 }
 
 void FrameQtClientDefault::receivedAllData(ResourceLoader* job, PlatformData data)