b74b196036247a43903f3082898f7a5bbab656ac
[WebKit.git] / WebCore / bindings / js / kjs_proxy.h
1 /*
2  *  Copyright (C) 1999 Harri Porten (porten@kde.org)
3  *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
4  *  Copyright (C) 2008 Apple Inc. All rights reserved.
5  *
6  *  This library is free software; you can redistribute it and/or
7  *  modify it under the terms of the GNU Lesser General Public
8  *  License as published by the Free Software Foundation; either
9  *  version 2 of the License, or (at your option) any later version.
10  *
11  *  This library is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  *  Lesser General Public License for more details.
15  *
16  *  You should have received a copy of the GNU Lesser General Public
17  *  License along with this library; if not, write to the Free Software
18  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  */
20
21 #ifndef kjs_proxy_h
22 #define kjs_proxy_h
23
24 #include "JSDOMWindowShell.h"
25 #include <kjs/protect.h>
26 #include <wtf/RefPtr.h>
27
28 namespace KJS {
29     class JSGlobalObject;
30     class JSValue;
31 }
32
33 namespace WebCore {
34
35 class Event;
36 class EventListener;
37 class Frame;
38 class Node;
39 class String;
40
41 // FIXME: Rename this class to JSController and the Frame function to javaScript().
42
43 class KJSProxy {
44 public:
45     KJSProxy(Frame*);
46     ~KJSProxy();
47
48     bool haveWindowShell() const { return m_windowShell; }
49     JSDOMWindowShell* windowShell()
50     {
51         initScriptIfNeeded();
52         return m_windowShell;
53     }
54
55     JSDOMWindow* globalObject()
56     {
57         initScriptIfNeeded();
58         return m_windowShell->window();
59     }
60
61     KJS::JSValue* evaluate(const String& filename, int baseLine, const String& code);
62     void clear();
63     EventListener* createHTMLEventHandler(const String& functionName, const String& code, Node*);
64 #if ENABLE(SVG)
65     EventListener* createSVGEventHandler(const String& functionName, const String& code, Node*);
66 #endif
67     void finishedWithEvent(Event*);
68     void setEventHandlerLineno(int lineno) { m_handlerLineno = lineno; }
69
70     void setProcessingTimerCallback(bool b) { m_processingTimerCallback = b; }
71     bool processingUserGesture() const;
72
73     bool isEnabled();
74
75     void attachDebugger(KJS::Debugger*);
76
77     void setPaused(bool b) { m_paused = b; }
78     bool isPaused() const { return m_paused; }
79
80 private:
81     void initScriptIfNeeded()
82     {
83         if (!m_windowShell)
84             initScript();
85     }
86     void initScript();
87
88     KJS::ProtectedPtr<JSDOMWindowShell> m_windowShell;
89     Frame* m_frame;
90     int m_handlerLineno;
91     
92     bool m_processingTimerCallback;
93     bool m_processingInlineCode;
94     bool m_paused;
95 };
96
97 } // namespace WebCore
98
99 #endif // kjs_proxy_h