| 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);
|
|
|