[Release] Webkit2-efl-123997_0.11.86
[framework/web/webkit-efl.git] / Source / WebKit / win / DOMCoreClasses.h
1 /*
2  * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef DOMCoreClasses_H
27 #define DOMCoreClasses_H
28
29 #include "WebKit.h"
30 #include "WebScriptObject.h"
31
32 namespace WebCore {
33 class Element;
34 class Document;
35 class DOMWindow;
36 class Node;
37 class NodeList;
38 }
39
40
41 class DOMObject : public WebScriptObject, public IDOMObject {
42 public:
43     // IUnknown
44     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
45     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return WebScriptObject::AddRef(); }
46     virtual ULONG STDMETHODCALLTYPE Release(void) { return WebScriptObject::Release(); }
47
48     // IWebScriptObject
49     virtual HRESULT STDMETHODCALLTYPE throwException(
50         /* [in] */ BSTR exceptionMessage,
51         /* [retval][out] */ BOOL* result) { return WebScriptObject::throwException(exceptionMessage, result); }
52     
53     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
54         /* [in] */ BSTR name,
55         /* [size_is][in] */ const VARIANT args[  ],
56         /* [in] */ int cArgs,
57         /* [retval][out] */ VARIANT* result) { return WebScriptObject::callWebScriptMethod(name, args, cArgs, result); }
58     
59     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
60         /* [in] */ BSTR script,
61         /* [retval][out] */ VARIANT* result) { return WebScriptObject::evaluateWebScript(script, result); }
62     
63     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
64         /* [in] */ BSTR name) { return WebScriptObject::removeWebScriptKey(name); }
65     
66     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
67         /* [retval][out] */ BSTR* stringRepresentation) { return WebScriptObject::stringRepresentation(stringRepresentation); }
68     
69     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
70         /* [in] */ unsigned int index,
71         /* [retval][out] */ VARIANT* result) { return WebScriptObject::webScriptValueAtIndex(index, result); }
72     
73     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
74         /* [in] */ unsigned int index,
75         /* [in] */ VARIANT val) { return WebScriptObject::setWebScriptValueAtIndex(index, val); }
76     
77     virtual HRESULT STDMETHODCALLTYPE setException(
78         /* [in] */ BSTR description) { return WebScriptObject::setException(description); }
79 };
80
81 class DECLSPEC_UUID("062AEEE3-9E42-44DC-A8A9-236B216FE011") DOMNode : public DOMObject, public IDOMNode, public IDOMEventTarget {
82 protected:
83     DOMNode(WebCore::Node* n);
84     ~DOMNode();
85
86 public:
87     static IDOMNode* createInstance(WebCore::Node* n);
88
89 public:
90     // IUnknown
91     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
92     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
93     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
94
95     // IWebScriptObject
96     virtual HRESULT STDMETHODCALLTYPE throwException(
97         /* [in] */ BSTR exceptionMessage,
98         /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
99     
100     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
101         /* [in] */ BSTR name,
102         /* [size_is][in] */ const VARIANT args[  ],
103         /* [in] */ int cArgs,
104         /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
105     
106     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
107         /* [in] */ BSTR script,
108         /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
109     
110     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
111         /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
112     
113     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
114         /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
115     
116     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
117         /* [in] */ unsigned int index,
118         /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
119     
120     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
121         /* [in] */ unsigned int index,
122         /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
123     
124     virtual HRESULT STDMETHODCALLTYPE setException(
125         /* [in] */ BSTR description) { return DOMObject::setException(description); }
126
127     // IDOMNode
128     virtual HRESULT STDMETHODCALLTYPE nodeName(
129         /* [retval][out] */ BSTR* result);
130     
131     virtual HRESULT STDMETHODCALLTYPE nodeValue(
132         /* [retval][out] */ BSTR* result);
133     
134     virtual HRESULT STDMETHODCALLTYPE setNodeValue(
135         /* [in] */ BSTR value);
136     
137     virtual HRESULT STDMETHODCALLTYPE nodeType(
138         /* [retval][out] */ unsigned short* result);
139     
140     virtual HRESULT STDMETHODCALLTYPE parentNode(
141         /* [retval][out] */ IDOMNode** result);
142     
143     virtual HRESULT STDMETHODCALLTYPE childNodes(
144         /* [retval][out] */ IDOMNodeList** result);
145     
146     virtual HRESULT STDMETHODCALLTYPE firstChild(
147         /* [retval][out] */ IDOMNode** result);
148     
149     virtual HRESULT STDMETHODCALLTYPE lastChild(
150         /* [retval][out] */ IDOMNode** result);
151     
152     virtual HRESULT STDMETHODCALLTYPE previousSibling(
153         /* [retval][out] */ IDOMNode** result);
154     
155     virtual HRESULT STDMETHODCALLTYPE nextSibling(
156         /* [retval][out] */ IDOMNode** result);
157     
158     virtual HRESULT STDMETHODCALLTYPE attributes(
159         /* [retval][out] */ IDOMNamedNodeMap** result);
160     
161     virtual HRESULT STDMETHODCALLTYPE ownerDocument(
162         /* [retval][out] */ IDOMDocument** result);
163     
164     virtual HRESULT STDMETHODCALLTYPE insertBefore(
165         /* [in] */ IDOMNode* newChild,
166         /* [in] */ IDOMNode* refChild,
167         /* [retval][out] */ IDOMNode** result);
168     
169     virtual HRESULT STDMETHODCALLTYPE replaceChild(
170         /* [in] */ IDOMNode* newChild,
171         /* [in] */ IDOMNode* oldChild,
172         /* [retval][out] */ IDOMNode** result);
173     
174     virtual HRESULT STDMETHODCALLTYPE removeChild(
175         /* [in] */ IDOMNode* oldChild,
176         /* [retval][out] */ IDOMNode** result);
177     
178     virtual HRESULT STDMETHODCALLTYPE appendChild(
179         /* [in] */ IDOMNode* oldChild,
180         /* [retval][out] */ IDOMNode** result);
181     
182     virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
183         /* [retval][out] */ BOOL* result);
184     
185     virtual HRESULT STDMETHODCALLTYPE cloneNode(
186         /* [in] */ BOOL deep,
187         /* [retval][out] */ IDOMNode** result);
188     
189     virtual HRESULT STDMETHODCALLTYPE normalize( void);
190     
191     virtual HRESULT STDMETHODCALLTYPE isSupported(
192         /* [in] */ BSTR feature,
193         /* [in] */ BSTR version,
194         /* [retval][out] */ BOOL* result);
195     
196     virtual HRESULT STDMETHODCALLTYPE namespaceURI(
197         /* [retval][out] */ BSTR* result);
198     
199     virtual HRESULT STDMETHODCALLTYPE prefix(
200         /* [retval][out] */ BSTR* result);
201     
202     virtual HRESULT STDMETHODCALLTYPE setPrefix(
203         /* [in] */ BSTR prefix);
204     
205     virtual HRESULT STDMETHODCALLTYPE localName(
206         /* [retval][out] */ BSTR* result);
207     
208     virtual HRESULT STDMETHODCALLTYPE hasAttributes(
209         /* [retval][out] */ BOOL* result);
210
211     virtual HRESULT STDMETHODCALLTYPE isSameNode(
212         /* [in] */ IDOMNode* other,
213         /* [retval][out] */ BOOL* result);
214     
215     virtual HRESULT STDMETHODCALLTYPE isEqualNode(
216         /* [in] */ IDOMNode* other,
217         /* [retval][out] */ BOOL* result);
218     
219     virtual HRESULT STDMETHODCALLTYPE textContent(
220         /* [retval][out] */ BSTR* result);
221     
222     virtual HRESULT STDMETHODCALLTYPE setTextContent(
223         /* [in] */ BSTR text);
224
225     // IDOMEventTarget
226     virtual HRESULT STDMETHODCALLTYPE addEventListener(
227         /* [in] */ BSTR type,
228         /* [in] */ IDOMEventListener *listener,
229         /* [in] */ BOOL useCapture);
230     
231     virtual HRESULT STDMETHODCALLTYPE removeEventListener(
232         /* [in] */ BSTR type,
233         /* [in] */ IDOMEventListener *listener,
234         /* [in] */ BOOL useCapture);
235     
236     virtual HRESULT STDMETHODCALLTYPE dispatchEvent(
237         /* [in] */ IDOMEvent *evt,
238         /* [retval][out] */ BOOL* result);
239
240     // DOMNode
241     WebCore::Node* node() const { return m_node; }
242
243 protected:
244     WebCore::Node* m_node;
245 };
246
247 class DOMNodeList : public DOMObject, public IDOMNodeList {
248 protected:
249     DOMNodeList(WebCore::NodeList* l);
250     ~DOMNodeList();
251
252 public:
253     static IDOMNodeList* createInstance(WebCore::NodeList* l);
254
255 public:
256     // IUnknown
257     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
258     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
259     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
260
261     // IWebScriptObject
262     virtual HRESULT STDMETHODCALLTYPE throwException(
263         /* [in] */ BSTR exceptionMessage,
264         /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
265     
266     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
267         /* [in] */ BSTR name,
268         /* [size_is][in] */ const VARIANT args[  ],
269         /* [in] */ int cArgs,
270         /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
271     
272     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
273         /* [in] */ BSTR script,
274         /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
275     
276     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
277         /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
278     
279     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
280         /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
281     
282     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
283         /* [in] */ unsigned int index,
284         /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
285     
286     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
287         /* [in] */ unsigned int index,
288         /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
289     
290     virtual HRESULT STDMETHODCALLTYPE setException(
291         /* [in] */ BSTR description) { return DOMObject::setException(description); }
292
293     // IDOMNodeList
294     virtual HRESULT STDMETHODCALLTYPE item(
295         /* [in] */ UINT index,
296         /* [retval][out] */ IDOMNode** result);
297     
298     virtual HRESULT STDMETHODCALLTYPE length(
299         /* [retval][out] */ UINT* result);
300
301 protected:
302     WebCore::NodeList* m_nodeList;
303 };
304
305 class DOMDocument : public DOMNode, public IDOMDocument, public IDOMViewCSS, public IDOMDocumentEvent {
306 protected:
307     DOMDocument(WebCore::Document* d);
308     ~DOMDocument();
309
310 public:
311     static IDOMDocument* createInstance(WebCore::Document* d);
312
313 public:
314     // IUnknown
315     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
316     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMNode::AddRef(); }
317     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMNode::Release(); }
318
319     // IWebScriptObject
320     virtual HRESULT STDMETHODCALLTYPE throwException(
321         /* [in] */ BSTR exceptionMessage,
322         /* [retval][out] */ BOOL* result) { return DOMNode::throwException(exceptionMessage, result); }
323     
324     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
325         /* [in] */ BSTR name,
326         /* [size_is][in] */ const VARIANT args[  ],
327         /* [in] */ int cArgs,
328         /* [retval][out] */ VARIANT* result) { return DOMNode::callWebScriptMethod(name, args, cArgs, result); }
329     
330     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
331         /* [in] */ BSTR script,
332         /* [retval][out] */ VARIANT* result) { return DOMNode::evaluateWebScript(script, result); }
333     
334     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
335         /* [in] */ BSTR name) { return DOMNode::removeWebScriptKey(name); }
336     
337     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
338         /* [retval][out] */ BSTR* stringRepresentation) { return DOMNode::stringRepresentation(stringRepresentation); }
339     
340     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
341         /* [in] */ unsigned int index,
342         /* [retval][out] */ VARIANT* result) { return DOMNode::webScriptValueAtIndex(index, result); }
343     
344     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
345         /* [in] */ unsigned int index,
346         /* [in] */ VARIANT val) { return DOMNode::setWebScriptValueAtIndex(index, val); }
347     
348     virtual HRESULT STDMETHODCALLTYPE setException(
349         /* [in] */ BSTR description) { return DOMNode::setException(description); }
350
351     // IDOMNode
352     virtual HRESULT STDMETHODCALLTYPE nodeName(
353         /* [retval][out] */ BSTR* result) { return DOMNode::nodeName(result); }
354     
355     virtual HRESULT STDMETHODCALLTYPE nodeValue(
356         /* [retval][out] */ BSTR* result) { return DOMNode::nodeValue(result); }
357     
358     virtual HRESULT STDMETHODCALLTYPE setNodeValue(
359         /* [in] */ BSTR value) { return DOMNode::setNodeValue(value); }
360     
361     virtual HRESULT STDMETHODCALLTYPE nodeType(
362         /* [retval][out] */ unsigned short* result) { return DOMNode::nodeType(result); }
363     
364     virtual HRESULT STDMETHODCALLTYPE parentNode(
365         /* [retval][out] */ IDOMNode** result) { return DOMNode::parentNode(result); }
366     
367     virtual HRESULT STDMETHODCALLTYPE childNodes(
368         /* [retval][out] */ IDOMNodeList** result) { return DOMNode::childNodes(result); }
369     
370     virtual HRESULT STDMETHODCALLTYPE firstChild(
371         /* [retval][out] */ IDOMNode** result) { return DOMNode::firstChild(result); }
372     
373     virtual HRESULT STDMETHODCALLTYPE lastChild(
374         /* [retval][out] */ IDOMNode** result) { return DOMNode::lastChild(result); }
375     
376     virtual HRESULT STDMETHODCALLTYPE previousSibling(
377         /* [retval][out] */ IDOMNode** result) { return DOMNode::previousSibling(result); }
378     
379     virtual HRESULT STDMETHODCALLTYPE nextSibling(
380         /* [retval][out] */ IDOMNode** result) { return DOMNode::nextSibling(result); }
381     
382     virtual HRESULT STDMETHODCALLTYPE attributes(
383         /* [retval][out] */ IDOMNamedNodeMap** result) { return DOMNode::attributes(result); }
384     
385     virtual HRESULT STDMETHODCALLTYPE ownerDocument(
386         /* [retval][out] */ IDOMDocument** result) { return DOMNode::ownerDocument(result); }
387     
388     virtual HRESULT STDMETHODCALLTYPE insertBefore(
389         /* [in] */ IDOMNode* newChild,
390         /* [in] */ IDOMNode* refChild,
391         /* [retval][out] */ IDOMNode** result) { return DOMNode::insertBefore(newChild, refChild, result); }
392     
393     virtual HRESULT STDMETHODCALLTYPE replaceChild(
394         /* [in] */ IDOMNode* newChild,
395         /* [in] */ IDOMNode* oldChild,
396         /* [retval][out] */ IDOMNode** result) { return DOMNode::replaceChild(newChild, oldChild, result); }
397     
398     virtual HRESULT STDMETHODCALLTYPE removeChild(
399         /* [in] */ IDOMNode* oldChild,
400         /* [retval][out] */ IDOMNode** result) { return DOMNode::removeChild(oldChild, result); }
401     
402     virtual HRESULT STDMETHODCALLTYPE appendChild(
403         /* [in] */ IDOMNode* oldChild,
404         /* [retval][out] */ IDOMNode** result) { return DOMNode::appendChild(oldChild, result); }
405     
406     virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
407         /* [retval][out] */ BOOL* result) { return DOMNode::hasChildNodes(result); }
408     
409     virtual HRESULT STDMETHODCALLTYPE cloneNode(
410         /* [in] */ BOOL deep,
411         /* [retval][out] */ IDOMNode** result) { return DOMNode::cloneNode(deep, result); }
412     
413     virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMNode::normalize(); }
414     
415     virtual HRESULT STDMETHODCALLTYPE isSupported(
416         /* [in] */ BSTR feature,
417         /* [in] */ BSTR version,
418         /* [retval][out] */ BOOL* result) { return DOMNode::isSupported(feature, version, result); }
419     
420     virtual HRESULT STDMETHODCALLTYPE namespaceURI(
421         /* [retval][out] */ BSTR* result) { return DOMNode::namespaceURI(result); }
422     
423     virtual HRESULT STDMETHODCALLTYPE prefix(
424         /* [retval][out] */ BSTR* result) { return DOMNode::prefix(result); }
425     
426     virtual HRESULT STDMETHODCALLTYPE setPrefix(
427         /* [in] */ BSTR prefix) { return DOMNode::setPrefix(prefix); }
428     
429     virtual HRESULT STDMETHODCALLTYPE localName(
430         /* [retval][out] */ BSTR* result) { return DOMNode::localName(result); }
431     
432     virtual HRESULT STDMETHODCALLTYPE hasAttributes(
433         /* [retval][out] */ BOOL* result) { return DOMNode::hasAttributes(result); }
434
435     virtual HRESULT STDMETHODCALLTYPE isSameNode(
436         /* [in] */ IDOMNode* other,
437         /* [retval][out] */ BOOL* result) { return DOMNode::isSameNode(other, result); }
438     
439     virtual HRESULT STDMETHODCALLTYPE isEqualNode(
440         /* [in] */ IDOMNode* other,
441         /* [retval][out] */ BOOL* result) { return DOMNode::isEqualNode(other, result); }
442     
443     virtual HRESULT STDMETHODCALLTYPE textContent(
444         /* [retval][out] */ BSTR* result) { return DOMNode::textContent(result); }
445     
446     virtual HRESULT STDMETHODCALLTYPE setTextContent(
447         /* [in] */ BSTR text) { return DOMNode::setTextContent(text); }
448     
449     // IDOMDocument
450     virtual HRESULT STDMETHODCALLTYPE doctype(
451         /* [retval][out] */ IDOMDocumentType** result);
452     
453     virtual HRESULT STDMETHODCALLTYPE implementation(
454         /* [retval][out] */ IDOMImplementation** result);
455     
456     virtual HRESULT STDMETHODCALLTYPE documentElement(
457         /* [retval][out] */ IDOMElement** result);
458     
459     virtual HRESULT STDMETHODCALLTYPE createElement(
460         /* [in] */ BSTR tagName,
461         /* [retval][out] */ IDOMElement** result);
462     
463     virtual HRESULT STDMETHODCALLTYPE createDocumentFragment(
464         /* [retval][out] */ IDOMDocumentFragment** result);
465     
466     virtual HRESULT STDMETHODCALLTYPE createTextNode(
467         /* [in] */ BSTR data,
468         /* [retval][out] */ IDOMText** result);
469     
470     virtual HRESULT STDMETHODCALLTYPE createComment(
471         /* [in] */ BSTR data,
472         /* [retval][out] */ IDOMComment** result);
473     
474     virtual HRESULT STDMETHODCALLTYPE createCDATASection(
475         /* [in] */ BSTR data,
476         /* [retval][out] */ IDOMCDATASection** result);
477     
478     virtual HRESULT STDMETHODCALLTYPE createProcessingInstruction(
479         /* [in] */ BSTR target,
480         /* [in] */ BSTR data,
481         /* [retval][out] */ IDOMProcessingInstruction** result);
482     
483     virtual HRESULT STDMETHODCALLTYPE createAttribute(
484         /* [in] */ BSTR name,
485         /* [retval][out] */ IDOMAttr** result);
486     
487     virtual HRESULT STDMETHODCALLTYPE createEntityReference(
488         /* [in] */ BSTR name,
489         /* [retval][out] */ IDOMEntityReference** result);
490     
491     virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
492         /* [in] */ BSTR tagName,
493         /* [retval][out] */ IDOMNodeList** result);
494     
495     virtual HRESULT STDMETHODCALLTYPE importNode(
496         /* [in] */ IDOMNode* importedNode,
497         /* [in] */ BOOL deep,
498         /* [retval][out] */ IDOMNode** result);
499     
500     virtual HRESULT STDMETHODCALLTYPE createElementNS(
501         /* [in] */ BSTR namespaceURI,
502         /* [in] */ BSTR qualifiedName,
503         /* [retval][out] */ IDOMElement** result);
504     
505     virtual HRESULT STDMETHODCALLTYPE createAttributeNS(
506         /* [in] */ BSTR namespaceURI,
507         /* [in] */ BSTR qualifiedName,
508         /* [retval][out] */ IDOMAttr** result);
509     
510     virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
511         /* [in] */ BSTR namespaceURI,
512         /* [in] */ BSTR localName,
513         /* [retval][out] */ IDOMNodeList** result);
514     
515     virtual HRESULT STDMETHODCALLTYPE getElementById(
516         /* [in] */ BSTR elementId,
517         /* [retval][out] */ IDOMElement** result);
518
519     // IDOMViewCSS
520     virtual HRESULT STDMETHODCALLTYPE getComputedStyle(
521         /* [in] */ IDOMElement* elt,
522         /* [in] */ BSTR pseudoElt,
523         /* [retval][out] */ IDOMCSSStyleDeclaration** result);
524
525     // IDOMDocumentEvent
526     virtual HRESULT STDMETHODCALLTYPE createEvent(
527         /* [in] */ BSTR eventType,
528         /* [retval][out] */ IDOMEvent** result);
529
530     // DOMDocument
531     WebCore::Document* document() { return m_document; }
532
533 protected:
534     WebCore::Document* m_document;
535 };
536
537 class DOMWindow : public DOMObject, public IDOMWindow, public IDOMEventTarget {
538 protected:
539     DOMWindow(WebCore::DOMWindow*);
540     ~DOMWindow();
541
542 public:
543     static IDOMWindow* createInstance(WebCore::DOMWindow*);
544
545 public:
546     // IUnknown
547     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
548     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
549     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
550
551     // IWebScriptObject
552     virtual HRESULT STDMETHODCALLTYPE throwException(
553         /* [in] */ BSTR exceptionMessage,
554         /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
555     
556     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
557         /* [in] */ BSTR name,
558         /* [size_is][in] */ const VARIANT args[  ],
559         /* [in] */ int cArgs,
560         /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
561     
562     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
563         /* [in] */ BSTR script,
564         /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
565     
566     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
567         /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
568     
569     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
570         /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
571     
572     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
573         /* [in] */ unsigned int index,
574         /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
575     
576     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
577         /* [in] */ unsigned int index,
578         /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
579     
580     virtual HRESULT STDMETHODCALLTYPE setException(
581         /* [in] */ BSTR description) { return DOMObject::setException(description); }
582
583     virtual HRESULT STDMETHODCALLTYPE document(
584         /* [out, retval] */ IDOMDocument**);
585
586     virtual HRESULT STDMETHODCALLTYPE getComputedStyle(
587         /* [in] */ IDOMElement*, 
588         /* [in] */ BSTR);
589
590     virtual HRESULT STDMETHODCALLTYPE getMatchedCSSRules(
591         /* [in] */ IDOMElement*, 
592         /* [in] */ BSTR, 
593         /* [in] */ BOOL, 
594         /* [out, retval] */ IDOMCSSRuleList**);
595
596     virtual HRESULT STDMETHODCALLTYPE devicePixelRatio(
597         /* [out, retval] */ double*);
598
599     virtual HRESULT STDMETHODCALLTYPE addEventListener(
600         /* [in] */ BSTR,
601         /* [in] */ IDOMEventListener *,
602         /* [in] */ BOOL);
603     
604     virtual HRESULT STDMETHODCALLTYPE removeEventListener(
605         /* [in] */ BSTR,
606         /* [in] */ IDOMEventListener *,
607         /* [in] */ BOOL);
608     
609     virtual HRESULT STDMETHODCALLTYPE dispatchEvent(
610         /* [in] */ IDOMEvent *,
611         /* [retval][out] */ BOOL *);
612
613     // DOMWindow
614     WebCore::DOMWindow* window() { return m_window; }
615
616 protected:
617     WebCore::DOMWindow* m_window;
618 };
619
620
621
622 class DOMElement : public DOMNode, public IDOMElement, public IDOMElementPrivate, public IDOMNodeExtensions, public IDOMElementCSSInlineStyle, public IDOMElementExtensions {
623 protected:
624     DOMElement(WebCore::Element* e);
625     ~DOMElement();
626
627 public:
628     static IDOMElement* createInstance(WebCore::Element* e);
629
630     // IUnknown
631     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
632     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMNode::AddRef(); }
633     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMNode::Release(); }
634
635     // IWebScriptObject
636     virtual HRESULT STDMETHODCALLTYPE throwException(
637         /* [in] */ BSTR exceptionMessage,
638         /* [retval][out] */ BOOL* result) { return DOMNode::throwException(exceptionMessage, result); }
639     
640     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
641         /* [in] */ BSTR name,
642         /* [size_is][in] */ const VARIANT args[  ],
643         /* [in] */ int cArgs,
644         /* [retval][out] */ VARIANT* result) { return DOMNode::callWebScriptMethod(name, args, cArgs, result); }
645     
646     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
647         /* [in] */ BSTR script,
648         /* [retval][out] */ VARIANT* result) { return DOMNode::evaluateWebScript(script, result); }
649     
650     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
651         /* [in] */ BSTR name) { return DOMNode::removeWebScriptKey(name); }
652     
653     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
654         /* [retval][out] */ BSTR* stringRepresentation) { return DOMNode::stringRepresentation(stringRepresentation); }
655     
656     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
657         /* [in] */ unsigned int index,
658         /* [retval][out] */ VARIANT* result) { return DOMNode::webScriptValueAtIndex(index, result); }
659     
660     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
661         /* [in] */ unsigned int index,
662         /* [in] */ VARIANT val) { return DOMNode::setWebScriptValueAtIndex(index, val); }
663     
664     virtual HRESULT STDMETHODCALLTYPE setException(
665         /* [in] */ BSTR description) { return DOMNode::setException(description); }
666
667     // IDOMNode
668     virtual HRESULT STDMETHODCALLTYPE nodeName(
669         /* [retval][out] */ BSTR* result) { return DOMNode::nodeName(result); }
670     
671     virtual HRESULT STDMETHODCALLTYPE nodeValue(
672         /* [retval][out] */ BSTR* result) { return DOMNode::nodeValue(result); }
673     
674     virtual HRESULT STDMETHODCALLTYPE setNodeValue(
675         /* [in] */ BSTR value) { return DOMNode::setNodeValue(value); }
676     
677     virtual HRESULT STDMETHODCALLTYPE nodeType(
678         /* [retval][out] */ unsigned short* result) { return DOMNode::nodeType(result); }
679     
680     virtual HRESULT STDMETHODCALLTYPE parentNode(
681         /* [retval][out] */ IDOMNode** result) { return DOMNode::parentNode(result); }
682     
683     virtual HRESULT STDMETHODCALLTYPE childNodes(
684         /* [retval][out] */ IDOMNodeList** result) { return DOMNode::childNodes(result); }
685     
686     virtual HRESULT STDMETHODCALLTYPE firstChild(
687         /* [retval][out] */ IDOMNode** result) { return DOMNode::firstChild(result); }
688     
689     virtual HRESULT STDMETHODCALLTYPE lastChild(
690         /* [retval][out] */ IDOMNode** result) { return DOMNode::lastChild(result); }
691     
692     virtual HRESULT STDMETHODCALLTYPE previousSibling(
693         /* [retval][out] */ IDOMNode** result) { return DOMNode::previousSibling(result); }
694     
695     virtual HRESULT STDMETHODCALLTYPE nextSibling(
696         /* [retval][out] */ IDOMNode** result) { return DOMNode::nextSibling(result); }
697     
698     virtual HRESULT STDMETHODCALLTYPE attributes(
699         /* [retval][out] */ IDOMNamedNodeMap** result) { return DOMNode::attributes(result); }
700     
701     virtual HRESULT STDMETHODCALLTYPE ownerDocument(
702         /* [retval][out] */ IDOMDocument** result) { return DOMNode::ownerDocument(result); }
703     
704     virtual HRESULT STDMETHODCALLTYPE insertBefore(
705         /* [in] */ IDOMNode* newChild,
706         /* [in] */ IDOMNode* refChild,
707         /* [retval][out] */ IDOMNode** result) { return DOMNode::insertBefore(newChild, refChild, result); }
708     
709     virtual HRESULT STDMETHODCALLTYPE replaceChild(
710         /* [in] */ IDOMNode* newChild,
711         /* [in] */ IDOMNode* oldChild,
712         /* [retval][out] */ IDOMNode** result) { return DOMNode::replaceChild(newChild, oldChild, result); }
713     
714     virtual HRESULT STDMETHODCALLTYPE removeChild(
715         /* [in] */ IDOMNode* oldChild,
716         /* [retval][out] */ IDOMNode** result) { return DOMNode::removeChild(oldChild, result); }
717     
718     virtual HRESULT STDMETHODCALLTYPE appendChild(
719         /* [in] */ IDOMNode* oldChild,
720         /* [retval][out] */ IDOMNode** result) { return DOMNode::appendChild(oldChild, result); }
721     
722     virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
723         /* [retval][out] */ BOOL* result) { return DOMNode::hasChildNodes(result); }
724     
725     virtual HRESULT STDMETHODCALLTYPE cloneNode(
726         /* [in] */ BOOL deep,
727         /* [retval][out] */ IDOMNode** result) { return DOMNode::cloneNode(deep, result); }
728     
729     virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMNode::normalize(); }
730     
731     virtual HRESULT STDMETHODCALLTYPE isSupported(
732         /* [in] */ BSTR feature,
733         /* [in] */ BSTR version,
734         /* [retval][out] */ BOOL* result) { return DOMNode::isSupported(feature, version, result); }
735     
736     virtual HRESULT STDMETHODCALLTYPE namespaceURI(
737         /* [retval][out] */ BSTR* result) { return DOMNode::namespaceURI(result); }
738     
739     virtual HRESULT STDMETHODCALLTYPE prefix(
740         /* [retval][out] */ BSTR* result) { return DOMNode::prefix(result); }
741     
742     virtual HRESULT STDMETHODCALLTYPE setPrefix(
743         /* [in] */ BSTR prefix) { return DOMNode::setPrefix(prefix); }
744     
745     virtual HRESULT STDMETHODCALLTYPE localName(
746         /* [retval][out] */ BSTR* result) { return DOMNode::localName(result); }
747     
748     virtual HRESULT STDMETHODCALLTYPE hasAttributes(
749         /* [retval][out] */ BOOL* result) { return DOMNode::hasAttributes(result); }
750
751     virtual HRESULT STDMETHODCALLTYPE isSameNode(
752         /* [in] */ IDOMNode* other,
753         /* [retval][out] */ BOOL* result) { return DOMNode::isSameNode(other, result); }
754     
755     virtual HRESULT STDMETHODCALLTYPE isEqualNode(
756         /* [in] */ IDOMNode* other,
757         /* [retval][out] */ BOOL* result) { return DOMNode::isEqualNode(other, result); }
758     
759     virtual HRESULT STDMETHODCALLTYPE textContent(
760         /* [retval][out] */ BSTR* result) { return DOMNode::textContent(result); }
761     
762     virtual HRESULT STDMETHODCALLTYPE setTextContent(
763         /* [in] */ BSTR text) { return DOMNode::setTextContent(text); }
764     
765     // IDOMElement
766     virtual HRESULT STDMETHODCALLTYPE tagName(
767         /* [retval][out] */ BSTR* result);
768     
769     virtual HRESULT STDMETHODCALLTYPE getAttribute(
770         /* [in] */ BSTR name,
771         /* [retval][out] */ BSTR* result);
772     
773     virtual HRESULT STDMETHODCALLTYPE setAttribute(
774         /* [in] */ BSTR name,
775         /* [in] */ BSTR value);
776     
777     virtual HRESULT STDMETHODCALLTYPE removeAttribute(
778         /* [in] */ BSTR name);
779     
780     virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
781         /* [in] */ BSTR name,
782         /* [retval][out] */ IDOMAttr** result);
783     
784     virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
785         /* [in] */ IDOMAttr *newAttr,
786         /* [retval][out] */ IDOMAttr** result);
787     
788     virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
789         /* [in] */ IDOMAttr *oldAttr,
790         /* [retval][out] */ IDOMAttr** result);
791     
792     virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
793         /* [in] */ BSTR name,
794         /* [retval][out] */ IDOMNodeList** result);
795     
796     virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
797         /* [in] */ BSTR namespaceURI,
798         /* [in] */ BSTR localName,
799         /* [retval][out] */ BSTR* result);
800     
801     virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
802         /* [in] */ BSTR namespaceURI,
803         /* [in] */ BSTR qualifiedName,
804         /* [in] */ BSTR value);
805     
806     virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
807         /* [in] */ BSTR namespaceURI,
808         /* [in] */ BSTR localName);
809     
810     virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
811         /* [in] */ BSTR namespaceURI,
812         /* [in] */ BSTR localName,
813         /* [retval][out] */ IDOMAttr** result);
814     
815     virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
816         /* [in] */ IDOMAttr *newAttr,
817         /* [retval][out] */ IDOMAttr** result);
818     
819     virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
820         /* [in] */ BSTR namespaceURI,
821         /* [in] */ BSTR localName,
822         /* [retval][out] */ IDOMNodeList** result);
823     
824     virtual HRESULT STDMETHODCALLTYPE hasAttribute(
825         /* [in] */ BSTR name,
826         /* [retval][out] */ BOOL* result);
827     
828     virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
829         /* [in] */ BSTR namespaceURI,
830         /* [in] */ BSTR localName,
831         /* [retval][out] */ BOOL* result);
832
833     virtual HRESULT STDMETHODCALLTYPE focus( void);
834     
835     virtual HRESULT STDMETHODCALLTYPE blur( void);
836
837     // IDOMNodeExtensions
838     virtual HRESULT STDMETHODCALLTYPE boundingBox(
839         /* [retval][out] */ LPRECT rect);
840     
841     virtual HRESULT STDMETHODCALLTYPE lineBoxRects(
842         /* [size_is][in] */ RECT* rects,
843         /* [in] */ int cRects);
844
845     // IDOMElementPrivate
846     virtual HRESULT STDMETHODCALLTYPE coreElement(
847         void** element);
848
849     virtual HRESULT STDMETHODCALLTYPE isEqual(
850         /* [in] */ IDOMElement* other,
851         /* [retval][out] */ BOOL* result);
852
853     virtual HRESULT STDMETHODCALLTYPE isFocused(
854         /* [retval][out] */ BOOL* result);
855
856     virtual HRESULT STDMETHODCALLTYPE innerText(
857         /* [retval][out] */ BSTR* result);
858
859     virtual HRESULT STDMETHODCALLTYPE font(
860         WebFontDescription* webFontDescription);
861
862     virtual HRESULT STDMETHODCALLTYPE renderedImage(
863         /* [retval][out] */ HBITMAP* image);
864
865     virtual HRESULT STDMETHODCALLTYPE markerTextForListItem(
866         /* [retval][out] */ BSTR* markerText);
867
868     virtual HRESULT STDMETHODCALLTYPE shadowPseudoId(
869         /* [retval][out] */ BSTR* result);
870
871     // IDOMElementCSSInlineStyle
872     virtual HRESULT STDMETHODCALLTYPE style(
873         /* [retval][out] */ IDOMCSSStyleDeclaration** result);
874
875     // IDOMElementExtensions
876     virtual HRESULT STDMETHODCALLTYPE offsetLeft(
877         /* [retval][out] */ int* result);
878     
879     virtual HRESULT STDMETHODCALLTYPE offsetTop(
880         /* [retval][out] */ int* result);
881     
882     virtual HRESULT STDMETHODCALLTYPE offsetWidth(
883         /* [retval][out] */ int* result);
884     
885     virtual HRESULT STDMETHODCALLTYPE offsetHeight(
886         /* [retval][out] */ int* result);
887     
888     virtual HRESULT STDMETHODCALLTYPE offsetParent(
889         /* [retval][out] */ IDOMElement** result);
890     
891     virtual HRESULT STDMETHODCALLTYPE clientWidth(
892         /* [retval][out] */ int* result);
893     
894     virtual HRESULT STDMETHODCALLTYPE clientHeight(
895         /* [retval][out] */ int* result);
896     
897     virtual HRESULT STDMETHODCALLTYPE scrollLeft(
898         /* [retval][out] */ int* result);
899     
900     virtual HRESULT STDMETHODCALLTYPE setScrollLeft(
901         /* [in] */ int newScrollLeft);
902     
903     virtual HRESULT STDMETHODCALLTYPE scrollTop(
904         /* [retval][out] */ int* result);
905     
906     virtual HRESULT STDMETHODCALLTYPE setScrollTop(
907         /* [in] */ int newScrollTop);
908     
909     virtual HRESULT STDMETHODCALLTYPE scrollWidth(
910         /* [retval][out] */ int* result);
911     
912     virtual HRESULT STDMETHODCALLTYPE scrollHeight(
913         /* [retval][out] */ int* result);
914     
915     virtual HRESULT STDMETHODCALLTYPE scrollIntoView(
916         /* [in] */ BOOL alignWithTop);
917     
918     virtual HRESULT STDMETHODCALLTYPE scrollIntoViewIfNeeded(
919         /* [in] */ BOOL centerIfNeeded);
920
921     // DOMElement
922     WebCore::Element* element() { return m_element; }
923
924 protected:
925     WebCore::Element* m_element;
926 };
927
928 #endif