[Win] Expose missing editing features through WebView interface
[WebKit-https.git] / Source / WebKit / win / DOMCoreClasses.h
1 /*
2  * Copyright (C) 2006, 2007, 2014 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 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 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 class Range;
39 }
40
41
42 class DOMObject : public WebScriptObject, public IDOMObject {
43 public:
44     // IUnknown
45     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
46     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return WebScriptObject::AddRef(); }
47     virtual ULONG STDMETHODCALLTYPE Release(void) { return WebScriptObject::Release(); }
48
49     // IWebScriptObject
50     virtual HRESULT STDMETHODCALLTYPE throwException(
51         /* [in] */ BSTR exceptionMessage,
52         /* [retval][out] */ BOOL* result) { return WebScriptObject::throwException(exceptionMessage, result); }
53     
54     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
55         /* [in] */ BSTR name,
56         /* [size_is][in] */ const VARIANT args[  ],
57         /* [in] */ int cArgs,
58         /* [retval][out] */ VARIANT* result) { return WebScriptObject::callWebScriptMethod(name, args, cArgs, result); }
59     
60     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
61         /* [in] */ BSTR script,
62         /* [retval][out] */ VARIANT* result) { return WebScriptObject::evaluateWebScript(script, result); }
63     
64     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
65         /* [in] */ BSTR name) { return WebScriptObject::removeWebScriptKey(name); }
66     
67     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
68         /* [retval][out] */ BSTR* stringRepresentation) { return WebScriptObject::stringRepresentation(stringRepresentation); }
69     
70     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
71         /* [in] */ unsigned int index,
72         /* [retval][out] */ VARIANT* result) { return WebScriptObject::webScriptValueAtIndex(index, result); }
73     
74     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
75         /* [in] */ unsigned int index,
76         /* [in] */ VARIANT val) { return WebScriptObject::setWebScriptValueAtIndex(index, val); }
77     
78     virtual HRESULT STDMETHODCALLTYPE setException(
79         /* [in] */ BSTR description) { return WebScriptObject::setException(description); }
80 };
81
82 class DECLSPEC_UUID("062AEEE3-9E42-44DC-A8A9-236B216FE011") DOMNode : public DOMObject, public IDOMNode, public IDOMEventTarget {
83 protected:
84     DOMNode(WebCore::Node* n);
85     ~DOMNode();
86
87 public:
88     static IDOMNode* createInstance(WebCore::Node* n);
89
90 public:
91     // IUnknown
92     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
93     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
94     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
95
96     // IWebScriptObject
97     virtual HRESULT STDMETHODCALLTYPE throwException(
98         /* [in] */ BSTR exceptionMessage,
99         /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
100     
101     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
102         /* [in] */ BSTR name,
103         /* [size_is][in] */ const VARIANT args[  ],
104         /* [in] */ int cArgs,
105         /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
106     
107     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
108         /* [in] */ BSTR script,
109         /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
110     
111     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
112         /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
113     
114     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
115         /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
116     
117     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
118         /* [in] */ unsigned int index,
119         /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
120     
121     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
122         /* [in] */ unsigned int index,
123         /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
124     
125     virtual HRESULT STDMETHODCALLTYPE setException(
126         /* [in] */ BSTR description) { return DOMObject::setException(description); }
127
128     // IDOMNode
129     virtual HRESULT STDMETHODCALLTYPE nodeName(
130         /* [retval][out] */ BSTR* result);
131     
132     virtual HRESULT STDMETHODCALLTYPE nodeValue(
133         /* [retval][out] */ BSTR* result);
134     
135     virtual HRESULT STDMETHODCALLTYPE setNodeValue(
136         /* [in] */ BSTR value);
137     
138     virtual HRESULT STDMETHODCALLTYPE nodeType(
139         /* [retval][out] */ unsigned short* result);
140     
141     virtual HRESULT STDMETHODCALLTYPE parentNode(
142         /* [retval][out] */ IDOMNode** result);
143     
144     virtual HRESULT STDMETHODCALLTYPE childNodes(
145         /* [retval][out] */ IDOMNodeList** result);
146     
147     virtual HRESULT STDMETHODCALLTYPE firstChild(
148         /* [retval][out] */ IDOMNode** result);
149     
150     virtual HRESULT STDMETHODCALLTYPE lastChild(
151         /* [retval][out] */ IDOMNode** result);
152     
153     virtual HRESULT STDMETHODCALLTYPE previousSibling(
154         /* [retval][out] */ IDOMNode** result);
155     
156     virtual HRESULT STDMETHODCALLTYPE nextSibling(
157         /* [retval][out] */ IDOMNode** result);
158     
159     virtual HRESULT STDMETHODCALLTYPE attributes(
160         /* [retval][out] */ IDOMNamedNodeMap** result);
161     
162     virtual HRESULT STDMETHODCALLTYPE ownerDocument(
163         /* [retval][out] */ IDOMDocument** result);
164     
165     virtual HRESULT STDMETHODCALLTYPE insertBefore(
166         /* [in] */ IDOMNode* newChild,
167         /* [in] */ IDOMNode* refChild,
168         /* [retval][out] */ IDOMNode** result);
169     
170     virtual HRESULT STDMETHODCALLTYPE replaceChild(
171         /* [in] */ IDOMNode* newChild,
172         /* [in] */ IDOMNode* oldChild,
173         /* [retval][out] */ IDOMNode** result);
174     
175     virtual HRESULT STDMETHODCALLTYPE removeChild(
176         /* [in] */ IDOMNode* oldChild,
177         /* [retval][out] */ IDOMNode** result);
178     
179     virtual HRESULT STDMETHODCALLTYPE appendChild(
180         /* [in] */ IDOMNode* oldChild,
181         /* [retval][out] */ IDOMNode** result);
182     
183     virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
184         /* [retval][out] */ BOOL* result);
185     
186     virtual HRESULT STDMETHODCALLTYPE cloneNode(
187         /* [in] */ BOOL deep,
188         /* [retval][out] */ IDOMNode** result);
189     
190     virtual HRESULT STDMETHODCALLTYPE normalize( void);
191     
192     virtual HRESULT STDMETHODCALLTYPE isSupported(
193         /* [in] */ BSTR feature,
194         /* [in] */ BSTR version,
195         /* [retval][out] */ BOOL* result);
196     
197     virtual HRESULT STDMETHODCALLTYPE namespaceURI(
198         /* [retval][out] */ BSTR* result);
199     
200     virtual HRESULT STDMETHODCALLTYPE prefix(
201         /* [retval][out] */ BSTR* result);
202     
203     virtual HRESULT STDMETHODCALLTYPE setPrefix(
204         /* [in] */ BSTR prefix);
205     
206     virtual HRESULT STDMETHODCALLTYPE localName(
207         /* [retval][out] */ BSTR* result);
208     
209     virtual HRESULT STDMETHODCALLTYPE hasAttributes(
210         /* [retval][out] */ BOOL* result);
211
212     virtual HRESULT STDMETHODCALLTYPE isSameNode(
213         /* [in] */ IDOMNode* other,
214         /* [retval][out] */ BOOL* result);
215     
216     virtual HRESULT STDMETHODCALLTYPE isEqualNode(
217         /* [in] */ IDOMNode* other,
218         /* [retval][out] */ BOOL* result);
219     
220     virtual HRESULT STDMETHODCALLTYPE textContent(
221         /* [retval][out] */ BSTR* result);
222     
223     virtual HRESULT STDMETHODCALLTYPE setTextContent(
224         /* [in] */ BSTR text);
225
226     // IDOMEventTarget
227     virtual HRESULT STDMETHODCALLTYPE addEventListener(
228         /* [in] */ BSTR type,
229         /* [in] */ IDOMEventListener *listener,
230         /* [in] */ BOOL useCapture);
231     
232     virtual HRESULT STDMETHODCALLTYPE removeEventListener(
233         /* [in] */ BSTR type,
234         /* [in] */ IDOMEventListener *listener,
235         /* [in] */ BOOL useCapture);
236     
237     virtual HRESULT STDMETHODCALLTYPE dispatchEvent(
238         /* [in] */ IDOMEvent *evt,
239         /* [retval][out] */ BOOL* result);
240
241     // DOMNode
242     WebCore::Node* node() const { return m_node; }
243
244 protected:
245     WebCore::Node* m_node;
246 };
247
248 class DOMNodeList : public DOMObject, public IDOMNodeList {
249 protected:
250     DOMNodeList(WebCore::NodeList* l);
251     ~DOMNodeList();
252
253 public:
254     static IDOMNodeList* createInstance(WebCore::NodeList* l);
255
256 public:
257     // IUnknown
258     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
259     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
260     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
261
262     // IWebScriptObject
263     virtual HRESULT STDMETHODCALLTYPE throwException(
264         /* [in] */ BSTR exceptionMessage,
265         /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
266     
267     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
268         /* [in] */ BSTR name,
269         /* [size_is][in] */ const VARIANT args[  ],
270         /* [in] */ int cArgs,
271         /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
272     
273     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
274         /* [in] */ BSTR script,
275         /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
276     
277     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
278         /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
279     
280     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
281         /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
282     
283     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
284         /* [in] */ unsigned int index,
285         /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
286     
287     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
288         /* [in] */ unsigned int index,
289         /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
290     
291     virtual HRESULT STDMETHODCALLTYPE setException(
292         /* [in] */ BSTR description) { return DOMObject::setException(description); }
293
294     // IDOMNodeList
295     virtual HRESULT STDMETHODCALLTYPE item(
296         /* [in] */ UINT index,
297         /* [retval][out] */ IDOMNode** result);
298     
299     virtual HRESULT STDMETHODCALLTYPE length(
300         /* [retval][out] */ UINT* result);
301
302 protected:
303     WebCore::NodeList* m_nodeList;
304 };
305
306 class DOMDocument : public DOMNode, public IDOMDocument, public IDOMViewCSS, public IDOMDocumentEvent {
307 protected:
308     DOMDocument(WebCore::Document* d);
309     ~DOMDocument();
310
311 public:
312     static IDOMDocument* createInstance(WebCore::Document* d);
313
314 public:
315     // IUnknown
316     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
317     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMNode::AddRef(); }
318     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMNode::Release(); }
319
320     // IWebScriptObject
321     virtual HRESULT STDMETHODCALLTYPE throwException(
322         /* [in] */ BSTR exceptionMessage,
323         /* [retval][out] */ BOOL* result) { return DOMNode::throwException(exceptionMessage, result); }
324     
325     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
326         /* [in] */ BSTR name,
327         /* [size_is][in] */ const VARIANT args[  ],
328         /* [in] */ int cArgs,
329         /* [retval][out] */ VARIANT* result) { return DOMNode::callWebScriptMethod(name, args, cArgs, result); }
330     
331     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
332         /* [in] */ BSTR script,
333         /* [retval][out] */ VARIANT* result) { return DOMNode::evaluateWebScript(script, result); }
334     
335     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
336         /* [in] */ BSTR name) { return DOMNode::removeWebScriptKey(name); }
337     
338     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
339         /* [retval][out] */ BSTR* stringRepresentation) { return DOMNode::stringRepresentation(stringRepresentation); }
340     
341     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
342         /* [in] */ unsigned int index,
343         /* [retval][out] */ VARIANT* result) { return DOMNode::webScriptValueAtIndex(index, result); }
344     
345     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
346         /* [in] */ unsigned int index,
347         /* [in] */ VARIANT val) { return DOMNode::setWebScriptValueAtIndex(index, val); }
348     
349     virtual HRESULT STDMETHODCALLTYPE setException(
350         /* [in] */ BSTR description) { return DOMNode::setException(description); }
351
352     // IDOMNode
353     virtual HRESULT STDMETHODCALLTYPE nodeName(
354         /* [retval][out] */ BSTR* result) { return DOMNode::nodeName(result); }
355     
356     virtual HRESULT STDMETHODCALLTYPE nodeValue(
357         /* [retval][out] */ BSTR* result) { return DOMNode::nodeValue(result); }
358     
359     virtual HRESULT STDMETHODCALLTYPE setNodeValue(
360         /* [in] */ BSTR value) { return DOMNode::setNodeValue(value); }
361     
362     virtual HRESULT STDMETHODCALLTYPE nodeType(
363         /* [retval][out] */ unsigned short* result) { return DOMNode::nodeType(result); }
364     
365     virtual HRESULT STDMETHODCALLTYPE parentNode(
366         /* [retval][out] */ IDOMNode** result) { return DOMNode::parentNode(result); }
367     
368     virtual HRESULT STDMETHODCALLTYPE childNodes(
369         /* [retval][out] */ IDOMNodeList** result) { return DOMNode::childNodes(result); }
370     
371     virtual HRESULT STDMETHODCALLTYPE firstChild(
372         /* [retval][out] */ IDOMNode** result) { return DOMNode::firstChild(result); }
373     
374     virtual HRESULT STDMETHODCALLTYPE lastChild(
375         /* [retval][out] */ IDOMNode** result) { return DOMNode::lastChild(result); }
376     
377     virtual HRESULT STDMETHODCALLTYPE previousSibling(
378         /* [retval][out] */ IDOMNode** result) { return DOMNode::previousSibling(result); }
379     
380     virtual HRESULT STDMETHODCALLTYPE nextSibling(
381         /* [retval][out] */ IDOMNode** result) { return DOMNode::nextSibling(result); }
382     
383     virtual HRESULT STDMETHODCALLTYPE attributes(
384         /* [retval][out] */ IDOMNamedNodeMap** result) { return DOMNode::attributes(result); }
385     
386     virtual HRESULT STDMETHODCALLTYPE ownerDocument(
387         /* [retval][out] */ IDOMDocument** result) { return DOMNode::ownerDocument(result); }
388     
389     virtual HRESULT STDMETHODCALLTYPE insertBefore(
390         /* [in] */ IDOMNode* newChild,
391         /* [in] */ IDOMNode* refChild,
392         /* [retval][out] */ IDOMNode** result) { return DOMNode::insertBefore(newChild, refChild, result); }
393     
394     virtual HRESULT STDMETHODCALLTYPE replaceChild(
395         /* [in] */ IDOMNode* newChild,
396         /* [in] */ IDOMNode* oldChild,
397         /* [retval][out] */ IDOMNode** result) { return DOMNode::replaceChild(newChild, oldChild, result); }
398     
399     virtual HRESULT STDMETHODCALLTYPE removeChild(
400         /* [in] */ IDOMNode* oldChild,
401         /* [retval][out] */ IDOMNode** result) { return DOMNode::removeChild(oldChild, result); }
402     
403     virtual HRESULT STDMETHODCALLTYPE appendChild(
404         /* [in] */ IDOMNode* oldChild,
405         /* [retval][out] */ IDOMNode** result) { return DOMNode::appendChild(oldChild, result); }
406     
407     virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
408         /* [retval][out] */ BOOL* result) { return DOMNode::hasChildNodes(result); }
409     
410     virtual HRESULT STDMETHODCALLTYPE cloneNode(
411         /* [in] */ BOOL deep,
412         /* [retval][out] */ IDOMNode** result) { return DOMNode::cloneNode(deep, result); }
413     
414     virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMNode::normalize(); }
415     
416     virtual HRESULT STDMETHODCALLTYPE isSupported(
417         /* [in] */ BSTR feature,
418         /* [in] */ BSTR version,
419         /* [retval][out] */ BOOL* result) { return DOMNode::isSupported(feature, version, result); }
420     
421     virtual HRESULT STDMETHODCALLTYPE namespaceURI(
422         /* [retval][out] */ BSTR* result) { return DOMNode::namespaceURI(result); }
423     
424     virtual HRESULT STDMETHODCALLTYPE prefix(
425         /* [retval][out] */ BSTR* result) { return DOMNode::prefix(result); }
426     
427     virtual HRESULT STDMETHODCALLTYPE setPrefix(
428         /* [in] */ BSTR prefix) { return DOMNode::setPrefix(prefix); }
429     
430     virtual HRESULT STDMETHODCALLTYPE localName(
431         /* [retval][out] */ BSTR* result) { return DOMNode::localName(result); }
432     
433     virtual HRESULT STDMETHODCALLTYPE hasAttributes(
434         /* [retval][out] */ BOOL* result) { return DOMNode::hasAttributes(result); }
435
436     virtual HRESULT STDMETHODCALLTYPE isSameNode(
437         /* [in] */ IDOMNode* other,
438         /* [retval][out] */ BOOL* result) { return DOMNode::isSameNode(other, result); }
439     
440     virtual HRESULT STDMETHODCALLTYPE isEqualNode(
441         /* [in] */ IDOMNode* other,
442         /* [retval][out] */ BOOL* result) { return DOMNode::isEqualNode(other, result); }
443     
444     virtual HRESULT STDMETHODCALLTYPE textContent(
445         /* [retval][out] */ BSTR* result) { return DOMNode::textContent(result); }
446     
447     virtual HRESULT STDMETHODCALLTYPE setTextContent(
448         /* [in] */ BSTR text) { return DOMNode::setTextContent(text); }
449     
450     // IDOMDocument
451     virtual HRESULT STDMETHODCALLTYPE doctype(
452         /* [retval][out] */ IDOMDocumentType** result);
453     
454     virtual HRESULT STDMETHODCALLTYPE implementation(
455         /* [retval][out] */ IDOMImplementation** result);
456     
457     virtual HRESULT STDMETHODCALLTYPE documentElement(
458         /* [retval][out] */ IDOMElement** result);
459     
460     virtual HRESULT STDMETHODCALLTYPE createElement(
461         /* [in] */ BSTR tagName,
462         /* [retval][out] */ IDOMElement** result);
463     
464     virtual HRESULT STDMETHODCALLTYPE createDocumentFragment(
465         /* [retval][out] */ IDOMDocumentFragment** result);
466     
467     virtual HRESULT STDMETHODCALLTYPE createTextNode(
468         /* [in] */ BSTR data,
469         /* [retval][out] */ IDOMText** result);
470     
471     virtual HRESULT STDMETHODCALLTYPE createComment(
472         /* [in] */ BSTR data,
473         /* [retval][out] */ IDOMComment** result);
474     
475     virtual HRESULT STDMETHODCALLTYPE createCDATASection(
476         /* [in] */ BSTR data,
477         /* [retval][out] */ IDOMCDATASection** result);
478     
479     virtual HRESULT STDMETHODCALLTYPE createProcessingInstruction(
480         /* [in] */ BSTR target,
481         /* [in] */ BSTR data,
482         /* [retval][out] */ IDOMProcessingInstruction** result);
483     
484     virtual HRESULT STDMETHODCALLTYPE createAttribute(
485         /* [in] */ BSTR name,
486         /* [retval][out] */ IDOMAttr** result);
487     
488     virtual HRESULT STDMETHODCALLTYPE createEntityReference(
489         /* [in] */ BSTR name,
490         /* [retval][out] */ IDOMEntityReference** result);
491     
492     virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
493         /* [in] */ BSTR tagName,
494         /* [retval][out] */ IDOMNodeList** result);
495     
496     virtual HRESULT STDMETHODCALLTYPE importNode(
497         /* [in] */ IDOMNode* importedNode,
498         /* [in] */ BOOL deep,
499         /* [retval][out] */ IDOMNode** result);
500     
501     virtual HRESULT STDMETHODCALLTYPE createElementNS(
502         /* [in] */ BSTR namespaceURI,
503         /* [in] */ BSTR qualifiedName,
504         /* [retval][out] */ IDOMElement** result);
505     
506     virtual HRESULT STDMETHODCALLTYPE createAttributeNS(
507         /* [in] */ BSTR namespaceURI,
508         /* [in] */ BSTR qualifiedName,
509         /* [retval][out] */ IDOMAttr** result);
510     
511     virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
512         /* [in] */ BSTR namespaceURI,
513         /* [in] */ BSTR localName,
514         /* [retval][out] */ IDOMNodeList** result);
515     
516     virtual HRESULT STDMETHODCALLTYPE getElementById(
517         /* [in] */ BSTR elementId,
518         /* [retval][out] */ IDOMElement** result);
519
520     // IDOMViewCSS
521     virtual HRESULT STDMETHODCALLTYPE getComputedStyle(
522         /* [in] */ IDOMElement* elt,
523         /* [in] */ BSTR pseudoElt,
524         /* [retval][out] */ IDOMCSSStyleDeclaration** result);
525
526     // IDOMDocumentEvent
527     virtual HRESULT STDMETHODCALLTYPE createEvent(
528         /* [in] */ BSTR eventType,
529         /* [retval][out] */ IDOMEvent** result);
530
531     // DOMDocument
532     WebCore::Document* document() { return m_document; }
533
534 protected:
535     WebCore::Document* m_document;
536 };
537
538 class DOMWindow : public DOMObject, public IDOMWindow, public IDOMEventTarget {
539 protected:
540     DOMWindow(WebCore::DOMWindow*);
541     ~DOMWindow();
542
543 public:
544     static IDOMWindow* createInstance(WebCore::DOMWindow*);
545
546 public:
547     // IUnknown
548     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
549     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
550     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
551
552     // IWebScriptObject
553     virtual HRESULT STDMETHODCALLTYPE throwException(
554         /* [in] */ BSTR exceptionMessage,
555         /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
556     
557     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
558         /* [in] */ BSTR name,
559         /* [size_is][in] */ const VARIANT args[  ],
560         /* [in] */ int cArgs,
561         /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
562     
563     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
564         /* [in] */ BSTR script,
565         /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
566     
567     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
568         /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
569     
570     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
571         /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
572     
573     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
574         /* [in] */ unsigned int index,
575         /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
576     
577     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
578         /* [in] */ unsigned int index,
579         /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
580     
581     virtual HRESULT STDMETHODCALLTYPE setException(
582         /* [in] */ BSTR description) { return DOMObject::setException(description); }
583
584     virtual HRESULT STDMETHODCALLTYPE document(
585         /* [out, retval] */ IDOMDocument**);
586
587     virtual HRESULT STDMETHODCALLTYPE getComputedStyle(
588         /* [in] */ IDOMElement*, 
589         /* [in] */ BSTR);
590
591     virtual HRESULT STDMETHODCALLTYPE getMatchedCSSRules(
592         /* [in] */ IDOMElement*, 
593         /* [in] */ BSTR, 
594         /* [in] */ BOOL, 
595         /* [out, retval] */ IDOMCSSRuleList**);
596
597     virtual HRESULT STDMETHODCALLTYPE devicePixelRatio(
598         /* [out, retval] */ double*);
599
600     virtual HRESULT STDMETHODCALLTYPE addEventListener(
601         /* [in] */ BSTR,
602         /* [in] */ IDOMEventListener *,
603         /* [in] */ BOOL);
604     
605     virtual HRESULT STDMETHODCALLTYPE removeEventListener(
606         /* [in] */ BSTR,
607         /* [in] */ IDOMEventListener *,
608         /* [in] */ BOOL);
609     
610     virtual HRESULT STDMETHODCALLTYPE dispatchEvent(
611         /* [in] */ IDOMEvent *,
612         /* [retval][out] */ BOOL *);
613
614     // DOMWindow
615     WebCore::DOMWindow* window() { return m_window; }
616
617 protected:
618     WebCore::DOMWindow* m_window;
619 };
620
621
622
623 class DOMElement : public DOMNode, public IDOMElement, public IDOMElementPrivate, public IDOMNodeExtensions, public IDOMElementCSSInlineStyle, public IDOMElementExtensions {
624 protected:
625     DOMElement(WebCore::Element* e);
626     ~DOMElement();
627
628 public:
629     static IDOMElement* createInstance(WebCore::Element* e);
630
631     // IUnknown
632     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
633     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMNode::AddRef(); }
634     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMNode::Release(); }
635
636     // IWebScriptObject
637     virtual HRESULT STDMETHODCALLTYPE throwException(
638         /* [in] */ BSTR exceptionMessage,
639         /* [retval][out] */ BOOL* result) { return DOMNode::throwException(exceptionMessage, result); }
640     
641     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
642         /* [in] */ BSTR name,
643         /* [size_is][in] */ const VARIANT args[  ],
644         /* [in] */ int cArgs,
645         /* [retval][out] */ VARIANT* result) { return DOMNode::callWebScriptMethod(name, args, cArgs, result); }
646     
647     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
648         /* [in] */ BSTR script,
649         /* [retval][out] */ VARIANT* result) { return DOMNode::evaluateWebScript(script, result); }
650     
651     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
652         /* [in] */ BSTR name) { return DOMNode::removeWebScriptKey(name); }
653     
654     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
655         /* [retval][out] */ BSTR* stringRepresentation) { return DOMNode::stringRepresentation(stringRepresentation); }
656     
657     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
658         /* [in] */ unsigned int index,
659         /* [retval][out] */ VARIANT* result) { return DOMNode::webScriptValueAtIndex(index, result); }
660     
661     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
662         /* [in] */ unsigned int index,
663         /* [in] */ VARIANT val) { return DOMNode::setWebScriptValueAtIndex(index, val); }
664     
665     virtual HRESULT STDMETHODCALLTYPE setException(
666         /* [in] */ BSTR description) { return DOMNode::setException(description); }
667
668     // IDOMNode
669     virtual HRESULT STDMETHODCALLTYPE nodeName(
670         /* [retval][out] */ BSTR* result) { return DOMNode::nodeName(result); }
671     
672     virtual HRESULT STDMETHODCALLTYPE nodeValue(
673         /* [retval][out] */ BSTR* result) { return DOMNode::nodeValue(result); }
674     
675     virtual HRESULT STDMETHODCALLTYPE setNodeValue(
676         /* [in] */ BSTR value) { return DOMNode::setNodeValue(value); }
677     
678     virtual HRESULT STDMETHODCALLTYPE nodeType(
679         /* [retval][out] */ unsigned short* result) { return DOMNode::nodeType(result); }
680     
681     virtual HRESULT STDMETHODCALLTYPE parentNode(
682         /* [retval][out] */ IDOMNode** result) { return DOMNode::parentNode(result); }
683     
684     virtual HRESULT STDMETHODCALLTYPE childNodes(
685         /* [retval][out] */ IDOMNodeList** result) { return DOMNode::childNodes(result); }
686     
687     virtual HRESULT STDMETHODCALLTYPE firstChild(
688         /* [retval][out] */ IDOMNode** result) { return DOMNode::firstChild(result); }
689     
690     virtual HRESULT STDMETHODCALLTYPE lastChild(
691         /* [retval][out] */ IDOMNode** result) { return DOMNode::lastChild(result); }
692     
693     virtual HRESULT STDMETHODCALLTYPE previousSibling(
694         /* [retval][out] */ IDOMNode** result) { return DOMNode::previousSibling(result); }
695     
696     virtual HRESULT STDMETHODCALLTYPE nextSibling(
697         /* [retval][out] */ IDOMNode** result) { return DOMNode::nextSibling(result); }
698     
699     virtual HRESULT STDMETHODCALLTYPE attributes(
700         /* [retval][out] */ IDOMNamedNodeMap** result) { return DOMNode::attributes(result); }
701     
702     virtual HRESULT STDMETHODCALLTYPE ownerDocument(
703         /* [retval][out] */ IDOMDocument** result) { return DOMNode::ownerDocument(result); }
704     
705     virtual HRESULT STDMETHODCALLTYPE insertBefore(
706         /* [in] */ IDOMNode* newChild,
707         /* [in] */ IDOMNode* refChild,
708         /* [retval][out] */ IDOMNode** result) { return DOMNode::insertBefore(newChild, refChild, result); }
709     
710     virtual HRESULT STDMETHODCALLTYPE replaceChild(
711         /* [in] */ IDOMNode* newChild,
712         /* [in] */ IDOMNode* oldChild,
713         /* [retval][out] */ IDOMNode** result) { return DOMNode::replaceChild(newChild, oldChild, result); }
714     
715     virtual HRESULT STDMETHODCALLTYPE removeChild(
716         /* [in] */ IDOMNode* oldChild,
717         /* [retval][out] */ IDOMNode** result) { return DOMNode::removeChild(oldChild, result); }
718     
719     virtual HRESULT STDMETHODCALLTYPE appendChild(
720         /* [in] */ IDOMNode* oldChild,
721         /* [retval][out] */ IDOMNode** result) { return DOMNode::appendChild(oldChild, result); }
722     
723     virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
724         /* [retval][out] */ BOOL* result) { return DOMNode::hasChildNodes(result); }
725     
726     virtual HRESULT STDMETHODCALLTYPE cloneNode(
727         /* [in] */ BOOL deep,
728         /* [retval][out] */ IDOMNode** result) { return DOMNode::cloneNode(deep, result); }
729     
730     virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMNode::normalize(); }
731     
732     virtual HRESULT STDMETHODCALLTYPE isSupported(
733         /* [in] */ BSTR feature,
734         /* [in] */ BSTR version,
735         /* [retval][out] */ BOOL* result) { return DOMNode::isSupported(feature, version, result); }
736     
737     virtual HRESULT STDMETHODCALLTYPE namespaceURI(
738         /* [retval][out] */ BSTR* result) { return DOMNode::namespaceURI(result); }
739     
740     virtual HRESULT STDMETHODCALLTYPE prefix(
741         /* [retval][out] */ BSTR* result) { return DOMNode::prefix(result); }
742     
743     virtual HRESULT STDMETHODCALLTYPE setPrefix(
744         /* [in] */ BSTR prefix) { return DOMNode::setPrefix(prefix); }
745     
746     virtual HRESULT STDMETHODCALLTYPE localName(
747         /* [retval][out] */ BSTR* result) { return DOMNode::localName(result); }
748     
749     virtual HRESULT STDMETHODCALLTYPE hasAttributes(
750         /* [retval][out] */ BOOL* result) { return DOMNode::hasAttributes(result); }
751
752     virtual HRESULT STDMETHODCALLTYPE isSameNode(
753         /* [in] */ IDOMNode* other,
754         /* [retval][out] */ BOOL* result) { return DOMNode::isSameNode(other, result); }
755     
756     virtual HRESULT STDMETHODCALLTYPE isEqualNode(
757         /* [in] */ IDOMNode* other,
758         /* [retval][out] */ BOOL* result) { return DOMNode::isEqualNode(other, result); }
759     
760     virtual HRESULT STDMETHODCALLTYPE textContent(
761         /* [retval][out] */ BSTR* result) { return DOMNode::textContent(result); }
762     
763     virtual HRESULT STDMETHODCALLTYPE setTextContent(
764         /* [in] */ BSTR text) { return DOMNode::setTextContent(text); }
765     
766     // IDOMElement
767     virtual HRESULT STDMETHODCALLTYPE tagName(
768         /* [retval][out] */ BSTR* result);
769     
770     virtual HRESULT STDMETHODCALLTYPE getAttribute(
771         /* [in] */ BSTR name,
772         /* [retval][out] */ BSTR* result);
773     
774     virtual HRESULT STDMETHODCALLTYPE setAttribute(
775         /* [in] */ BSTR name,
776         /* [in] */ BSTR value);
777     
778     virtual HRESULT STDMETHODCALLTYPE removeAttribute(
779         /* [in] */ BSTR name);
780     
781     virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
782         /* [in] */ BSTR name,
783         /* [retval][out] */ IDOMAttr** result);
784     
785     virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
786         /* [in] */ IDOMAttr *newAttr,
787         /* [retval][out] */ IDOMAttr** result);
788     
789     virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
790         /* [in] */ IDOMAttr *oldAttr,
791         /* [retval][out] */ IDOMAttr** result);
792     
793     virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
794         /* [in] */ BSTR name,
795         /* [retval][out] */ IDOMNodeList** result);
796     
797     virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
798         /* [in] */ BSTR namespaceURI,
799         /* [in] */ BSTR localName,
800         /* [retval][out] */ BSTR* result);
801     
802     virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
803         /* [in] */ BSTR namespaceURI,
804         /* [in] */ BSTR qualifiedName,
805         /* [in] */ BSTR value);
806     
807     virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
808         /* [in] */ BSTR namespaceURI,
809         /* [in] */ BSTR localName);
810     
811     virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
812         /* [in] */ BSTR namespaceURI,
813         /* [in] */ BSTR localName,
814         /* [retval][out] */ IDOMAttr** result);
815     
816     virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
817         /* [in] */ IDOMAttr *newAttr,
818         /* [retval][out] */ IDOMAttr** result);
819     
820     virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
821         /* [in] */ BSTR namespaceURI,
822         /* [in] */ BSTR localName,
823         /* [retval][out] */ IDOMNodeList** result);
824     
825     virtual HRESULT STDMETHODCALLTYPE hasAttribute(
826         /* [in] */ BSTR name,
827         /* [retval][out] */ BOOL* result);
828     
829     virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
830         /* [in] */ BSTR namespaceURI,
831         /* [in] */ BSTR localName,
832         /* [retval][out] */ BOOL* result);
833
834     virtual HRESULT STDMETHODCALLTYPE focus( void);
835     
836     virtual HRESULT STDMETHODCALLTYPE blur( void);
837
838     // IDOMNodeExtensions
839     virtual HRESULT STDMETHODCALLTYPE boundingBox(
840         /* [retval][out] */ LPRECT rect);
841     
842     virtual HRESULT STDMETHODCALLTYPE lineBoxRects(
843         /* [size_is][in] */ RECT* rects,
844         /* [in] */ int cRects);
845
846     // IDOMElementPrivate
847     virtual HRESULT STDMETHODCALLTYPE coreElement(
848         void** element);
849
850     virtual HRESULT STDMETHODCALLTYPE isEqual(
851         /* [in] */ IDOMElement* other,
852         /* [retval][out] */ BOOL* result);
853
854     virtual HRESULT STDMETHODCALLTYPE isFocused(
855         /* [retval][out] */ BOOL* result);
856
857     virtual HRESULT STDMETHODCALLTYPE innerText(
858         /* [retval][out] */ BSTR* result);
859
860     virtual HRESULT STDMETHODCALLTYPE font(
861         WebFontDescription* webFontDescription);
862
863     virtual HRESULT STDMETHODCALLTYPE renderedImage(
864         /* [retval][out] */ HBITMAP* image);
865
866     virtual HRESULT STDMETHODCALLTYPE markerTextForListItem(
867         /* [retval][out] */ BSTR* markerText);
868
869     virtual HRESULT STDMETHODCALLTYPE shadowPseudoId(
870         /* [retval][out] */ BSTR* result);
871
872     // IDOMElementCSSInlineStyle
873     virtual HRESULT STDMETHODCALLTYPE style(
874         /* [retval][out] */ IDOMCSSStyleDeclaration** result);
875
876     // IDOMElementExtensions
877     virtual HRESULT STDMETHODCALLTYPE offsetLeft(
878         /* [retval][out] */ int* result);
879     
880     virtual HRESULT STDMETHODCALLTYPE offsetTop(
881         /* [retval][out] */ int* result);
882     
883     virtual HRESULT STDMETHODCALLTYPE offsetWidth(
884         /* [retval][out] */ int* result);
885     
886     virtual HRESULT STDMETHODCALLTYPE offsetHeight(
887         /* [retval][out] */ int* result);
888     
889     virtual HRESULT STDMETHODCALLTYPE offsetParent(
890         /* [retval][out] */ IDOMElement** result);
891     
892     virtual HRESULT STDMETHODCALLTYPE clientWidth(
893         /* [retval][out] */ int* result);
894     
895     virtual HRESULT STDMETHODCALLTYPE clientHeight(
896         /* [retval][out] */ int* result);
897     
898     virtual HRESULT STDMETHODCALLTYPE scrollLeft(
899         /* [retval][out] */ int* result);
900     
901     virtual HRESULT STDMETHODCALLTYPE setScrollLeft(
902         /* [in] */ int newScrollLeft);
903     
904     virtual HRESULT STDMETHODCALLTYPE scrollTop(
905         /* [retval][out] */ int* result);
906     
907     virtual HRESULT STDMETHODCALLTYPE setScrollTop(
908         /* [in] */ int newScrollTop);
909     
910     virtual HRESULT STDMETHODCALLTYPE scrollWidth(
911         /* [retval][out] */ int* result);
912     
913     virtual HRESULT STDMETHODCALLTYPE scrollHeight(
914         /* [retval][out] */ int* result);
915     
916     virtual HRESULT STDMETHODCALLTYPE scrollIntoView(
917         /* [in] */ BOOL alignWithTop);
918     
919     virtual HRESULT STDMETHODCALLTYPE scrollIntoViewIfNeeded(
920         /* [in] */ BOOL centerIfNeeded);
921
922     // DOMElement
923     WebCore::Element* element() { return m_element; }
924
925 protected:
926     WebCore::Element* m_element;
927 };
928
929 class DOMRange : public DOMObject, public IDOMRange {
930 protected:
931     DOMRange(WebCore::Range*);
932     ~DOMRange();
933
934 public:
935     static IDOMRange* createInstance(WebCore::Range*);
936
937 public:
938     // IUnknown
939     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
940     virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
941     virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
942
943     // IWebScriptObject
944     virtual HRESULT STDMETHODCALLTYPE throwException(BSTR exceptionMessage, BOOL* result)
945     {
946         return DOMObject::throwException(exceptionMessage, result);
947     }
948
949     virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(BSTR name, const VARIANT args[], int cArgs, VARIANT* result)
950     {
951         return DOMObject::callWebScriptMethod(name, args, cArgs, result);
952     }
953
954     virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(BSTR script, VARIANT* result)
955     {
956         return DOMObject::evaluateWebScript(script, result);
957     }
958
959     virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(BSTR name)
960     {
961         return DOMObject::removeWebScriptKey(name);
962     }
963
964     virtual HRESULT STDMETHODCALLTYPE stringRepresentation(BSTR* stringRepresentation)
965     {
966         return DOMObject::stringRepresentation(stringRepresentation);
967     }
968
969     virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(unsigned index, VARIANT* result)
970     {
971         return DOMObject::webScriptValueAtIndex(index, result);
972     }
973
974     virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(unsigned index, VARIANT val)
975     {
976         return DOMObject::setWebScriptValueAtIndex(index, val);
977     }
978
979     virtual HRESULT STDMETHODCALLTYPE setException(BSTR description)
980     {
981         return DOMObject::setException(description);
982     }
983
984     virtual HRESULT STDMETHODCALLTYPE startContainer(IDOMNode**);
985     virtual HRESULT STDMETHODCALLTYPE startOffset(int*);
986     virtual HRESULT STDMETHODCALLTYPE endContainer(IDOMNode**);
987     virtual HRESULT STDMETHODCALLTYPE endOffset(int*);
988     virtual HRESULT STDMETHODCALLTYPE collapsed(BOOL*);
989     virtual HRESULT STDMETHODCALLTYPE commonAncestorContainer(IDOMNode**);
990     virtual HRESULT STDMETHODCALLTYPE setStart(IDOMNode*, int offset);
991     virtual HRESULT STDMETHODCALLTYPE setEnd(IDOMNode*, int offset);
992     virtual HRESULT STDMETHODCALLTYPE setStartBefore(IDOMNode*);
993     virtual HRESULT STDMETHODCALLTYPE setStartAfter(IDOMNode*);
994     virtual HRESULT STDMETHODCALLTYPE setEndBefore(IDOMNode*);
995     virtual HRESULT STDMETHODCALLTYPE setEndAfter(IDOMNode*);
996     virtual HRESULT STDMETHODCALLTYPE collapse(BOOL);
997     virtual HRESULT STDMETHODCALLTYPE selectNode(IDOMNode*);
998     virtual HRESULT STDMETHODCALLTYPE selectNodeContents(IDOMNode*);
999     virtual HRESULT STDMETHODCALLTYPE compareBoundaryPoints(unsigned short how, IDOMRange* sourceRange);
1000     virtual HRESULT STDMETHODCALLTYPE deleteContents();
1001     virtual HRESULT STDMETHODCALLTYPE extractContents(IDOMDocumentFragment**);
1002     virtual HRESULT STDMETHODCALLTYPE cloneContents(IDOMDocumentFragment**);
1003     virtual HRESULT STDMETHODCALLTYPE insertNode(IDOMNode*);
1004     virtual HRESULT STDMETHODCALLTYPE surroundContents(IDOMNode* newParent);
1005     virtual HRESULT STDMETHODCALLTYPE cloneRange(IDOMRange**);
1006     virtual HRESULT STDMETHODCALLTYPE toString(BSTR*);
1007     virtual HRESULT STDMETHODCALLTYPE detach();
1008
1009 protected:
1010     WebCore::Range* m_range;
1011 };
1012 #endif