| Index: Source/web/WebPluginContainerImpl.cpp
|
| diff --git a/Source/web/WebPluginContainerImpl.cpp b/Source/web/WebPluginContainerImpl.cpp
|
| index 36af06ed8187dba0d486eddea219a97e5db5dea8..7ca1835cfe2d351c6c53eb91ec8fb6af34516327 100644
|
| --- a/Source/web/WebPluginContainerImpl.cpp
|
| +++ b/Source/web/WebPluginContainerImpl.cpp
|
| @@ -43,6 +43,7 @@
|
| #include "core/events/MouseEvent.h"
|
| #include "core/events/TouchEvent.h"
|
| #include "core/events/WheelEvent.h"
|
| +#include "core/frame/EventHandlerRegistry.h"
|
| #include "core/frame/FrameView.h"
|
| #include "core/frame/LocalFrame.h"
|
| #include "core/html/HTMLFormElement.h"
|
| @@ -517,10 +518,13 @@ void WebPluginContainerImpl::requestTouchEventType(TouchEventRequestType request
|
| if (m_touchEventRequestType == requestType)
|
| return;
|
|
|
| - if (requestType != TouchEventRequestTypeNone && m_touchEventRequestType == TouchEventRequestTypeNone)
|
| - m_element->document().didAddTouchEventHandler(m_element);
|
| - else if (requestType == TouchEventRequestTypeNone && m_touchEventRequestType != TouchEventRequestTypeNone)
|
| - m_element->document().didRemoveTouchEventHandler(m_element);
|
| + if (m_element->document().frameHost()) {
|
| + EventHandlerRegistry& registry = m_element->document().frameHost()->eventHandlerRegistry();
|
| + if (requestType != TouchEventRequestTypeNone && m_touchEventRequestType == TouchEventRequestTypeNone)
|
| + registry.didAddEventHandler(*m_element, EventHandlerRegistry::TouchEvent);
|
| + else if (requestType == TouchEventRequestTypeNone && m_touchEventRequestType != TouchEventRequestTypeNone)
|
| + registry.didRemoveEventHandler(*m_element, EventHandlerRegistry::TouchEvent);
|
| + }
|
| m_touchEventRequestType = requestType;
|
| }
|
|
|
| @@ -693,8 +697,8 @@ WebPluginContainerImpl::~WebPluginContainerImpl()
|
| //
|
| m_element = 0;
|
| #else
|
| - if (m_touchEventRequestType != TouchEventRequestTypeNone)
|
| - m_element->document().didRemoveTouchEventHandler(m_element);
|
| + if (m_touchEventRequestType != TouchEventRequestTypeNone && m_element->document().frameHost())
|
| + m_element->document().frameHost()->eventHandlerRegistry().didRemoveEventHandler(*m_element, EventHandlerRegistry::TouchEvent);
|
| #endif
|
|
|
| ScriptForbiddenScope::AllowSuperUnsafeScript thisShouldBeRemoved;
|
| @@ -709,8 +713,8 @@ WebPluginContainerImpl::~WebPluginContainerImpl()
|
| #if ENABLE(OILPAN)
|
| void WebPluginContainerImpl::detach()
|
| {
|
| - if (m_touchEventRequestType != TouchEventRequestTypeNone)
|
| - m_element->document().didRemoveTouchEventHandler(m_element);
|
| + if (m_touchEventRequestType != TouchEventRequestTypeNone && m_element->document().frameHost())
|
| + m_element->document().frameHost()->eventHandlerRegistry().didRemoveEventHandler(*m_element, EventHandlerRegistry::TouchEvent);
|
|
|
| setWebLayer(0);
|
| }
|
|
|