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