Index: trunk/Source/core/frame/LocalDOMWindow.cpp |
=================================================================== |
--- trunk/Source/core/frame/LocalDOMWindow.cpp (revision 177995) |
+++ trunk/Source/core/frame/LocalDOMWindow.cpp (working copy) |
@@ -414,6 +414,11 @@ |
} |
m_frame->selection().updateSecureKeyboardEntryIfActive(); |
+ |
+ if (m_frame->isMainFrame()) { |
+ if (m_document->hasTouchEventHandlers()) |
+ m_frame->host()->chrome().client().needTouchEvents(true); |
+ } |
return m_document; |
} |
@@ -1536,7 +1541,9 @@ |
if (Document* document = this->document()) { |
document->addListenerTypeIfNeeded(eventType); |
- if (eventType == EventTypeNames::storage) |
+ if (isTouchEventType(eventType)) |
+ document->didAddTouchEventHandler(document); |
+ else if (eventType == EventTypeNames::storage) |
didAddStorageEventListener(this); |
} |
@@ -1569,6 +1576,11 @@ |
if (m_frame && m_frame->host()) |
m_frame->host()->eventHandlerRegistry().didRemoveEventHandler(*this, eventType); |
+ if (Document* document = this->document()) { |
+ if (isTouchEventType(eventType)) |
+ document->didRemoveTouchEventHandler(document); |
+ } |
+ |
lifecycleNotifier().notifyRemoveEventListener(this, eventType); |
if (eventType == EventTypeNames::unload) { |
@@ -1637,6 +1649,9 @@ |
if (mode == DoBroadcastListenerRemoval) { |
if (m_frame && m_frame->host()) |
m_frame->host()->eventHandlerRegistry().didRemoveAllEventHandlers(*this); |
+ |
+ if (Document* document = this->document()) |
+ document->didClearTouchEventHandlers(document); |
} |
removeAllUnloadEventListeners(this); |