Chromium Code Reviews| 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; |
| +} |
| + |
| +} |