Title: [104572] trunk
Revision
104572
Author
[email protected]
Date
2012-01-10 07:32:31 -0800 (Tue, 10 Jan 2012)

Log Message

[Qt] fast/events/dont-loose-last-event test fails on WK1
https://bugs.webkit.org/show_bug.cgi?id=73894

Patch by Hugo Parente Lima <[email protected]> on 2012-01-10
Reviewed by Simon Hausmann.

Tools:

Empty the entire event queue when requested besides using
sendEvent instead of postEvent to make sure all events were
delivered.
This commit also removes not working DRT code to handle drag and drop,
for more refs see: https://bugs.webkit.org/show_bug.cgi?id=31332

* DumpRenderTree/qt/EventSenderQt.cpp:
(EventSender::EventSender):
(EventSender::sendOrQueueEvent):
(EventSender::replaySavedEvents):
* DumpRenderTree/qt/EventSenderQt.h:

LayoutTests:

Remove fast/events/dont-loose-last-event from qt-wk1 skip list.

* platform/qt-wk1/Skipped:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (104571 => 104572)


--- trunk/LayoutTests/ChangeLog	2012-01-10 15:32:17 UTC (rev 104571)
+++ trunk/LayoutTests/ChangeLog	2012-01-10 15:32:31 UTC (rev 104572)
@@ -1,3 +1,14 @@
+2012-01-10  Hugo Parente Lima  <[email protected]>
+
+        [Qt] fast/events/dont-loose-last-event test fails on WK1
+        https://bugs.webkit.org/show_bug.cgi?id=73894
+
+        Reviewed by Simon Hausmann.
+
+        Remove fast/events/dont-loose-last-event from qt-wk1 skip list.
+
+        * platform/qt-wk1/Skipped:
+
 2012-01-05  Stephen White  <[email protected]>
 
         [chomium] Mark svg FEColorMatrix tests as needing new baselines.

Modified: trunk/LayoutTests/platform/qt-wk1/Skipped (104571 => 104572)


--- trunk/LayoutTests/platform/qt-wk1/Skipped	2012-01-10 15:32:17 UTC (rev 104571)
+++ trunk/LayoutTests/platform/qt-wk1/Skipped	2012-01-10 15:32:31 UTC (rev 104572)
@@ -1,9 +1,5 @@
 # Tests failing on WK1 only (working on WK2)
 
-# New test introduced in r102048 fails on Qt-WK1
-# https://bugs.webkit.org/show_bug.cgi?id=73366
-fast/events/dont-loose-last-event.html
-
 # This has been fixed only on qt-wk2
 # https://bugs.webkit.org/show_bug.cgi?id=45666
 fast/events/click-count.html

Modified: trunk/Tools/ChangeLog (104571 => 104572)


--- trunk/Tools/ChangeLog	2012-01-10 15:32:17 UTC (rev 104571)
+++ trunk/Tools/ChangeLog	2012-01-10 15:32:31 UTC (rev 104572)
@@ -1,3 +1,22 @@
+2012-01-10  Hugo Parente Lima  <[email protected]>
+
+        [Qt] fast/events/dont-loose-last-event test fails on WK1
+        https://bugs.webkit.org/show_bug.cgi?id=73894
+
+        Reviewed by Simon Hausmann.
+
+        Empty the entire event queue when requested besides using
+        sendEvent instead of postEvent to make sure all events were
+        delivered.
+        This commit also removes not working DRT code to handle drag and drop,
+        for more refs see: https://bugs.webkit.org/show_bug.cgi?id=31332
+
+        * DumpRenderTree/qt/EventSenderQt.cpp:
+        (EventSender::EventSender):
+        (EventSender::sendOrQueueEvent):
+        (EventSender::replaySavedEvents):
+        * DumpRenderTree/qt/EventSenderQt.h:
+
 2012-01-10  No'am Rosenthal  <[email protected]>
 
         [Qt] Enable CSS_FILTERS in Qt build

Modified: trunk/Tools/DumpRenderTree/qt/EventSenderQt.cpp (104571 => 104572)


--- trunk/Tools/DumpRenderTree/qt/EventSenderQt.cpp	2012-01-10 15:32:17 UTC (rev 104571)
+++ trunk/Tools/DumpRenderTree/qt/EventSenderQt.cpp	2012-01-10 15:32:31 UTC (rev 104572)
@@ -45,8 +45,6 @@
 // Hence Qt DRT adopts a fixed zoom-factor (1.2) for compatibility.
 #define ZOOM_STEP           1.2
 
-#define DRT_MESSAGE_DONE (QEvent::User + 1)
-
 struct DRTEventQueue {
     QEvent* m_event;
     int m_delay;
@@ -54,21 +52,18 @@
 
 static DRTEventQueue eventQueue[1024];
 static unsigned endOfQueue;
-static unsigned startOfQueue;
+static bool isReplayingEvents;
 
 EventSender::EventSender(QWebPage* parent)
     : QObject(parent)
 {
     m_page = parent;
-    m_mouseButtonPressed = false;
-    m_drag = false;
     memset(eventQueue, 0, sizeof(eventQueue));
     endOfQueue = 0;
-    startOfQueue = 0;
+    isReplayingEvents = false;
     m_eventLoop = 0;
     m_currentButton = 0;
     resetClickCount();
-    m_page->view()->installEventFilter(this);
     // So that we can match Scrollbar::pixelsPerLineStep() in WheelEventQt.cpp and
     // pass fast/events/platform-wheelevent-in-scrolling-div.html
     QApplication::setWheelScrollLines(2);
@@ -559,73 +554,34 @@
     // 2. A delay was set-up by leapForward().
     // 3. A call to mouseMoveTo while the mouse button is pressed could initiate a drag operation, and that does not return until mouseUp is processed.
     // To be safe and avoid a deadlock, this event is queued.
-    if (endOfQueue == startOfQueue && !eventQueue[endOfQueue].m_delay && (!(m_mouseButtonPressed && (m_eventLoop && event->type() == QEvent::MouseButtonRelease)))) {
+    if (!endOfQueue && !eventQueue[endOfQueue].m_delay) {
         sendEvent(m_page->view(), event);
         delete event;
         return;
     }
     eventQueue[endOfQueue++].m_event = event;
     eventQueue[endOfQueue].m_delay = 0;
-    replaySavedEvents(event->type() != QEvent::MouseMove);
+    replaySavedEvents();
 }
 
-void EventSender::replaySavedEvents(bool flush)
+void EventSender::replaySavedEvents()
 {
-    if (startOfQueue < endOfQueue) {
-        // First send all the events that are ready to be sent
-        while (!eventQueue[startOfQueue].m_delay && startOfQueue < endOfQueue) {
-            QEvent* ev = eventQueue[startOfQueue++].m_event;
-            postEvent(m_page->view(), ev);
-        }
-        if (startOfQueue == endOfQueue) {
-            // Reset the queue
-            startOfQueue = 0;
-            endOfQueue = 0;
-        } else {
-            QTest::qWait(eventQueue[startOfQueue].m_delay);
-            eventQueue[startOfQueue].m_delay = 0;
-        }
-    }
-    if (!flush)
+    if (isReplayingEvents)
         return;
 
-    // Send a marker event, it will tell us when it is safe to exit the new event loop
-    QEvent* drtEvent = new QEvent((QEvent::Type)DRT_MESSAGE_DONE);
-    QApplication::postEvent(m_page->view(), drtEvent);
+    isReplayingEvents = true;
+    int i = 0;
 
-    // Start an event loop for async handling of Drag & Drop
-    m_eventLoop = new QEventLoop;
-    m_eventLoop->exec();
-    delete m_eventLoop;
-    m_eventLoop = 0;
-}
+    while (i < endOfQueue) {
+        DRTEventQueue& ev = eventQueue[i];
 
-bool EventSender::eventFilter(QObject* watched, QEvent* event)
-{
-    if (watched != m_page->view())
-        return false;
-    switch (event->type()) {
-    case QEvent::Leave:
-        return true;
-    case QEvent::MouseButtonPress:
-    case QEvent::GraphicsSceneMousePress:
-        m_mouseButtonPressed = true;
-        break;
-    case QEvent::MouseMove:
-    case QEvent::GraphicsSceneMouseMove:
-        if (m_mouseButtonPressed)
-            m_drag = true;
-        break;
-    case QEvent::MouseButtonRelease:
-    case QEvent::GraphicsSceneMouseRelease:
-        m_mouseButtonPressed = false;
-        m_drag = false;
-        break;
-    case DRT_MESSAGE_DONE:
-        m_eventLoop->exit();
-        return true;
+        if (ev.m_delay)
+            QTest::qWait(ev.m_delay);
+        i++;
+        sendEvent(m_page->view(), ev.m_event);
+        delete ev.m_event;
+        ev.m_delay = 0;
     }
-    return false;
 }
 
 void EventSender::timerEvent(QTimerEvent* ev)

Modified: trunk/Tools/DumpRenderTree/qt/EventSenderQt.h (104571 => 104572)


--- trunk/Tools/DumpRenderTree/qt/EventSenderQt.h	2012-01-10 15:32:17 UTC (rev 104571)
+++ trunk/Tools/DumpRenderTree/qt/EventSenderQt.h	2012-01-10 15:32:31 UTC (rev 104572)
@@ -51,7 +51,6 @@
     Q_OBJECT
 public:
     EventSender(QWebPage* parent);
-    virtual bool eventFilter(QObject* watched, QEvent* event);
     void resetClickCount() { m_clickCount = 0; }
 
 public slots:
@@ -94,15 +93,13 @@
 private:
     void sendTouchEvent(QEvent::Type);
     void sendOrQueueEvent(QEvent*);
-    void replaySavedEvents(bool flush);
+    void replaySavedEvents();
     QPoint m_mousePos;
     QPoint m_clickPos;
     Qt::MouseButtons m_mouseButtons;
     QWebPage* m_page;
     int m_clickCount;
     int m_currentButton;
-    bool m_mouseButtonPressed;
-    bool m_drag;
     QEventLoop* m_eventLoop;
     QWebFrame* frameUnderMouse() const;
     QBasicTimer m_clickTimer;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to