Index: Source/core/html/HTMLMenuElementEventListener.cpp |
diff --git a/Source/core/html/HTMLMenuElementEventListener.cpp b/Source/core/html/HTMLMenuElementEventListener.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c7e3e2320dc5264ecbed97d65bd689f71303327b |
--- /dev/null |
+++ b/Source/core/html/HTMLMenuElementEventListener.cpp |
@@ -0,0 +1,42 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "config.h" |
+ |
+#include "core/html/HTMLMenuElementEventListener.h" |
+ |
+#include "core/events/RelatedEvent.h" |
+ |
+namespace WebCore { |
+ |
+void HTMLMenuElementEventListener::handleEvent(ExecutionContext*, Event* event) |
esprehn
2014/06/06 22:30:42
This should be in the defaultEventHandler, we don'
pals
2014/06/10 10:42:39
Done.
|
+{ |
+ if (event->type() == EventTypeNames::show && toRelatedEvent(event)->isRelatedEvent()) { |
+ Node* node = toRelatedEvent(event)->relatedTarget()->toNode(); |
+ if (node && node->isHTMLElement()) { |
+ const HTMLElement& element = toHTMLElement(*node); |
+ HTMLMenuElement* menuElement = element.menuElement(); |
+ if (menuElement) { |
+ menuElement->ensureCustomProvider(); |
+ event->setDefaultHandled(); |
+ } |
+ } |
+ } |
+} |
+ |
+bool HTMLMenuElementEventListener::operator==(const EventListener& listener) |
+{ |
+ if (const HTMLMenuElementEventListener* menuEventListener = toHTMLMenuElementEventListener(&listener)) |
+ return m_menu == menuEventListener->m_menu; |
+ return false; |
+} |
+ |
+const HTMLMenuElementEventListener* toHTMLMenuElementEventListener(const EventListener* listener) |
+{ |
+ return listener->type() == EventListener::NativeEventListenerType |
+ ? static_cast<const HTMLMenuElementEventListener*>(listener) |
+ : 0; |
+} |
+ |
+} |