blob: 1079971120b7167ef98da28261a7dfe80f0fdfda [file] [log] [blame]
// Copyright 2015 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.
#ifndef EventListenerInfo_h
#define EventListenerInfo_h
#include "core/InspectorTypeBuilder.h"
#include "core/events/EventListenerMap.h"
#include "core/events/RegisteredEventListener.h"
#include "wtf/Vector.h"
#include "wtf/text/AtomicString.h"
namespace blink {
class EventTarget;
class ExecutionContext;
class InjectedScriptManager;
struct EventListenerInfo {
EventListenerInfo(EventTarget* eventTarget, const AtomicString& eventType, const EventListenerVector& eventListenerVector)
: eventTarget(eventTarget)
, eventType(eventType)
, eventListenerVector(eventListenerVector)
{
}
EventTarget* eventTarget;
const AtomicString eventType;
const EventListenerVector eventListenerVector;
static void getEventListeners(EventTarget*, Vector<EventListenerInfo>& listenersArray, bool includeAncestors);
};
class RegisteredEventListenerIterator {
WTF_MAKE_NONCOPYABLE(RegisteredEventListenerIterator);
public:
RegisteredEventListenerIterator(Vector<EventListenerInfo>& listenersArray)
: m_listenersArray(listenersArray)
, m_infoIndex(0)
, m_listenerIndex(0)
, m_isUseCapturePass(true)
{
}
const RegisteredEventListener* nextRegisteredEventListener();
const EventListenerInfo& currentEventListenerInfo();
private:
Vector<EventListenerInfo>& m_listenersArray;
unsigned m_infoIndex;
unsigned m_listenerIndex;
bool m_isUseCapturePass;
};
PassRefPtr<TypeBuilder::Runtime::RemoteObject> eventHandlerObject(ExecutionContext*, EventListener*, InjectedScriptManager*, const String* objectGroupId);
} // namespace blink
#endif // EventListenerInfo_h