[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Thu Apr 8 00:35:51 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit cc4dcb2c8a20b6e9ddce23620b53560726e31267
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 14 22:09:13 2009 +0000

    2009-12-14  Robert Hogan  <robert at roberthogan.net>
    
            Reviewed by Eric Seidel.
    
            [Qt] Fix https://bugs.webkit.org/show_bug.cgi?id=32437
    
            Amend the behaviour of DRT::notifyDone to dump only when
            the page has finished loading.
    
            This fix permits removal of the following tests from the Qt skipped list:
            fast/forms/textarea-linewrap-dynamic.html
            fast/forms/textarea-setvalue-submit.html
            fast/forms/textarea-hard-linewrap-empty.html
            fast/forms/submit-to-url-fragment.html
            http/tests/misc/percent-sign-in-form-field-name.html
            http/tests/security/escape-form-data-field-names.html
    
            However it also requires the following two to be added to the skipped list:
    
            http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
            svg/custom/use-instanceRoot-as-event-target.xhtml
    
            It appears the behaviour of notifyDone was masking problems with these two
            tests.
    
            * platform/qt/Skipped:
    2009-12-14  Robert Hogan  <robert at roberthogan.net>
    
            Reviewed by Eric Seidel.
    
            [Qt] Fix https://bugs.webkit.org/show_bug.cgi?id=32437
    
            Amend the behaviour of DRT::notifyDone to dump only when
            the page has finished loading.
    
            This fix permits removal of the following tests from the Qt skipped list:
            fast/forms/textarea-linewrap-dynamic.html
            fast/forms/textarea-setvalue-submit.html
            fast/forms/textarea-hard-linewrap-empty.html
            fast/forms/submit-to-url-fragment.html
            http/tests/misc/percent-sign-in-form-field-name.html
            http/tests/security/escape-form-data-field-names.html
    
            However it also requires the following two to be added to the skipped list:
    
            http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
            svg/custom/use-instanceRoot-as-event-target.xhtml
    
            It appears the behaviour of notifyDone was masking problems with these two
            tests.
    
            * DumpRenderTree/qt/DumpRenderTree.cpp:
            (WebCore::DumpRenderTree::DumpRenderTree):
            * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
            (LayoutTestController::reset):
            (LayoutTestController::processWork):
            (LayoutTestController::maybeDump):
            (LayoutTestController::notifyDone):
            (LayoutTestController::provisionalLoad):
            * DumpRenderTree/qt/LayoutTestControllerQt.h:
            (LayoutTestController::resetLoadFinished):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52118 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index daf6c7f..6bc21a3 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -2,6 +2,33 @@
 
         Reviewed by Eric Seidel.
 
+        [Qt] Fix https://bugs.webkit.org/show_bug.cgi?id=32437
+        
+        Amend the behaviour of DRT::notifyDone to dump only when
+        the page has finished loading.
+        
+        This fix permits removal of the following tests from the Qt skipped list:
+        fast/forms/textarea-linewrap-dynamic.html
+        fast/forms/textarea-setvalue-submit.html
+        fast/forms/textarea-hard-linewrap-empty.html
+        fast/forms/submit-to-url-fragment.html
+        http/tests/misc/percent-sign-in-form-field-name.html
+        http/tests/security/escape-form-data-field-names.html
+        
+        However it also requires the following two to be added to the skipped list:
+        
+        http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
+        svg/custom/use-instanceRoot-as-event-target.xhtml
+        
+        It appears the behaviour of notifyDone was masking problems with these two
+        tests.
+
+        * platform/qt/Skipped:
+
+2009-12-14  Robert Hogan  <robert at roberthogan.net>
+
+        Reviewed by Eric Seidel.
+
         Bug 32519 -  mouseEvent fires mutiple times in
         LayoutTests/svg/custom/use-instanceRoot-as-event-target.xhtml
         
diff --git a/LayoutTests/platform/qt/Skipped b/LayoutTests/platform/qt/Skipped
index cdb56a7..7024e7a 100644
--- a/LayoutTests/platform/qt/Skipped
+++ b/LayoutTests/platform/qt/Skipped
@@ -4859,12 +4859,8 @@ fast/forms/option-mouseevents.html
 fast/forms/search-abs-pos-cancel-button.html
 fast/forms/slider-transformed.html
 fast/forms/slider-zoomed.html
-fast/forms/submit-to-url-fragment.html
 fast/forms/text-control-intrinsic-widths.html
-fast/forms/textarea-hard-linewrap-empty.html
-fast/forms/textarea-linewrap-dynamic.html
 fast/forms/textarea-metrics.html
-fast/forms/textarea-setvalue-submit.html
 fast/history/back-forward-is-asynchronous.html
 fast/history/window-open.html
 fast/loader/cancel-load-during-port-block-timer.html
@@ -4986,7 +4982,6 @@ http/tests/security/cross-frame-access-put.html
 http/tests/security/cross-origin-xsl-BLOCKED.html
 http/tests/security/dataTransfer-set-data-file-url.html
 http/tests/security/drag-over-remote-content-iframe.html
-http/tests/security/escape-form-data-field-names.html
 http/tests/security/host-compare-case-insensitive.html
 http/tests/security/window-properties-clear-domain.html
 http/tests/security/window-properties-clear-port.html
@@ -5179,10 +5174,6 @@ svg/custom/radial-gradient-with-outstanding-focalPoint.svg
 # This test introduced in r51877
 fast/loader/input-element-page-cache-crash.html
 
-# [Qt][LayoutTestController] Output of document.write() is vanished by waitUntilDone()/notifyDone()
-# https://bugs.webkit.org/show_bug.cgi?id=32437
-http/tests/misc/percent-sign-in-form-field-name.html
-
 # Missing forward entries when dumping back/forward list.
 # https://bugs.webkit.org/show_bug.cgi?id=32470
 http/tests/navigation/dynamic-iframe-dynamic-form-back-entry.html
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 93cc4fa..741c681 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,39 @@
+2009-12-14  Robert Hogan  <robert at roberthogan.net>
+
+        Reviewed by Eric Seidel.
+
+        [Qt] Fix https://bugs.webkit.org/show_bug.cgi?id=32437
+        
+        Amend the behaviour of DRT::notifyDone to dump only when
+        the page has finished loading.
+        
+        This fix permits removal of the following tests from the Qt skipped list:
+        fast/forms/textarea-linewrap-dynamic.html
+        fast/forms/textarea-setvalue-submit.html
+        fast/forms/textarea-hard-linewrap-empty.html
+        fast/forms/submit-to-url-fragment.html
+        http/tests/misc/percent-sign-in-form-field-name.html
+        http/tests/security/escape-form-data-field-names.html
+        
+        However it also requires the following two to be added to the skipped list:
+        
+        http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
+        svg/custom/use-instanceRoot-as-event-target.xhtml
+        
+        It appears the behaviour of notifyDone was masking problems with these two
+        tests.
+
+        * DumpRenderTree/qt/DumpRenderTree.cpp:
+        (WebCore::DumpRenderTree::DumpRenderTree):
+        * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
+        (LayoutTestController::reset):
+        (LayoutTestController::processWork):
+        (LayoutTestController::maybeDump):
+        (LayoutTestController::notifyDone):
+        (LayoutTestController::provisionalLoad):
+        * DumpRenderTree/qt/LayoutTestControllerQt.h:
+        (LayoutTestController::resetLoadFinished):
+
 2009-12-14  Simon Hausmann  <hausmann at webkit.org>
 
         Reviewed by Holger Freyther.
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp
index 6d466bf..a0e1575 100644
--- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp
+++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp
@@ -332,6 +332,10 @@ DumpRenderTree::DumpRenderTree()
 
     connect(m_page, SIGNAL(loadFinished(bool)),
             m_controller, SLOT(maybeDump(bool)));
+    // We need to connect to loadStarted() because notifyDone should only
+    // dump results itself when the last page loaded in the test has finished loading.
+    connect(m_page, SIGNAL(loadStarted()),
+            m_controller, SLOT(resetLoadFinished()));
 
     connect(m_page->mainFrame(), SIGNAL(titleChanged(const QString&)),
             SLOT(titleChanged(const QString&)));
diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp
index 0ea5632..4d05024 100644
--- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp
+++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp
@@ -54,7 +54,8 @@ LayoutTestController::LayoutTestController(WebCore::DumpRenderTree* drt)
 
 void LayoutTestController::reset()
 {
-    m_isLoading = true;
+    m_hasDumped = false;
+    m_loadFinished = false;
     m_textDump = false;
     m_dumpBackForwardList = false;
     m_dumpChildrenAsText = false;
@@ -78,7 +79,7 @@ void LayoutTestController::processWork()
     // if we didn't start a new load, then we finished all the commands, so we're ready to dump state
     if (WorkQueue::shared()->processWork() && !shouldWaitUntilDone()) {
         emit done();
-        m_isLoading = false;
+        m_hasDumped = true;
     }
 }
 
@@ -87,23 +88,20 @@ void LayoutTestController::maybeDump(bool success)
 {
     Q_ASSERT(sender() == m_topLoadingFrame->page());
 
+    m_loadFinished = true;
     // as the function is called on loadFinished, the test might
     // already have dumped and thus no longer be active, thus
     // bail out here.
-    if (!m_isLoading)
+    if (m_hasDumped)
         return;
 
-    m_topLoadingFrame = 0;
     WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue for the rest of this test
-
-    if (!shouldWaitUntilDone()) {
-        if (WorkQueue::shared()->count())
-            QTimer::singleShot(0, this, SLOT(processWork()));
-        else {
-            if (success)
-                emit done();
-            m_isLoading = false;
-        }
+    if (WorkQueue::shared()->count())
+        QTimer::singleShot(0, this, SLOT(processWork()));
+    else if (!shouldWaitUntilDone()) {
+        if (success)
+            emit done();
+        m_hasDumped = true;
     }
 }
 
@@ -132,11 +130,19 @@ void LayoutTestController::notifyDone()
         return;
 
     m_timeoutTimer.stop();
+    m_waitForDone = false;
+
+    // If the page has not finished loading (i.e. loadFinished() has not been emitted) then
+    // content created by the likes of document.write() JS methods will not be available yet.
+    // When the page has finished loading, maybeDump above will dump the results now that we have
+    // just set shouldWaitUntilDone to false.
+    if (!m_loadFinished)
+        return;
+
     emit done();
 
     // FIXME: investigate why always resetting these result in timeouts
-    m_isLoading = false;
-    m_waitForDone = false;
+    m_hasDumped = true;
     m_waitForPolicy = false;
 }
 
@@ -208,7 +214,7 @@ void LayoutTestController::queueNonLoadingScript(const QString& script)
 void LayoutTestController::provisionalLoad()
 {
     QWebFrame* frame = qobject_cast<QWebFrame*>(sender());
-    if (!m_topLoadingFrame && m_isLoading)
+    if (!m_topLoadingFrame && !m_hasDumped)
         m_topLoadingFrame = frame;
 }
 
diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h
index ac8681f..ca6892d 100644
--- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h
+++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h
@@ -54,9 +54,6 @@ class LayoutTestController : public QObject {
 public:
     LayoutTestController(WebCore::DumpRenderTree* drt);
 
-    bool isLoading() const { return m_isLoading; }
-    void setLoading(bool loading) { m_isLoading = loading; }
-
     bool shouldDumpAsText() const { return m_textDump; }
     bool shouldDumpBackForwardList() const { return m_dumpBackForwardList; }
     bool shouldDumpChildrenAsText() const { return m_dumpChildrenAsText; }
@@ -115,6 +112,7 @@ public slots:
     void setPrivateBrowsingEnabled(bool enable);
     void setPopupBlockingEnabled(bool enable);
     void setPOSIXLocale(const QString& locale);
+    void resetLoadFinished() { m_loadFinished = false; }
 
     bool pauseAnimationAtTimeOnElementWithId(const QString& animationName, double time, const QString& elementId);
     bool pauseTransitionAtTimeOnElementWithId(const QString& propertyName, double time, const QString& elementId);
@@ -137,7 +135,7 @@ private slots:
     void processWork();
 
 private:
-    bool m_isLoading;
+    bool m_hasDumped;
     bool m_textDump;
     bool m_dumpBackForwardList;
     bool m_dumpChildrenAsText;
@@ -148,6 +146,7 @@ private:
     bool m_dumpStatusCallbacks;
     bool m_waitForPolicy;
     bool m_handleErrorPages;
+    bool m_loadFinished;
 
     QBasicTimer m_timeoutTimer;
     QWebFrame* m_topLoadingFrame;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list