summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp')
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp b/src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp
index a8d35a000..6fc4e8b65 100644
--- a/src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp
+++ b/src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp
@@ -60,19 +60,21 @@ void WMLOnEventElement::parseMappedAttribute(MappedAttribute* attr)
WMLElement::parseMappedAttribute(attr);
}
+static inline WMLEventHandlingElement* eventHandlingParent(Node* parent)
+{
+ if (!parent || !parent->isWMLElement())
+ return 0;
+
+ return toWMLEventHandlingElement(static_cast<WMLElement*>(parent));
+}
+
void WMLOnEventElement::registerTask(WMLTaskElement* task)
{
if (m_type == WMLIntrinsicEventUnknown)
return;
// Register intrinsic event to the event handler of the owner of onevent element
- Node* parent = parentNode();
- ASSERT(parent);
-
- if (!parent || !parent->isWMLElement())
- return;
-
- WMLEventHandlingElement* eventHandlingElement = toWMLEventHandlingElement(static_cast<WMLElement*>(parent));
+ WMLEventHandlingElement* eventHandlingElement = eventHandlingParent(parentNode());
if (!eventHandlingElement)
return;
@@ -83,6 +85,15 @@ void WMLOnEventElement::registerTask(WMLTaskElement* task)
reportWMLError(document(), WMLErrorConflictingEventBinding);
}
+void WMLOnEventElement::deregisterTask(WMLTaskElement*)
+{
+ WMLEventHandlingElement* eventHandlingElement = eventHandlingParent(parentNode());
+ if (!eventHandlingElement)
+ return;
+
+ eventHandlingElement->eventHandler()->deregisterIntrinsicEvent(m_type);
+}
+
}
#endif