1/*
2 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
4 * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
5 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB.  If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef WebDOMTestObj_h
24#define WebDOMTestObj_h
25
26#include <WebDOMObject.h>
27#include <WebDOMString.h>
28
29namespace WebCore {
30class TestObj;
31};
32
33class WebDOMEventListener;
34class WebDOMIDBKey;
35class WebDOMOptionsObject;
36class WebDOMString;
37class WebDOMTestObj;
38
39class WebDOMTestObj : public WebDOMObject {
40public:
41    WebDOMTestObj();
42    explicit WebDOMTestObj(WebCore::TestObj*);
43    WebDOMTestObj(const WebDOMTestObj&);
44    WebDOMTestObj& operator=(const WebDOMTestObj&);
45    virtual ~WebDOMTestObj();
46
47    enum {
48        WEBDOM_CONST_VALUE_0 = 0,
49        WEBDOM_CONST_VALUE_1 = 1,
50        WEBDOM_CONST_VALUE_2 = 2,
51        WEBDOM_CONST_VALUE_4 = 4,
52        WEBDOM_CONST_VALUE_8 = 8,
53        WEBDOM_CONST_VALUE_9 = -1,
54        WEBDOM_CONST_VALUE_10 = "my constant string",
55        WEBDOM_CONST_VALUE_11 = 0xffffffff,
56        WEBDOM_CONST_VALUE_12 = 0x01,
57        WEBDOM_CONST_VALUE_13 = 0X20,
58        WEBDOM_CONST_VALUE_14 = 0x1abc
59    };
60
61    int readOnlyIntAttr() const;
62    WebDOMString readOnlyStringAttr() const;
63    WebDOMTestObj readOnlyTestObjAttr() const;
64    short shortAttr() const;
65    void setShortAttr(short);
66    unsigned short unsignedShortAttr() const;
67    void setUnsignedShortAttr(unsigned short);
68    int intAttr() const;
69    void setIntAttr(int);
70    long long longLongAttr() const;
71    void setLongLongAttr(long long);
72    unsigned long long unsignedLongLongAttr() const;
73    void setUnsignedLongLongAttr(unsigned long long);
74    WebDOMString stringAttr() const;
75    void setStringAttr(const WebDOMString&);
76    WebDOMTestObj testObjAttr() const;
77    void setTestObjAttr(const WebDOMTestObj&);
78    WebDOMTestObj XMLObjAttr() const;
79    void setXMLObjAttr(const WebDOMTestObj&);
80    bool create() const;
81    void setCreate(bool);
82    WebDOMString reflectedStringAttr() const;
83    void setReflectedStringAttr(const WebDOMString&);
84    int reflectedIntegralAttr() const;
85    void setReflectedIntegralAttr(int);
86    unsigned reflectedUnsignedIntegralAttr() const;
87    void setReflectedUnsignedIntegralAttr(unsigned);
88    bool reflectedBooleanAttr() const;
89    void setReflectedBooleanAttr(bool);
90    WebDOMString reflectedURLAttr() const;
91    void setReflectedURLAttr(const WebDOMString&);
92    WebDOMString reflectedNonEmptyURLAttr() const;
93    void setReflectedNonEmptyURLAttr(const WebDOMString&);
94    WebDOMString reflectedStringAttr() const;
95    void setReflectedStringAttr(const WebDOMString&);
96    int reflectedCustomIntegralAttr() const;
97    void setReflectedCustomIntegralAttr(int);
98    bool reflectedCustomBooleanAttr() const;
99    void setReflectedCustomBooleanAttr(bool);
100    WebDOMString reflectedCustomURLAttr() const;
101    void setReflectedCustomURLAttr(const WebDOMString&);
102    WebDOMString reflectedCustomNonEmptyURLAttr() const;
103    void setReflectedCustomNonEmptyURLAttr(const WebDOMString&);
104    int attrWithGetterException() const;
105    void setAttrWithGetterException(int);
106    int attrWithSetterException() const;
107    void setAttrWithSetterException(int);
108    WebDOMString stringAttrWithGetterException() const;
109    void setStringAttrWithGetterException(const WebDOMString&);
110    WebDOMString stringAttrWithSetterException() const;
111    void setStringAttrWithSetterException(const WebDOMString&);
112    int customAttr() const;
113    void setCustomAttr(int);
114    WebDOMString scriptStringAttr() const;
115#if ENABLE(Condition1)
116    int conditionalAttr1() const;
117    void setConditionalAttr1(int);
118#endif
119#if ENABLE(Condition1) && ENABLE(Condition2)
120    int conditionalAttr2() const;
121    void setConditionalAttr2(int);
122#endif
123#if ENABLE(Condition1) || ENABLE(Condition2)
124    int conditionalAttr3() const;
125    void setConditionalAttr3(int);
126#endif
127    int description() const;
128    int id() const;
129    void setId(int);
130    WebDOMString hash() const;
131
132    void voidMethod();
133    void voidMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg);
134    int intMethod();
135    int intMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg);
136    WebDOMTestObj objMethod();
137    WebDOMTestObj objMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg);
138    WebDOMTestObj methodThatRequiresAllArgs(const WebDOMString& strArg, const WebDOMTestObj& objArg);
139    WebDOMTestObj methodThatRequiresAllArgsAndThrows(const WebDOMString& strArg, const WebDOMTestObj& objArg);
140    void serializedValue(const WebDOMString& serializedArg);
141    void idbKey(const WebDOMIDBKey& key);
142    void optionsObject(const WebDOMOptionsObject& oo, const WebDOMOptionsObject& ooo);
143    void methodWithException();
144    void customMethod();
145    void customMethodWithArgs(int intArg, const WebDOMString& strArg, const WebDOMTestObj& objArg);
146    void addEventListener(const WebDOMString& type, const WebDOMEventListener& listener, bool useCapture);
147    void removeEventListener(const WebDOMString& type, const WebDOMEventListener& listener, bool useCapture);
148    void withDynamicFrame();
149    void withDynamicFrameAndArg(int intArg);
150    void withDynamicFrameAndOptionalArg(int intArg, int optionalArg);
151    void withDynamicFrameAndUserGesture(int intArg);
152    void withDynamicFrameAndUserGestureASAD(int intArg, int optionalArg);
153    void withScriptStateVoid();
154    WebDOMTestObj withScriptStateObj();
155    void withScriptStateVoidException();
156    WebDOMTestObj withScriptStateObjException();
157    void withScriptExecutionContext();
158    void methodWithOptionalArg(int opt);
159    void methodWithNonOptionalArgAndOptionalArg(int nonOpt, int opt);
160    void methodWithNonOptionalArgAndTwoOptionalArgs(int nonOpt, int opt1, int opt2);
161    void classMethod();
162    int classMethodWithOptional(int arg);
163
164    WebCore::TestObj* impl() const;
165
166protected:
167    struct WebDOMTestObjPrivate;
168    WebDOMTestObjPrivate* m_impl;
169};
170
171WebCore::TestObj* toWebCore(const WebDOMTestObj&);
172WebDOMTestObj toWebKit(WebCore::TestObj*);
173
174#endif
175