2010-10-07 Balazs Kelemen <kbalazs@webkit.org>
authorkbalazs@webkit.org <kbalazs@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Oct 2010 14:44:23 +0000 (14:44 +0000)
committerkbalazs@webkit.org <kbalazs@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Oct 2010 14:44:23 +0000 (14:44 +0000)
        Reviewed by Kenneth Rohde Christiansen.

        [Qt] Watchdog timer implementation for WTR
        https://bugs.webkit.org/show_bug.cgi?id=47337

        * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Factor out
        the definition of the timer type to a typedef.
        * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp: Added.
        Timer implementation with QTimer and a helper QObject class.
        (WTR::WatchdogTimerHelper::instance):
        (WTR::WatchdogTimerHelper::timerFired):
        (WTR::WatchdogTimerHelper::WatchdogTimerHelper):
        (WTR::LayoutTestController::platformInitialize):
        (WTR::LayoutTestController::invalidateWaitToDumpWatchdogTimer):
        (WTR::LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded):

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

WebKitTools/ChangeLog
WebKitTools/WebKitTestRunner/InjectedBundle/LayoutTestController.h
WebKitTools/WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp [new file with mode: 0644]

index 41cbade9840d91b264283bb8fa281a3eb31b1e52..0f6c739186c2efd7bb572f64fb652909f4266122 100644 (file)
@@ -1,3 +1,21 @@
+2010-10-07  Balazs Kelemen  <kbalazs@webkit.org>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Watchdog timer implementation for WTR
+        https://bugs.webkit.org/show_bug.cgi?id=47337
+
+        * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Factor out
+        the definition of the timer type to a typedef.
+        * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp: Added.
+        Timer implementation with QTimer and a helper QObject class.
+        (WTR::WatchdogTimerHelper::instance):
+        (WTR::WatchdogTimerHelper::timerFired):
+        (WTR::WatchdogTimerHelper::WatchdogTimerHelper):
+        (WTR::LayoutTestController::platformInitialize):
+        (WTR::LayoutTestController::invalidateWaitToDumpWatchdogTimer):
+        (WTR::LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded):
+
 2010-10-07  Balazs Kelemen  <kbalazs@webkit.org>
 
         Unreviewed buildfix for 69297 again
 2010-10-07  Balazs Kelemen  <kbalazs@webkit.org>
 
         Unreviewed buildfix for 69297 again
index 6ae20d8b63a0d7798c9c6ac5cc0146472f8d9d41..c892ba003e05af1cd4d8f6700c34eeb486d0b712 100644 (file)
 
 #include "JSWrappable.h"
 #include <JavaScriptCore/JSRetainPtr.h>
 
 #include "JSWrappable.h"
 #include <JavaScriptCore/JSRetainPtr.h>
+#include <string>
 #include <wtf/PassRefPtr.h>
 #include <wtf/PassRefPtr.h>
+
+#if PLATFORM(MAC)
 #include <wtf/RetainPtr.h>
 #include <wtf/RetainPtr.h>
-#include <string>
+typedef RetainPtr<CFRunLoopTimerRef> PlatformTimerRef;
+#elif PLATFORM(WIN)
+typedef UINT_PTR PlatformTimerRef;
+#elif PLATFORM(QT)
+#include <QTimer>
+typedef QTimer PlatformTimerRef;
+#endif
 
 namespace WTR {
 
 
 namespace WTR {
 
@@ -124,11 +133,7 @@ private:
     bool m_testRepaint;
     bool m_testRepaintSweepHorizontally;
 
     bool m_testRepaint;
     bool m_testRepaintSweepHorizontally;
 
-#if PLATFORM(MAC)
-    RetainPtr<CFRunLoopTimerRef> m_waitToDumpWatchdogTimer;
-#elif PLATFORM(WIN)
-    UINT_PTR m_waitToDumpWatchdogTimer;
-#endif
+    PlatformTimerRef m_waitToDumpWatchdogTimer;
 };
 
 } // namespace WTR
 };
 
 } // namespace WTR
diff --git a/WebKitTools/WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp b/WebKitTools/WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp
new file mode 100644 (file)
index 0000000..b515326
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 University of Szeged. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "LayoutTestController.h"
+
+#include "InjectedBundle.h"
+#include <QObject>
+
+namespace WTR {
+
+class WatchdogTimerHelper : public QObject {
+    Q_OBJECT
+
+public:
+    static WatchdogTimerHelper* instance()
+    {
+        static WatchdogTimerHelper* theInstance = new WatchdogTimerHelper;
+        return theInstance;
+    }
+
+public slots:
+    void timerFired()
+    {
+        InjectedBundle::shared().layoutTestController()->waitToDumpWatchdogTimerFired();
+    }
+
+private:
+    WatchdogTimerHelper() {}
+};
+
+void LayoutTestController::platformInitialize()
+{
+    QObject::connect(&m_waitToDumpWatchdogTimer, SIGNAL(timeout()), WatchdogTimerHelper::instance(), SLOT(timerFired()));
+}
+
+void LayoutTestController::invalidateWaitToDumpWatchdogTimer()
+{
+    m_waitToDumpWatchdogTimer.stop();
+}
+
+void LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded()
+{
+    if (m_waitToDumpWatchdogTimer.isActive())
+        return;
+
+    m_waitToDumpWatchdogTimer.start(waitToDumpWatchdogTimerInterval * 1000);
+}
+
+} // namespace WTR
+
+#include "LayoutTestControllerQt.moc"