1545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch/* 2545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) Research In Motion Limited 2010. All rights reserved. 3545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2001 Peter Kelly (pmk@post.com) 4545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved. 5545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 6545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * This library is free software; you can redistribute it and/or 7545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * modify it under the terms of the GNU Library General Public 8545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * License as published by the Free Software Foundation; either 9545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * version 2 of the License, or (at your option) any later version. 10545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 11545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * This library is distributed in the hope that it will be useful, 12545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 13545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Library General Public License for more details. 15545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 16545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * You should have received a copy of the GNU Library General Public License 17545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 18545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Boston, MA 02110-1301, USA. 20545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch */ 21545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 22545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#ifndef WebNativeEventListener_h 23545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#define WebNativeEventListener_h 24545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 25545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "EventListener.h" 26545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "WebDOMEventListener.h" 27545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 28545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass WebNativeEventListener : public WebCore::EventListener { 29545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochpublic: 30545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static PassRefPtr<WebNativeEventListener> create(WebUserEventListener* listener) 31545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 32545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return adoptRef(new WebNativeEventListener(listener)); 33545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 34545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 35545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static const WebNativeEventListener* cast(const WebCore::EventListener* listener) 36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return listener->type() == CPPEventListenerType 38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ? static_cast<const WebNativeEventListener*>(listener) 39545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch : 0; 40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 42545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ~WebNativeEventListener(); 43545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool operator==(const WebCore::EventListener& other); 44545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 45545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochprivate: 46545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*); 47dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual bool reportError(WebCore::ScriptExecutionContext*, const WTF::String& message, const WTF::String& url, int lineNumber); 48545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 49545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochprotected: 50545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WebNativeEventListener(WebUserEventListener*); 51545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WebUserEventListener* m_listener; 52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}; 53545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 54545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 55