WebCore:
[WebKit-https.git] / WebCore / bindings / js / JSLocation.h
1 /*
2  *  Copyright (C) 2000 Harri Porten (porten@kde.org)
3  *  Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reseved.
4  *
5  *  This library is free software; you can redistribute it and/or
6  *  modify it under the terms of the GNU Lesser General Public
7  *  License as published by the Free Software Foundation; either
8  *  version 2 of the License, or (at your option) any later version.
9  *
10  *  This library is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  *  Lesser General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Lesser General Public
16  *  License along with this library; if not, write to the Free Software
17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18  */
19
20 #ifndef JSLocation_h
21 #define JSLocation_h
22
23 #include "kjs_binding.h"
24
25 namespace KJS {
26     class Window;
27 }
28
29 namespace WebCore {
30
31     class Frame;
32
33     class JSLocation : public KJS::DOMObject {
34         typedef KJS::DOMObject Base;
35
36         friend class KJS::Window;
37     public:
38         JSLocation(KJS::JSObject* protoype, Frame*);
39     
40         virtual bool getOwnPropertySlot(KJS::ExecState*, const KJS::Identifier&, KJS::PropertySlot&);
41         KJS::JSValue* getValueProperty(KJS::ExecState*, int token) const;
42         virtual void put(KJS::ExecState*, const KJS::Identifier&, KJS::JSValue*, int attr = KJS::None);
43
44         virtual void getPropertyNames(KJS::ExecState*, KJS::PropertyNameArray&);
45
46         enum {
47             Hash, Href, Hostname, Host,
48             Pathname, Port, Protocol, Search,
49             Replace, Reload, ToString, Assign
50         };
51
52         Frame* frame() const { return m_frame; }
53
54         virtual const KJS::ClassInfo* classInfo() const { return &info; }
55         static const KJS::ClassInfo info;
56
57     private:
58         Frame* m_frame;
59     };
60
61     // Functions
62     KJS::JSValue* jsLocationProtoFuncAssign(KJS::ExecState*, KJS::JSObject*, const KJS::List&);
63     KJS::JSValue* jsLocationProtoFuncToString(KJS::ExecState*, KJS::JSObject*, const KJS::List&);
64     KJS::JSValue* jsLocationProtoFuncReplace(KJS::ExecState*, KJS::JSObject*, const KJS::List&);
65     KJS::JSValue* jsLocationProtoFuncReload(KJS::ExecState*, KJS::JSObject*, const KJS::List&);
66
67 } // namespace WebCore
68
69 #endif // JSLocation_h