Index: Source/WebCore/dom/EventQueue.cpp |
=================================================================== |
--- Source/WebCore/dom/EventQueue.cpp (revision 77575) |
+++ Source/WebCore/dom/EventQueue.cpp (working copy) |
@@ -28,24 +28,41 @@ |
#include "EventQueue.h" |
#include "DOMWindow.h" |
-#include "Document.h" |
#include "Event.h" |
#include "EventNames.h" |
+#include "ScriptExecutionContext.h" |
+#include "SuspendableTimer.h" |
namespace WebCore { |
-EventQueue::EventQueue() |
- : m_pendingEventTimer(this, &EventQueue::pendingEventTimerFired) |
+class EventQueueTimer : public SuspendableTimer { |
+ WTF_MAKE_NONCOPYABLE(EventQueueTimer); |
+public: |
+ EventQueueTimer(EventQueue* eventQueue, ScriptExecutionContext* context) |
+ : SuspendableTimer(context) |
+ , m_eventQueue(eventQueue) { } |
+ |
+private: |
+ virtual void fired() { m_eventQueue->pendingEventTimerFired(); } |
+ EventQueue* m_eventQueue; |
+}; |
+ |
+EventQueue::EventQueue(ScriptExecutionContext* context) |
+ : m_pendingEventTimer(adoptPtr(new EventQueueTimer(this, context))) |
{ |
} |
+EventQueue::~EventQueue() |
+{ |
+} |
+ |
void EventQueue::enqueueEvent(PassRefPtr<Event> event) |
{ |
ASSERT(event->target()->toNode() || event->target()->toDOMWindow()); |
m_queuedEvents.append(event); |
- if (!m_pendingEventTimer.isActive()) |
- m_pendingEventTimer.startOneShot(0); |
+ if (!m_pendingEventTimer->isActive()) |
+ m_pendingEventTimer->startOneShot(0); |
} |
void EventQueue::enqueueScrollEvent(PassRefPtr<Node> target, ScrollEventTargetType targetType) |
@@ -60,9 +77,9 @@ |
enqueueEvent(scrollEvent.release()); |
} |
-void EventQueue::pendingEventTimerFired(Timer<EventQueue>*) |
+void EventQueue::pendingEventTimerFired() |
{ |
- ASSERT(!m_pendingEventTimer.isActive()); |
+ ASSERT(!m_pendingEventTimer->isActive()); |
Vector<RefPtr<Event> > queuedEvents; |
queuedEvents.swap(m_queuedEvents); |