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 DOMHTMLClasses_H
27#define DOMHTMLClasses_H
28
29#include "WebKit.h"
30#include "DOMCoreClasses.h"
31#include <wtf/RefPtr.h>
32
33namespace WebCore {
34    class HTMLCollection;
35    class HTMLOptionsCollection;
36}
37
38class DOMHTMLCollection : public DOMObject, public IDOMHTMLCollection
39{
40protected:
41    DOMHTMLCollection(WebCore::HTMLCollection* c);
42
43public:
44    static IDOMHTMLCollection* createInstance(WebCore::HTMLCollection*);
45
46    // IUnknown
47    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
48    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
49    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
50
51    // IWebScriptObject
52    virtual HRESULT STDMETHODCALLTYPE throwException(
53        /* [in] */ BSTR exceptionMessage,
54        /* [retval][out] */ BOOL *result) { return DOMObject::throwException(exceptionMessage, result); }
55
56    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
57        /* [in] */ BSTR name,
58        /* [size_is][in] */ const VARIANT args[  ],
59        /* [in] */ int cArgs,
60        /* [retval][out] */ VARIANT *result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
61
62    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
63        /* [in] */ BSTR script,
64        /* [retval][out] */ VARIANT *result) { return DOMObject::evaluateWebScript(script, result); }
65
66    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
67        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
68
69    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
70        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
71
72    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
73        /* [in] */ unsigned int index,
74        /* [retval][out] */ VARIANT *result) { return DOMObject::webScriptValueAtIndex(index, result); }
75
76    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
77        /* [in] */ unsigned int index,
78        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
79
80    virtual HRESULT STDMETHODCALLTYPE setException(
81        /* [in] */ BSTR description) { return DOMObject::setException(description); }
82
83    // IDOMHTMLCollection
84    virtual HRESULT STDMETHODCALLTYPE length(
85        /* [retval][out] */ UINT *result);
86
87    virtual HRESULT STDMETHODCALLTYPE item(
88        /* [in] */ UINT index,
89        /* [retval][out] */ IDOMNode **node);
90
91    virtual HRESULT STDMETHODCALLTYPE namedItem(
92        /* [in] */ BSTR name,
93        /* [retval][out] */ IDOMNode **node);
94
95protected:
96    RefPtr<WebCore::HTMLCollection> m_collection;
97};
98
99class DOMHTMLOptionsCollection : public DOMObject, public IDOMHTMLOptionsCollection
100{
101public:
102    static IDOMHTMLOptionsCollection* createInstance(WebCore::HTMLOptionsCollection*);
103
104    // IUnknown
105    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
106    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
107    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
108
109    // IWebScriptObject
110    virtual HRESULT STDMETHODCALLTYPE throwException(
111        /* [in] */ BSTR exceptionMessage,
112        /* [retval][out] */ BOOL *result) { return DOMObject::throwException(exceptionMessage, result); }
113
114    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
115        /* [in] */ BSTR name,
116        /* [size_is][in] */ const VARIANT args[  ],
117        /* [in] */ int cArgs,
118        /* [retval][out] */ VARIANT *result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
119
120    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
121        /* [in] */ BSTR script,
122        /* [retval][out] */ VARIANT *result) { return DOMObject::evaluateWebScript(script, result); }
123
124    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
125        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
126
127    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
128        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
129
130    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
131        /* [in] */ unsigned int index,
132        /* [retval][out] */ VARIANT *result) { return DOMObject::webScriptValueAtIndex(index, result); }
133
134    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
135        /* [in] */ unsigned int index,
136        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
137
138    virtual HRESULT STDMETHODCALLTYPE setException(
139        /* [in] */ BSTR description) { return DOMObject::setException(description); }
140
141    // IDOMHTMLOptionsCollection
142    virtual HRESULT STDMETHODCALLTYPE length(
143        /* [retval][out] */ unsigned int *result);
144
145    virtual HRESULT STDMETHODCALLTYPE setLength(
146        /* [in] */ unsigned int length);
147
148    virtual HRESULT STDMETHODCALLTYPE item(
149        /* [in] */ unsigned int index,
150        /* [retval][out] */ IDOMNode **result);
151
152    virtual HRESULT STDMETHODCALLTYPE namedItem(
153        /* [in] */ BSTR name,
154        /* [retval][out] */ IDOMNode **result);
155
156private:
157    DOMHTMLOptionsCollection(WebCore::HTMLOptionsCollection*);
158
159    RefPtr<WebCore::HTMLOptionsCollection> m_collection;
160};
161
162class DOMHTMLDocument : public DOMDocument, public IDOMHTMLDocument
163{
164protected:
165    DOMHTMLDocument();
166public:
167    DOMHTMLDocument(WebCore::Document* d) : DOMDocument(d) {}
168
169    // IUnknown
170    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
171    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMDocument::AddRef(); }
172    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMDocument::Release(); }
173
174    // IWebScriptObject
175    virtual HRESULT STDMETHODCALLTYPE throwException(
176        /* [in] */ BSTR exceptionMessage,
177        /* [retval][out] */ BOOL *result) { return DOMDocument::throwException(exceptionMessage, result); }
178
179    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
180        /* [in] */ BSTR name,
181        /* [size_is][in] */ const VARIANT args[  ],
182        /* [in] */ int cArgs,
183        /* [retval][out] */ VARIANT *result) { return DOMDocument::callWebScriptMethod(name, args, cArgs, result); }
184
185    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
186        /* [in] */ BSTR script,
187        /* [retval][out] */ VARIANT *result) { return DOMDocument::evaluateWebScript(script, result); }
188
189    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
190        /* [in] */ BSTR name) { return DOMDocument::removeWebScriptKey(name); }
191
192    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
193        /* [retval][out] */ BSTR* stringRepresentation) { return DOMDocument::stringRepresentation(stringRepresentation); }
194
195    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
196        /* [in] */ unsigned int index,
197        /* [retval][out] */ VARIANT *result) { return DOMDocument::webScriptValueAtIndex(index, result); }
198
199    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
200        /* [in] */ unsigned int index,
201        /* [in] */ VARIANT val) { return DOMDocument::setWebScriptValueAtIndex(index, val); }
202
203    virtual HRESULT STDMETHODCALLTYPE setException(
204        /* [in] */ BSTR description) { return DOMDocument::setException(description); }
205
206    // IDOMNode
207    virtual HRESULT STDMETHODCALLTYPE nodeName(
208        /* [retval][out] */ BSTR *result) { return DOMDocument::nodeName(result); }
209
210    virtual HRESULT STDMETHODCALLTYPE nodeValue(
211        /* [retval][out] */ BSTR *result) { return DOMDocument::nodeValue(result); }
212
213    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
214        /* [in] */ BSTR value) { return setNodeValue(value); }
215
216    virtual HRESULT STDMETHODCALLTYPE nodeType(
217        /* [retval][out] */ unsigned short *result) { return DOMDocument::nodeType(result); }
218
219    virtual HRESULT STDMETHODCALLTYPE parentNode(
220        /* [retval][out] */ IDOMNode **result) { return DOMDocument::parentNode(result); }
221
222    virtual HRESULT STDMETHODCALLTYPE childNodes(
223        /* [retval][out] */ IDOMNodeList **result) { return DOMDocument::childNodes(result); }
224
225    virtual HRESULT STDMETHODCALLTYPE firstChild(
226        /* [retval][out] */ IDOMNode **result) { return DOMDocument::firstChild(result); }
227
228    virtual HRESULT STDMETHODCALLTYPE lastChild(
229        /* [retval][out] */ IDOMNode **result) { return DOMDocument::lastChild(result); }
230
231    virtual HRESULT STDMETHODCALLTYPE previousSibling(
232        /* [retval][out] */ IDOMNode **result) { return DOMDocument::previousSibling(result); }
233
234    virtual HRESULT STDMETHODCALLTYPE nextSibling(
235        /* [retval][out] */ IDOMNode **result) { return DOMDocument::nextSibling(result); }
236
237    virtual HRESULT STDMETHODCALLTYPE attributes(
238        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMDocument::attributes(result); }
239
240    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
241        /* [retval][out] */ IDOMDocument **result) { return DOMDocument::ownerDocument(result); }
242
243    virtual HRESULT STDMETHODCALLTYPE insertBefore(
244        /* [in] */ IDOMNode *newChild,
245        /* [in] */ IDOMNode *refChild,
246        /* [retval][out] */ IDOMNode **result) { return DOMDocument::insertBefore(newChild, refChild, result); }
247
248    virtual HRESULT STDMETHODCALLTYPE replaceChild(
249        /* [in] */ IDOMNode *newChild,
250        /* [in] */ IDOMNode *oldChild,
251        /* [retval][out] */ IDOMNode **result) { return DOMDocument::replaceChild(newChild, oldChild, result); }
252
253    virtual HRESULT STDMETHODCALLTYPE removeChild(
254        /* [in] */ IDOMNode *oldChild,
255        /* [retval][out] */ IDOMNode **result) { return DOMDocument::removeChild(oldChild, result); }
256
257    virtual HRESULT STDMETHODCALLTYPE appendChild(
258        /* [in] */ IDOMNode *oldChild,
259        /* [retval][out] */ IDOMNode **result) { return DOMDocument::appendChild(oldChild, result); }
260
261    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
262        /* [retval][out] */ BOOL *result) { return DOMDocument::hasChildNodes(result); }
263
264    virtual HRESULT STDMETHODCALLTYPE cloneNode(
265        /* [in] */ BOOL deep,
266        /* [retval][out] */ IDOMNode **result) { return DOMDocument::cloneNode(deep, result); }
267
268    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMDocument::normalize(); }
269
270    virtual HRESULT STDMETHODCALLTYPE isSupported(
271        /* [in] */ BSTR feature,
272        /* [in] */ BSTR version,
273        /* [retval][out] */ BOOL *result) { return DOMDocument::isSupported(feature, version, result); }
274
275    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
276        /* [retval][out] */ BSTR *result) { return DOMDocument::namespaceURI(result); }
277
278    virtual HRESULT STDMETHODCALLTYPE prefix(
279        /* [retval][out] */ BSTR *result) { return DOMDocument::prefix(result); }
280
281    virtual HRESULT STDMETHODCALLTYPE setPrefix(
282        /* [in] */ BSTR prefix) { return DOMDocument::setPrefix(prefix); }
283
284    virtual HRESULT STDMETHODCALLTYPE localName(
285        /* [retval][out] */ BSTR *result) { return DOMDocument::localName(result); }
286
287    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
288        /* [retval][out] */ BOOL *result) { return DOMDocument::hasAttributes(result); }
289
290    virtual HRESULT STDMETHODCALLTYPE isSameNode(
291        /* [in] */ IDOMNode* other,
292        /* [retval][out] */ BOOL* result) { return DOMDocument::isSameNode(other, result); }
293
294    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
295        /* [in] */ IDOMNode* other,
296        /* [retval][out] */ BOOL* result) { return DOMDocument::isEqualNode(other, result); }
297
298    virtual HRESULT STDMETHODCALLTYPE textContent(
299        /* [retval][out] */ BSTR* result) { return DOMDocument::textContent(result); }
300
301    virtual HRESULT STDMETHODCALLTYPE setTextContent(
302        /* [in] */ BSTR text) { return DOMDocument::setTextContent(text); }
303
304    // IDOMDocument
305    virtual HRESULT STDMETHODCALLTYPE doctype(
306        /* [retval][out] */ IDOMDocumentType **result) { return DOMDocument::doctype(result); }
307
308    virtual HRESULT STDMETHODCALLTYPE implementation(
309        /* [retval][out] */ IDOMImplementation **result) { return DOMDocument::implementation(result); }
310
311    virtual HRESULT STDMETHODCALLTYPE documentElement(
312        /* [retval][out] */ IDOMElement **result) { return DOMDocument::documentElement(result); }
313
314    virtual HRESULT STDMETHODCALLTYPE createElement(
315        /* [in] */ BSTR tagName,
316        /* [retval][out] */ IDOMElement **result) { return DOMDocument::createElement(tagName, result); }
317
318    virtual HRESULT STDMETHODCALLTYPE createDocumentFragment(
319        /* [retval][out] */ IDOMDocumentFragment **result) { return DOMDocument::createDocumentFragment(result); }
320
321    virtual HRESULT STDMETHODCALLTYPE createTextNode(
322        /* [in] */ BSTR data,
323        /* [retval][out] */ IDOMText **result) { return DOMDocument::createTextNode(data, result); }
324
325    virtual HRESULT STDMETHODCALLTYPE createComment(
326        /* [in] */ BSTR data,
327        /* [retval][out] */ IDOMComment **result) { return DOMDocument::createComment(data, result); }
328
329    virtual HRESULT STDMETHODCALLTYPE createCDATASection(
330        /* [in] */ BSTR data,
331        /* [retval][out] */ IDOMCDATASection **result) { return DOMDocument::createCDATASection(data, result); }
332
333    virtual HRESULT STDMETHODCALLTYPE createProcessingInstruction(
334        /* [in] */ BSTR target,
335        /* [in] */ BSTR data,
336        /* [retval][out] */ IDOMProcessingInstruction **result) { return DOMDocument::createProcessingInstruction(target, data, result); }
337
338    virtual HRESULT STDMETHODCALLTYPE createAttribute(
339        /* [in] */ BSTR name,
340        /* [retval][out] */ IDOMAttr **result) { return DOMDocument::createAttribute(name, result); }
341
342    virtual HRESULT STDMETHODCALLTYPE createEntityReference(
343        /* [in] */ BSTR name,
344        /* [retval][out] */ IDOMEntityReference **result) { return DOMDocument::createEntityReference(name, result); }
345
346    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
347        /* [in] */ BSTR tagName,
348        /* [retval][out] */ IDOMNodeList **result) { return DOMDocument::getElementsByTagName(tagName, result); }
349
350    virtual HRESULT STDMETHODCALLTYPE importNode(
351        /* [in] */ IDOMNode *importedNode,
352        /* [in] */ BOOL deep,
353        /* [retval][out] */ IDOMNode **result) { return DOMDocument::importNode(importedNode, deep, result); }
354
355    virtual HRESULT STDMETHODCALLTYPE createElementNS(
356        /* [in] */ BSTR namespaceURI,
357        /* [in] */ BSTR qualifiedName,
358        /* [retval][out] */ IDOMElement **result) { return DOMDocument::createElementNS(namespaceURI, qualifiedName, result); }
359
360    virtual HRESULT STDMETHODCALLTYPE createAttributeNS(
361        /* [in] */ BSTR namespaceURI,
362        /* [in] */ BSTR qualifiedName,
363        /* [retval][out] */ IDOMAttr **result) { return DOMDocument::createAttributeNS(namespaceURI, qualifiedName, result); }
364
365    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
366        /* [in] */ BSTR namespaceURI,
367        /* [in] */ BSTR localName,
368        /* [retval][out] */ IDOMNodeList **result) { return DOMDocument::getElementsByTagNameNS(namespaceURI, localName, result); }
369
370    virtual HRESULT STDMETHODCALLTYPE getElementById(
371        /* [in] */ BSTR elementId,
372        /* [retval][out] */ IDOMElement **result) { return DOMDocument::getElementById(elementId, result); }
373
374    // IDOMHTMLDocument
375    virtual HRESULT STDMETHODCALLTYPE title(
376        /* [retval][out] */ BSTR *result);
377
378    virtual HRESULT STDMETHODCALLTYPE setTitle(
379        /* [in] */ BSTR title);
380
381    virtual HRESULT STDMETHODCALLTYPE referrer(
382        /* [retval][out] */ BSTR *result);
383
384    virtual HRESULT STDMETHODCALLTYPE domain(
385        /* [retval][out] */ BSTR *result);
386
387    virtual HRESULT STDMETHODCALLTYPE URL(
388        /* [retval][out] */ BSTR *result);
389
390    virtual HRESULT STDMETHODCALLTYPE body(
391        /* [retval][out] */ IDOMHTMLElement **bodyElement);
392
393    virtual HRESULT STDMETHODCALLTYPE setBody(
394        /* [in] */ IDOMHTMLElement *body);
395
396    virtual HRESULT STDMETHODCALLTYPE images(
397        /* [retval][out] */ IDOMHTMLCollection **collection);
398
399    virtual HRESULT STDMETHODCALLTYPE applets(
400        /* [retval][out] */ IDOMHTMLCollection **collection);
401
402    virtual HRESULT STDMETHODCALLTYPE links(
403        /* [retval][out] */ IDOMHTMLCollection **collection);
404
405    virtual HRESULT STDMETHODCALLTYPE forms(
406        /* [retval][out] */ IDOMHTMLCollection **collection);
407
408    virtual HRESULT STDMETHODCALLTYPE anchors(
409        /* [retval][out] */ IDOMHTMLCollection **collection);
410
411    virtual HRESULT STDMETHODCALLTYPE cookie(
412        /* [retval][out] */ BSTR *result);
413
414    virtual HRESULT STDMETHODCALLTYPE setCookie(
415        /* [in] */ BSTR cookie);
416
417    virtual HRESULT STDMETHODCALLTYPE open( void);
418
419    virtual HRESULT STDMETHODCALLTYPE close( void);
420
421    virtual HRESULT STDMETHODCALLTYPE write(
422        /* [in] */ BSTR text);
423
424    virtual HRESULT STDMETHODCALLTYPE writeln(
425        /* [in] */ BSTR text);
426
427    virtual HRESULT STDMETHODCALLTYPE getElementById_(
428        /* [in] */ BSTR elementId,
429        /* [retval][out] */ IDOMElement **element);
430
431    virtual HRESULT STDMETHODCALLTYPE getElementsByName(
432        /* [in] */ BSTR elementName,
433        /* [retval][out] */ IDOMNodeList **nodeList);
434};
435
436class DOMHTMLElement : public DOMElement, public IDOMHTMLElement
437{
438protected:
439    DOMHTMLElement();
440public:
441    DOMHTMLElement(WebCore::Element* e) : DOMElement(e) {}
442
443    // IUnknown
444    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
445    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMElement::AddRef(); }
446    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMElement::Release(); }
447
448    // IWebScriptObject
449    virtual HRESULT STDMETHODCALLTYPE throwException(
450        /* [in] */ BSTR exceptionMessage,
451        /* [retval][out] */ BOOL *result) { return DOMElement::throwException(exceptionMessage, result); }
452
453    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
454        /* [in] */ BSTR name,
455        /* [size_is][in] */ const VARIANT args[  ],
456        /* [in] */ int cArgs,
457        /* [retval][out] */ VARIANT *result) { return DOMElement::callWebScriptMethod(name, args, cArgs, result); }
458
459    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
460        /* [in] */ BSTR script,
461        /* [retval][out] */ VARIANT *result) { return DOMElement::evaluateWebScript(script, result); }
462
463    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
464        /* [in] */ BSTR name) { return DOMElement::removeWebScriptKey(name); }
465
466    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
467        /* [retval][out] */ BSTR* stringRepresentation) { return DOMElement::stringRepresentation(stringRepresentation); }
468
469    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
470        /* [in] */ unsigned int index,
471        /* [retval][out] */ VARIANT *result) { return DOMElement::webScriptValueAtIndex(index, result); }
472
473    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
474        /* [in] */ unsigned int index,
475        /* [in] */ VARIANT val) { return DOMElement::setWebScriptValueAtIndex(index, val); }
476
477    virtual HRESULT STDMETHODCALLTYPE setException(
478        /* [in] */ BSTR description) { return DOMElement::setException(description); }
479
480    // IDOMNode
481    virtual HRESULT STDMETHODCALLTYPE nodeName(
482        /* [retval][out] */ BSTR *result) { return DOMElement::nodeName(result); }
483
484    virtual HRESULT STDMETHODCALLTYPE nodeValue(
485        /* [retval][out] */ BSTR *result) { return DOMElement::nodeValue(result); }
486
487    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
488        /* [in] */ BSTR value) { return DOMElement::setNodeValue(value); }
489
490    virtual HRESULT STDMETHODCALLTYPE nodeType(
491        /* [retval][out] */ unsigned short *result) { return DOMElement::nodeType(result); }
492
493    virtual HRESULT STDMETHODCALLTYPE parentNode(
494        /* [retval][out] */ IDOMNode **result) { return DOMElement::parentNode(result); }
495
496    virtual HRESULT STDMETHODCALLTYPE childNodes(
497        /* [retval][out] */ IDOMNodeList **result) { return DOMElement::childNodes(result); }
498
499    virtual HRESULT STDMETHODCALLTYPE firstChild(
500        /* [retval][out] */ IDOMNode **result) { return DOMElement::firstChild(result); }
501
502    virtual HRESULT STDMETHODCALLTYPE lastChild(
503        /* [retval][out] */ IDOMNode **result) { return DOMElement::lastChild(result); }
504
505    virtual HRESULT STDMETHODCALLTYPE previousSibling(
506        /* [retval][out] */ IDOMNode **result) { return DOMElement::previousSibling(result); }
507
508    virtual HRESULT STDMETHODCALLTYPE nextSibling(
509        /* [retval][out] */ IDOMNode **result) { return DOMElement::nextSibling(result); }
510
511    virtual HRESULT STDMETHODCALLTYPE attributes(
512        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMElement::attributes(result); }
513
514    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
515        /* [retval][out] */ IDOMDocument **result) { return DOMElement::ownerDocument(result); }
516
517    virtual HRESULT STDMETHODCALLTYPE insertBefore(
518        /* [in] */ IDOMNode *newChild,
519        /* [in] */ IDOMNode *refChild,
520        /* [retval][out] */ IDOMNode **result) { return DOMElement::insertBefore(newChild, refChild, result); }
521
522    virtual HRESULT STDMETHODCALLTYPE replaceChild(
523        /* [in] */ IDOMNode *newChild,
524        /* [in] */ IDOMNode *oldChild,
525        /* [retval][out] */ IDOMNode **result) { return DOMElement::replaceChild(newChild, oldChild, result); }
526
527    virtual HRESULT STDMETHODCALLTYPE removeChild(
528        /* [in] */ IDOMNode *oldChild,
529        /* [retval][out] */ IDOMNode **result) { return DOMElement::removeChild(oldChild, result); }
530
531    virtual HRESULT STDMETHODCALLTYPE appendChild(
532        /* [in] */ IDOMNode *oldChild,
533        /* [retval][out] */ IDOMNode **result) { return DOMElement::appendChild(oldChild, result); }
534
535    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
536        /* [retval][out] */ BOOL *result) { return DOMElement::hasChildNodes(result); }
537
538    virtual HRESULT STDMETHODCALLTYPE cloneNode(
539        /* [in] */ BOOL deep,
540        /* [retval][out] */ IDOMNode **result) { return DOMElement::cloneNode(deep, result); }
541
542    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMElement::normalize(); }
543
544    virtual HRESULT STDMETHODCALLTYPE isSupported(
545        /* [in] */ BSTR feature,
546        /* [in] */ BSTR version,
547        /* [retval][out] */ BOOL *result) { return DOMElement::isSupported(feature, version, result); }
548
549    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
550        /* [retval][out] */ BSTR *result) { return DOMElement::namespaceURI(result); }
551
552    virtual HRESULT STDMETHODCALLTYPE prefix(
553        /* [retval][out] */ BSTR *result) { return DOMElement::prefix(result); }
554
555    virtual HRESULT STDMETHODCALLTYPE setPrefix(
556        /* [in] */ BSTR prefix) { return DOMElement::setPrefix(prefix); }
557
558    virtual HRESULT STDMETHODCALLTYPE localName(
559        /* [retval][out] */ BSTR *result) { return DOMElement::localName(result); }
560
561    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
562        /* [retval][out] */ BOOL *result) { return DOMElement::hasAttributes(result); }
563
564    virtual HRESULT STDMETHODCALLTYPE isSameNode(
565        /* [in] */ IDOMNode* other,
566        /* [retval][out] */ BOOL* result) { return DOMElement::isSameNode(other, result); }
567
568    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
569        /* [in] */ IDOMNode* other,
570        /* [retval][out] */ BOOL* result) { return DOMElement::isEqualNode(other, result); }
571
572    virtual HRESULT STDMETHODCALLTYPE textContent(
573        /* [retval][out] */ BSTR* result) { return DOMElement::textContent(result); }
574
575    virtual HRESULT STDMETHODCALLTYPE setTextContent(
576        /* [in] */ BSTR text) { return DOMElement::setTextContent(text); }
577
578    // IDOMElement
579    virtual HRESULT STDMETHODCALLTYPE tagName(
580        /* [retval][out] */ BSTR *result) { return DOMElement::tagName(result); }
581
582    virtual HRESULT STDMETHODCALLTYPE getAttribute(
583        /* [in] */ BSTR name,
584        /* [retval][out] */ BSTR *result) { return DOMElement::getAttribute(name, result); }
585
586    virtual HRESULT STDMETHODCALLTYPE setAttribute(
587        /* [in] */ BSTR name,
588        /* [in] */ BSTR value) { return DOMElement::setAttribute(name, value); }
589
590    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
591        /* [in] */ BSTR name) { return DOMElement::removeAttribute(name); }
592
593    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
594        /* [in] */ BSTR name,
595        /* [retval][out] */ IDOMAttr **result) { return DOMElement::getAttributeNode(name, result); }
596
597    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
598        /* [in] */ IDOMAttr *newAttr,
599        /* [retval][out] */ IDOMAttr **result) { return DOMElement::setAttributeNode(newAttr, result); }
600
601    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
602        /* [in] */ IDOMAttr *oldAttr,
603        /* [retval][out] */ IDOMAttr **result) { return DOMElement::removeAttributeNode(oldAttr, result); }
604
605    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
606        /* [in] */ BSTR name,
607        /* [retval][out] */ IDOMNodeList **result) { return DOMElement::getElementsByTagName(name, result); }
608
609    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
610        /* [in] */ BSTR namespaceURI,
611        /* [in] */ BSTR localName,
612        /* [retval][out] */ BSTR *result) { return DOMElement::getAttributeNS(namespaceURI, localName, result); }
613
614    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
615        /* [in] */ BSTR namespaceURI,
616        /* [in] */ BSTR qualifiedName,
617        /* [in] */ BSTR value) { return DOMElement::setAttributeNS(namespaceURI, qualifiedName, value); }
618
619    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
620        /* [in] */ BSTR namespaceURI,
621        /* [in] */ BSTR localName) { return DOMElement::removeAttributeNS(namespaceURI, localName); }
622
623    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
624        /* [in] */ BSTR namespaceURI,
625        /* [in] */ BSTR localName,
626        /* [retval][out] */ IDOMAttr **result) { return DOMElement::getAttributeNodeNS(namespaceURI, localName, result); }
627
628    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
629        /* [in] */ IDOMAttr *newAttr,
630        /* [retval][out] */ IDOMAttr **result) { return DOMElement::setAttributeNodeNS(newAttr, result); }
631
632    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
633        /* [in] */ BSTR namespaceURI,
634        /* [in] */ BSTR localName,
635        /* [retval][out] */ IDOMNodeList **result) { return DOMElement::getElementsByTagNameNS(namespaceURI, localName, result); }
636
637    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
638        /* [in] */ BSTR name,
639        /* [retval][out] */ BOOL *result) { return DOMElement::hasAttribute(name, result); }
640
641    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
642        /* [in] */ BSTR namespaceURI,
643        /* [in] */ BSTR localName,
644        /* [retval][out] */ BOOL *result) { return DOMElement::hasAttributeNS(namespaceURI, localName, result); }
645
646    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMElement::focus(); }
647
648    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMElement::blur(); }
649
650    // IDOMHTMLElement
651    virtual HRESULT STDMETHODCALLTYPE idName(
652        /* [retval][out] */ BSTR *result);
653
654    virtual HRESULT STDMETHODCALLTYPE setIdName(
655        /* [in] */ BSTR idName);
656
657    virtual HRESULT STDMETHODCALLTYPE title(
658        /* [retval][out] */ BSTR *result);
659
660    virtual HRESULT STDMETHODCALLTYPE setTitle(
661        /* [in] */ BSTR title);
662
663    virtual HRESULT STDMETHODCALLTYPE lang(
664        /* [retval][out] */ BSTR *result);
665
666    virtual HRESULT STDMETHODCALLTYPE setLang(
667        /* [in] */ BSTR lang);
668
669    virtual HRESULT STDMETHODCALLTYPE dir(
670        /* [retval][out] */ BSTR *result);
671
672    virtual HRESULT STDMETHODCALLTYPE setDir(
673        /* [in] */ BSTR dir);
674
675    virtual HRESULT STDMETHODCALLTYPE className(
676        /* [retval][out] */ BSTR *result);
677
678    virtual HRESULT STDMETHODCALLTYPE setClassName(
679        /* [in] */ BSTR className);
680
681    virtual HRESULT STDMETHODCALLTYPE innerHTML(
682        /* [retval][out] */ BSTR *result);
683
684    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
685        /* [in] */ BSTR html);
686
687    virtual HRESULT STDMETHODCALLTYPE innerText(
688        /* [retval][out] */ BSTR *result);
689
690    virtual HRESULT STDMETHODCALLTYPE setInnerText(
691        /* [in] */ BSTR text);
692
693};
694
695class DOMHTMLFormElement : public DOMHTMLElement, public IDOMHTMLFormElement
696{
697protected:
698    DOMHTMLFormElement();
699public:
700    DOMHTMLFormElement(WebCore::Element* e) : DOMHTMLElement(e) {}
701
702    // IUnknown
703    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
704    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMHTMLElement::AddRef(); }
705    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMHTMLElement::Release(); }
706
707    // IWebScriptObject
708    virtual HRESULT STDMETHODCALLTYPE throwException(
709        /* [in] */ BSTR exceptionMessage,
710        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::throwException(exceptionMessage, result); }
711
712    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
713        /* [in] */ BSTR name,
714        /* [size_is][in] */ const VARIANT args[  ],
715        /* [in] */ int cArgs,
716        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::callWebScriptMethod(name, args, cArgs, result); }
717
718    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
719        /* [in] */ BSTR script,
720        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::evaluateWebScript(script, result); }
721
722    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
723        /* [in] */ BSTR name) { return DOMHTMLElement::removeWebScriptKey(name); }
724
725    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
726        /* [retval][out] */ BSTR* stringRepresentation) { return DOMHTMLElement::stringRepresentation(stringRepresentation); }
727
728    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
729        /* [in] */ unsigned int index,
730        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::webScriptValueAtIndex(index, result); }
731
732    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
733        /* [in] */ unsigned int index,
734        /* [in] */ VARIANT val) { return DOMHTMLElement::setWebScriptValueAtIndex(index, val); }
735
736    virtual HRESULT STDMETHODCALLTYPE setException(
737        /* [in] */ BSTR description) { return DOMHTMLElement::setException(description); }
738
739    // IDOMNode
740    virtual HRESULT STDMETHODCALLTYPE nodeName(
741        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeName(result); }
742
743    virtual HRESULT STDMETHODCALLTYPE nodeValue(
744        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeValue(result); }
745
746    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
747        /* [in] */ BSTR value) { return DOMHTMLElement::setNodeValue(value); }
748
749    virtual HRESULT STDMETHODCALLTYPE nodeType(
750        /* [retval][out] */ unsigned short *result) { return DOMHTMLElement::nodeType(result); }
751
752    virtual HRESULT STDMETHODCALLTYPE parentNode(
753        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::parentNode(result); }
754
755    virtual HRESULT STDMETHODCALLTYPE childNodes(
756        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::childNodes(result); }
757
758    virtual HRESULT STDMETHODCALLTYPE firstChild(
759        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::firstChild(result); }
760
761    virtual HRESULT STDMETHODCALLTYPE lastChild(
762        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::lastChild(result); }
763
764    virtual HRESULT STDMETHODCALLTYPE previousSibling(
765        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::previousSibling(result); }
766
767    virtual HRESULT STDMETHODCALLTYPE nextSibling(
768        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::nextSibling(result); }
769
770    virtual HRESULT STDMETHODCALLTYPE attributes(
771        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMHTMLElement::attributes(result); }
772
773    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
774        /* [retval][out] */ IDOMDocument **result) { return DOMHTMLElement::ownerDocument(result); }
775
776    virtual HRESULT STDMETHODCALLTYPE insertBefore(
777        /* [in] */ IDOMNode *newChild,
778        /* [in] */ IDOMNode *refChild,
779        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::insertBefore(newChild, refChild, result); }
780
781    virtual HRESULT STDMETHODCALLTYPE replaceChild(
782        /* [in] */ IDOMNode *newChild,
783        /* [in] */ IDOMNode *oldChild,
784        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::replaceChild(newChild, oldChild, result); }
785
786    virtual HRESULT STDMETHODCALLTYPE removeChild(
787        /* [in] */ IDOMNode *oldChild,
788        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::removeChild(oldChild, result); }
789
790    virtual HRESULT STDMETHODCALLTYPE appendChild(
791        /* [in] */ IDOMNode *oldChild,
792        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::appendChild(oldChild, result); }
793
794    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
795        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasChildNodes(result); }
796
797    virtual HRESULT STDMETHODCALLTYPE cloneNode(
798        /* [in] */ BOOL deep,
799        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::cloneNode(deep, result); }
800
801    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMHTMLElement::normalize(); }
802
803    virtual HRESULT STDMETHODCALLTYPE isSupported(
804        /* [in] */ BSTR feature,
805        /* [in] */ BSTR version,
806        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::isSupported(feature, version, result); }
807
808    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
809        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::namespaceURI(result); }
810
811    virtual HRESULT STDMETHODCALLTYPE prefix(
812        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::prefix(result); }
813
814    virtual HRESULT STDMETHODCALLTYPE setPrefix(
815        /* [in] */ BSTR prefix) { return DOMHTMLElement::setPrefix(prefix); }
816
817    virtual HRESULT STDMETHODCALLTYPE localName(
818        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::localName(result); }
819
820    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
821        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributes(result); }
822
823    virtual HRESULT STDMETHODCALLTYPE isSameNode(
824        /* [in] */ IDOMNode* other,
825        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isSameNode(other, result); }
826
827    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
828        /* [in] */ IDOMNode* other,
829        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isEqualNode(other, result); }
830
831    virtual HRESULT STDMETHODCALLTYPE textContent(
832        /* [retval][out] */ BSTR* result) { return DOMHTMLElement::textContent(result); }
833
834    virtual HRESULT STDMETHODCALLTYPE setTextContent(
835        /* [in] */ BSTR text) { return DOMHTMLElement::setTextContent(text); }
836
837    // IDOMElement
838    virtual HRESULT STDMETHODCALLTYPE tagName(
839        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::tagName(result); }
840
841    virtual HRESULT STDMETHODCALLTYPE getAttribute(
842        /* [in] */ BSTR name,
843        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttribute(name, result); }
844
845    virtual HRESULT STDMETHODCALLTYPE setAttribute(
846        /* [in] */ BSTR name,
847        /* [in] */ BSTR value) { return DOMHTMLElement::setAttribute(name, value); }
848
849    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
850        /* [in] */ BSTR name) { return DOMHTMLElement::removeAttribute(name); }
851
852    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
853        /* [in] */ BSTR name,
854        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNode(name, result); }
855
856    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
857        /* [in] */ IDOMAttr *newAttr,
858        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNode(newAttr, result); }
859
860    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
861        /* [in] */ IDOMAttr *oldAttr,
862        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::removeAttributeNode(oldAttr, result); }
863
864    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
865        /* [in] */ BSTR name,
866        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagName(name, result); }
867
868    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
869        /* [in] */ BSTR namespaceURI,
870        /* [in] */ BSTR localName,
871        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttributeNS(namespaceURI, localName, result); }
872
873    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
874        /* [in] */ BSTR namespaceURI,
875        /* [in] */ BSTR qualifiedName,
876        /* [in] */ BSTR value) { return DOMHTMLElement::setAttributeNS(namespaceURI, qualifiedName, value); }
877
878    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
879        /* [in] */ BSTR namespaceURI,
880        /* [in] */ BSTR localName) { return DOMHTMLElement::removeAttributeNS(namespaceURI, localName); }
881
882    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
883        /* [in] */ BSTR namespaceURI,
884        /* [in] */ BSTR localName,
885        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNodeNS(namespaceURI, localName, result); }
886
887    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
888        /* [in] */ IDOMAttr *newAttr,
889        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNodeNS(newAttr, result); }
890
891    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
892        /* [in] */ BSTR namespaceURI,
893        /* [in] */ BSTR localName,
894        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagNameNS(namespaceURI, localName, result); }
895
896    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
897        /* [in] */ BSTR name,
898        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttribute(name, result); }
899
900    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
901        /* [in] */ BSTR namespaceURI,
902        /* [in] */ BSTR localName,
903        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributeNS(namespaceURI, localName, result); }
904
905    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMHTMLElement::focus(); }
906
907    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMHTMLElement::blur(); }
908
909    // IDOMHTMLElement
910    virtual HRESULT STDMETHODCALLTYPE idName(
911        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::idName(result); }
912
913    virtual HRESULT STDMETHODCALLTYPE setIdName(
914        /* [in] */ BSTR idName) { return DOMHTMLElement::setIdName(idName); }
915
916    virtual HRESULT STDMETHODCALLTYPE title(
917        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::title(result); }
918
919    virtual HRESULT STDMETHODCALLTYPE setTitle(
920        /* [in] */ BSTR title) { return DOMHTMLElement::setTitle(title); }
921
922    virtual HRESULT STDMETHODCALLTYPE lang(
923        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::lang(result); }
924
925    virtual HRESULT STDMETHODCALLTYPE setLang(
926        /* [in] */ BSTR lang) { return DOMHTMLElement::setLang(lang); }
927
928    virtual HRESULT STDMETHODCALLTYPE dir(
929        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::dir(result); }
930
931    virtual HRESULT STDMETHODCALLTYPE setDir(
932        /* [in] */ BSTR dir) { return DOMHTMLElement::setDir(dir); }
933
934    virtual HRESULT STDMETHODCALLTYPE className(
935        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::className(result); }
936
937    virtual HRESULT STDMETHODCALLTYPE setClassName(
938        /* [in] */ BSTR className) { return DOMHTMLElement::setClassName(className); }
939
940    virtual HRESULT STDMETHODCALLTYPE innerHTML(
941        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerHTML(result); }
942
943    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
944        /* [in] */ BSTR html) { return DOMHTMLElement::setInnerHTML(html); }
945
946    virtual HRESULT STDMETHODCALLTYPE innerText(
947        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerText(result); }
948
949    virtual HRESULT STDMETHODCALLTYPE setInnerText(
950        /* [in] */ BSTR text) { return DOMHTMLElement::setInnerText(text); }
951
952    // IDOMHTMLFormElement
953    virtual HRESULT STDMETHODCALLTYPE elements(
954        /* [retval][out] */ IDOMHTMLCollection **result);
955
956    virtual HRESULT STDMETHODCALLTYPE length(
957        /* [retval][out] */ int *result);
958
959    virtual HRESULT STDMETHODCALLTYPE name(
960        /* [retval][out] */ BSTR *result);
961
962    virtual HRESULT STDMETHODCALLTYPE setName(
963        /* [in] */ BSTR name);
964
965    virtual HRESULT STDMETHODCALLTYPE acceptCharset(
966        /* [retval][out] */ BSTR *result);
967
968    virtual HRESULT STDMETHODCALLTYPE setAcceptCharset(
969        /* [in] */ BSTR acceptCharset);
970
971    virtual HRESULT STDMETHODCALLTYPE action(
972        /* [retval][out] */ BSTR *result);
973
974    virtual HRESULT STDMETHODCALLTYPE setAction(
975        /* [in] */ BSTR action);
976
977    virtual HRESULT STDMETHODCALLTYPE encType(
978        /* [retval][out] */ BSTR *result);
979
980    virtual HRESULT STDMETHODCALLTYPE setEnctype(
981        /* [retval][out] */ BSTR *encType);
982
983    virtual HRESULT STDMETHODCALLTYPE method(
984        /* [retval][out] */ BSTR *method);
985
986    virtual HRESULT STDMETHODCALLTYPE setMethod(
987        /* [in] */ BSTR method);
988
989    virtual HRESULT STDMETHODCALLTYPE target(
990        /* [retval][out] */ BSTR *result);
991
992    virtual HRESULT STDMETHODCALLTYPE setTarget(
993        /* [in] */ BSTR target);
994
995    virtual HRESULT STDMETHODCALLTYPE submit( void);
996
997    virtual HRESULT STDMETHODCALLTYPE reset( void);
998};
999
1000class DOMHTMLSelectElement : public DOMHTMLElement, public IDOMHTMLSelectElement, public IFormsAutoFillTransitionSelect
1001{
1002protected:
1003    DOMHTMLSelectElement();
1004public:
1005    DOMHTMLSelectElement(WebCore::Element* e) : DOMHTMLElement(e) {}
1006
1007    // IUnknown
1008    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
1009    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMHTMLElement::AddRef(); }
1010    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMHTMLElement::Release(); }
1011
1012    // IWebScriptObject
1013    virtual HRESULT STDMETHODCALLTYPE throwException(
1014        /* [in] */ BSTR exceptionMessage,
1015        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::throwException(exceptionMessage, result); }
1016
1017    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
1018        /* [in] */ BSTR name,
1019        /* [size_is][in] */ const VARIANT args[  ],
1020        /* [in] */ int cArgs,
1021        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::callWebScriptMethod(name, args, cArgs, result); }
1022
1023    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
1024        /* [in] */ BSTR script,
1025        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::evaluateWebScript(script, result); }
1026
1027    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
1028        /* [in] */ BSTR name) { return DOMHTMLElement::removeWebScriptKey(name); }
1029
1030    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
1031        /* [retval][out] */ BSTR* stringRepresentation) { return DOMHTMLElement::stringRepresentation(stringRepresentation); }
1032
1033    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
1034        /* [in] */ unsigned int index,
1035        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::webScriptValueAtIndex(index, result); }
1036
1037    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
1038        /* [in] */ unsigned int index,
1039        /* [in] */ VARIANT val) { return DOMHTMLElement::setWebScriptValueAtIndex(index, val); }
1040
1041    virtual HRESULT STDMETHODCALLTYPE setException(
1042        /* [in] */ BSTR description) { return DOMHTMLElement::setException(description); }
1043
1044    // IDOMNode
1045    virtual HRESULT STDMETHODCALLTYPE nodeName(
1046        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeName(result); }
1047
1048    virtual HRESULT STDMETHODCALLTYPE nodeValue(
1049        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeValue(result); }
1050
1051    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
1052        /* [in] */ BSTR value) { return DOMHTMLElement::setNodeValue(value); }
1053
1054    virtual HRESULT STDMETHODCALLTYPE nodeType(
1055        /* [retval][out] */ unsigned short *result) { return DOMHTMLElement::nodeType(result); }
1056
1057    virtual HRESULT STDMETHODCALLTYPE parentNode(
1058        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::parentNode(result); }
1059
1060    virtual HRESULT STDMETHODCALLTYPE childNodes(
1061        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::childNodes(result); }
1062
1063    virtual HRESULT STDMETHODCALLTYPE firstChild(
1064        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::firstChild(result); }
1065
1066    virtual HRESULT STDMETHODCALLTYPE lastChild(
1067        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::lastChild(result); }
1068
1069    virtual HRESULT STDMETHODCALLTYPE previousSibling(
1070        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::previousSibling(result); }
1071
1072    virtual HRESULT STDMETHODCALLTYPE nextSibling(
1073        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::nextSibling(result); }
1074
1075    virtual HRESULT STDMETHODCALLTYPE attributes(
1076        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMHTMLElement::attributes(result); }
1077
1078    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
1079        /* [retval][out] */ IDOMDocument **result) { return DOMHTMLElement::ownerDocument(result); }
1080
1081    virtual HRESULT STDMETHODCALLTYPE insertBefore(
1082        /* [in] */ IDOMNode *newChild,
1083        /* [in] */ IDOMNode *refChild,
1084        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::insertBefore(newChild, refChild, result); }
1085
1086    virtual HRESULT STDMETHODCALLTYPE replaceChild(
1087        /* [in] */ IDOMNode *newChild,
1088        /* [in] */ IDOMNode *oldChild,
1089        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::replaceChild(newChild, oldChild, result); }
1090
1091    virtual HRESULT STDMETHODCALLTYPE removeChild(
1092        /* [in] */ IDOMNode *oldChild,
1093        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::removeChild(oldChild, result); }
1094
1095    virtual HRESULT STDMETHODCALLTYPE appendChild(
1096        /* [in] */ IDOMNode *oldChild,
1097        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::appendChild(oldChild, result); }
1098
1099    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
1100        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasChildNodes(result); }
1101
1102    virtual HRESULT STDMETHODCALLTYPE cloneNode(
1103        /* [in] */ BOOL deep,
1104        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::cloneNode(deep, result); }
1105
1106    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMHTMLElement::normalize(); }
1107
1108    virtual HRESULT STDMETHODCALLTYPE isSupported(
1109        /* [in] */ BSTR feature,
1110        /* [in] */ BSTR version,
1111        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::isSupported(feature, version, result); }
1112
1113    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
1114        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::namespaceURI(result); }
1115
1116    virtual HRESULT STDMETHODCALLTYPE prefix(
1117        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::prefix(result); }
1118
1119    virtual HRESULT STDMETHODCALLTYPE setPrefix(
1120        /* [in] */ BSTR prefix) { return DOMHTMLElement::setPrefix(prefix); }
1121
1122    virtual HRESULT STDMETHODCALLTYPE localName(
1123        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::localName(result); }
1124
1125    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
1126        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributes(result); }
1127
1128    virtual HRESULT STDMETHODCALLTYPE isSameNode(
1129        /* [in] */ IDOMNode* other,
1130        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isSameNode(other, result); }
1131
1132    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
1133        /* [in] */ IDOMNode* other,
1134        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isEqualNode(other, result); }
1135
1136    virtual HRESULT STDMETHODCALLTYPE textContent(
1137        /* [retval][out] */ BSTR* result) { return DOMHTMLElement::textContent(result); }
1138
1139    virtual HRESULT STDMETHODCALLTYPE setTextContent(
1140        /* [in] */ BSTR text) { return DOMHTMLElement::setTextContent(text); }
1141
1142    // IDOMElement
1143    virtual HRESULT STDMETHODCALLTYPE tagName(
1144        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::tagName(result); }
1145
1146    virtual HRESULT STDMETHODCALLTYPE getAttribute(
1147        /* [in] */ BSTR name,
1148        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttribute(name, result); }
1149
1150    virtual HRESULT STDMETHODCALLTYPE setAttribute(
1151        /* [in] */ BSTR name,
1152        /* [in] */ BSTR value) { return DOMHTMLElement::setAttribute(name, value); }
1153
1154    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
1155        /* [in] */ BSTR name) { return DOMHTMLElement::removeAttribute(name); }
1156
1157    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
1158        /* [in] */ BSTR name,
1159        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNode(name, result); }
1160
1161    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
1162        /* [in] */ IDOMAttr *newAttr,
1163        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNode(newAttr, result); }
1164
1165    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
1166        /* [in] */ IDOMAttr *oldAttr,
1167        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::removeAttributeNode(oldAttr, result); }
1168
1169    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
1170        /* [in] */ BSTR name,
1171        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagName(name, result); }
1172
1173    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
1174        /* [in] */ BSTR namespaceURI,
1175        /* [in] */ BSTR localName,
1176        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttributeNS(namespaceURI, localName, result); }
1177
1178    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
1179        /* [in] */ BSTR namespaceURI,
1180        /* [in] */ BSTR qualifiedName,
1181        /* [in] */ BSTR value) { return DOMHTMLElement::setAttributeNS(namespaceURI, qualifiedName, value); }
1182
1183    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
1184        /* [in] */ BSTR namespaceURI,
1185        /* [in] */ BSTR localName) { return DOMHTMLElement::removeAttributeNS(namespaceURI, localName); }
1186
1187    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
1188        /* [in] */ BSTR namespaceURI,
1189        /* [in] */ BSTR localName,
1190        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNodeNS(namespaceURI, localName, result); }
1191
1192    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
1193        /* [in] */ IDOMAttr *newAttr,
1194        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNodeNS(newAttr, result); }
1195
1196    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
1197        /* [in] */ BSTR namespaceURI,
1198        /* [in] */ BSTR localName,
1199        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagNameNS(namespaceURI, localName, result); }
1200
1201    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
1202        /* [in] */ BSTR name,
1203        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttribute(name, result); }
1204
1205    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
1206        /* [in] */ BSTR namespaceURI,
1207        /* [in] */ BSTR localName,
1208        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributeNS(namespaceURI, localName, result); }
1209
1210    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMHTMLElement::focus(); }
1211
1212    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMHTMLElement::blur(); }
1213
1214    // IDOMHTMLElement
1215    virtual HRESULT STDMETHODCALLTYPE idName(
1216        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::idName(result); }
1217
1218    virtual HRESULT STDMETHODCALLTYPE setIdName(
1219        /* [in] */ BSTR idName) { return DOMHTMLElement::setIdName(idName); }
1220
1221    virtual HRESULT STDMETHODCALLTYPE title(
1222        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::title(result); }
1223
1224    virtual HRESULT STDMETHODCALLTYPE setTitle(
1225        /* [in] */ BSTR title) { return DOMHTMLElement::setTitle(title); }
1226
1227    virtual HRESULT STDMETHODCALLTYPE lang(
1228        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::lang(result); }
1229
1230    virtual HRESULT STDMETHODCALLTYPE setLang(
1231        /* [in] */ BSTR lang) { return DOMHTMLElement::setLang(lang); }
1232
1233    virtual HRESULT STDMETHODCALLTYPE dir(
1234        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::dir(result); }
1235
1236    virtual HRESULT STDMETHODCALLTYPE setDir(
1237        /* [in] */ BSTR dir) { return DOMHTMLElement::setDir(dir); }
1238
1239    virtual HRESULT STDMETHODCALLTYPE className(
1240        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::className(result); }
1241
1242    virtual HRESULT STDMETHODCALLTYPE setClassName(
1243        /* [in] */ BSTR className) { return DOMHTMLElement::setClassName(className); }
1244
1245    virtual HRESULT STDMETHODCALLTYPE innerHTML(
1246        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerHTML(result); }
1247
1248    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
1249        /* [in] */ BSTR html) { return DOMHTMLElement::setInnerHTML(html); }
1250
1251    virtual HRESULT STDMETHODCALLTYPE innerText(
1252        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerText(result); }
1253
1254    virtual HRESULT STDMETHODCALLTYPE setInnerText(
1255        /* [in] */ BSTR text) { return DOMHTMLElement::setInnerText(text); }
1256
1257    // IDOMHTMLSelectElement
1258    virtual HRESULT STDMETHODCALLTYPE type(
1259        /* [retval][out] */ BSTR *result);
1260
1261    virtual HRESULT STDMETHODCALLTYPE selectedIndex(
1262        /* [retval][out] */ int *result);
1263
1264    virtual HRESULT STDMETHODCALLTYPE setSelectedIndx(
1265        /* [in] */ int selectedIndex);
1266
1267    virtual HRESULT STDMETHODCALLTYPE value(
1268        /* [retval][out] */ BSTR *result);
1269
1270    virtual HRESULT STDMETHODCALLTYPE setValue(
1271        /* [in] */ BSTR value);
1272
1273    virtual HRESULT STDMETHODCALLTYPE length(
1274        /* [retval][out] */ int *result);
1275
1276    virtual HRESULT STDMETHODCALLTYPE form(
1277        /* [retval][out] */ IDOMHTMLFormElement **result);
1278
1279    virtual HRESULT STDMETHODCALLTYPE options(
1280        /* [retval][out] */ IDOMHTMLOptionsCollection **result);
1281
1282    virtual HRESULT STDMETHODCALLTYPE disabled(
1283        /* [retval][out] */ BOOL *result);
1284
1285    virtual HRESULT STDMETHODCALLTYPE setDisabled(
1286        /* [in] */ BOOL disabled);
1287
1288    virtual HRESULT STDMETHODCALLTYPE multiple(
1289        /* [retval][out] */ BOOL *result);
1290
1291    virtual HRESULT STDMETHODCALLTYPE setMultiple(
1292        /* [in] */ BOOL multiple);
1293
1294    virtual HRESULT STDMETHODCALLTYPE name(
1295        /* [retval][out] */ BSTR *result);
1296
1297    virtual HRESULT STDMETHODCALLTYPE setName(
1298        /* [in] */ BSTR name);
1299
1300    virtual HRESULT STDMETHODCALLTYPE size(
1301        /* [retval][out] */ int *size);
1302
1303    virtual HRESULT STDMETHODCALLTYPE setSize(
1304        /* [in] */ int size);
1305
1306    virtual HRESULT STDMETHODCALLTYPE tabIndex(
1307        /* [retval][out] */ int *result);
1308
1309    virtual HRESULT STDMETHODCALLTYPE setTabIndex(
1310        /* [in] */ int tabIndex);
1311
1312    virtual HRESULT STDMETHODCALLTYPE add(
1313        /* [in] */ IDOMHTMLElement *element,
1314        /* [in] */ IDOMHTMLElement *before);
1315
1316    virtual HRESULT STDMETHODCALLTYPE remove(
1317        /* [in] */ int index);
1318
1319    // IFormsAutoFillTransitionSelect
1320    virtual HRESULT STDMETHODCALLTYPE activateItemAtIndex(
1321        /* [in] */ int index);
1322};
1323
1324class DOMHTMLOptionElement : public DOMHTMLElement, public IDOMHTMLOptionElement
1325{
1326protected:
1327    DOMHTMLOptionElement();
1328public:
1329    DOMHTMLOptionElement(WebCore::Element* e) : DOMHTMLElement(e) {}
1330
1331    // IUnknown
1332    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
1333    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMHTMLElement::AddRef(); }
1334    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMHTMLElement::Release(); }
1335
1336    // IWebScriptObject
1337    virtual HRESULT STDMETHODCALLTYPE throwException(
1338        /* [in] */ BSTR exceptionMessage,
1339        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::throwException(exceptionMessage, result); }
1340
1341    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
1342        /* [in] */ BSTR name,
1343        /* [size_is][in] */ const VARIANT args[  ],
1344        /* [in] */ int cArgs,
1345        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::callWebScriptMethod(name, args, cArgs, result); }
1346
1347    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
1348        /* [in] */ BSTR script,
1349        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::evaluateWebScript(script, result); }
1350
1351    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
1352        /* [in] */ BSTR name) { return DOMHTMLElement::removeWebScriptKey(name); }
1353
1354    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
1355        /* [retval][out] */ BSTR* stringRepresentation) { return DOMHTMLElement::stringRepresentation(stringRepresentation); }
1356
1357    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
1358        /* [in] */ unsigned int index,
1359        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::webScriptValueAtIndex(index, result); }
1360
1361    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
1362        /* [in] */ unsigned int index,
1363        /* [in] */ VARIANT val) { return DOMHTMLElement::setWebScriptValueAtIndex(index, val); }
1364
1365    virtual HRESULT STDMETHODCALLTYPE setException(
1366        /* [in] */ BSTR description) { return DOMHTMLElement::setException(description); }
1367
1368    // IDOMNode
1369    virtual HRESULT STDMETHODCALLTYPE nodeName(
1370        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeName(result); }
1371
1372    virtual HRESULT STDMETHODCALLTYPE nodeValue(
1373        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeValue(result); }
1374
1375    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
1376        /* [in] */ BSTR value) { return DOMHTMLElement::setNodeValue(value); }
1377
1378    virtual HRESULT STDMETHODCALLTYPE nodeType(
1379        /* [retval][out] */ unsigned short *result) { return DOMHTMLElement::nodeType(result); }
1380
1381    virtual HRESULT STDMETHODCALLTYPE parentNode(
1382        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::parentNode(result); }
1383
1384    virtual HRESULT STDMETHODCALLTYPE childNodes(
1385        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::childNodes(result); }
1386
1387    virtual HRESULT STDMETHODCALLTYPE firstChild(
1388        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::firstChild(result); }
1389
1390    virtual HRESULT STDMETHODCALLTYPE lastChild(
1391        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::lastChild(result); }
1392
1393    virtual HRESULT STDMETHODCALLTYPE previousSibling(
1394        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::previousSibling(result); }
1395
1396    virtual HRESULT STDMETHODCALLTYPE nextSibling(
1397        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::nextSibling(result); }
1398
1399    virtual HRESULT STDMETHODCALLTYPE attributes(
1400        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMHTMLElement::attributes(result); }
1401
1402    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
1403        /* [retval][out] */ IDOMDocument **result) { return DOMHTMLElement::ownerDocument(result); }
1404
1405    virtual HRESULT STDMETHODCALLTYPE insertBefore(
1406        /* [in] */ IDOMNode *newChild,
1407        /* [in] */ IDOMNode *refChild,
1408        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::insertBefore(newChild, refChild, result); }
1409
1410    virtual HRESULT STDMETHODCALLTYPE replaceChild(
1411        /* [in] */ IDOMNode *newChild,
1412        /* [in] */ IDOMNode *oldChild,
1413        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::replaceChild(newChild, oldChild, result); }
1414
1415    virtual HRESULT STDMETHODCALLTYPE removeChild(
1416        /* [in] */ IDOMNode *oldChild,
1417        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::removeChild(oldChild, result); }
1418
1419    virtual HRESULT STDMETHODCALLTYPE appendChild(
1420        /* [in] */ IDOMNode *oldChild,
1421        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::appendChild(oldChild, result); }
1422
1423    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
1424        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasChildNodes(result); }
1425
1426    virtual HRESULT STDMETHODCALLTYPE cloneNode(
1427        /* [in] */ BOOL deep,
1428        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::cloneNode(deep, result); }
1429
1430    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMHTMLElement::normalize(); }
1431
1432    virtual HRESULT STDMETHODCALLTYPE isSupported(
1433        /* [in] */ BSTR feature,
1434        /* [in] */ BSTR version,
1435        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::isSupported(feature, version, result); }
1436
1437    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
1438        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::namespaceURI(result); }
1439
1440    virtual HRESULT STDMETHODCALLTYPE prefix(
1441        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::prefix(result); }
1442
1443    virtual HRESULT STDMETHODCALLTYPE setPrefix(
1444        /* [in] */ BSTR prefix) { return DOMHTMLElement::setPrefix(prefix); }
1445
1446    virtual HRESULT STDMETHODCALLTYPE localName(
1447        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::localName(result); }
1448
1449    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
1450        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributes(result); }
1451
1452    virtual HRESULT STDMETHODCALLTYPE isSameNode(
1453        /* [in] */ IDOMNode* other,
1454        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isSameNode(other, result); }
1455
1456    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
1457        /* [in] */ IDOMNode* other,
1458        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isEqualNode(other, result); }
1459
1460    virtual HRESULT STDMETHODCALLTYPE textContent(
1461        /* [retval][out] */ BSTR* result) { return DOMHTMLElement::textContent(result); }
1462
1463    virtual HRESULT STDMETHODCALLTYPE setTextContent(
1464        /* [in] */ BSTR text) { return DOMHTMLElement::setTextContent(text); }
1465
1466    // IDOMElement
1467    virtual HRESULT STDMETHODCALLTYPE tagName(
1468        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::tagName(result); }
1469
1470    virtual HRESULT STDMETHODCALLTYPE getAttribute(
1471        /* [in] */ BSTR name,
1472        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttribute(name, result); }
1473
1474    virtual HRESULT STDMETHODCALLTYPE setAttribute(
1475        /* [in] */ BSTR name,
1476        /* [in] */ BSTR value) { return DOMHTMLElement::setAttribute(name, value); }
1477
1478    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
1479        /* [in] */ BSTR name) { return DOMHTMLElement::removeAttribute(name); }
1480
1481    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
1482        /* [in] */ BSTR name,
1483        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNode(name, result); }
1484
1485    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
1486        /* [in] */ IDOMAttr *newAttr,
1487        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNode(newAttr, result); }
1488
1489    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
1490        /* [in] */ IDOMAttr *oldAttr,
1491        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::removeAttributeNode(oldAttr, result); }
1492
1493    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
1494        /* [in] */ BSTR name,
1495        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagName(name, result); }
1496
1497    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
1498        /* [in] */ BSTR namespaceURI,
1499        /* [in] */ BSTR localName,
1500        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttributeNS(namespaceURI, localName, result); }
1501
1502    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
1503        /* [in] */ BSTR namespaceURI,
1504        /* [in] */ BSTR qualifiedName,
1505        /* [in] */ BSTR value) { return DOMHTMLElement::setAttributeNS(namespaceURI, qualifiedName, value); }
1506
1507    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
1508        /* [in] */ BSTR namespaceURI,
1509        /* [in] */ BSTR localName) { return DOMHTMLElement::removeAttributeNS(namespaceURI, localName); }
1510
1511    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
1512        /* [in] */ BSTR namespaceURI,
1513        /* [in] */ BSTR localName,
1514        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNodeNS(namespaceURI, localName, result); }
1515
1516    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
1517        /* [in] */ IDOMAttr *newAttr,
1518        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNodeNS(newAttr, result); }
1519
1520    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
1521        /* [in] */ BSTR namespaceURI,
1522        /* [in] */ BSTR localName,
1523        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagNameNS(namespaceURI, localName, result); }
1524
1525    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
1526        /* [in] */ BSTR name,
1527        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttribute(name, result); }
1528
1529    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
1530        /* [in] */ BSTR namespaceURI,
1531        /* [in] */ BSTR localName,
1532        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributeNS(namespaceURI, localName, result); }
1533
1534    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMHTMLElement::focus(); }
1535
1536    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMHTMLElement::blur(); }
1537
1538    // IDOMHTMLElement
1539    virtual HRESULT STDMETHODCALLTYPE idName(
1540        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::idName(result); }
1541
1542    virtual HRESULT STDMETHODCALLTYPE setIdName(
1543        /* [in] */ BSTR idName) { return DOMHTMLElement::setIdName(idName); }
1544
1545    virtual HRESULT STDMETHODCALLTYPE title(
1546        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::title(result); }
1547
1548    virtual HRESULT STDMETHODCALLTYPE setTitle(
1549        /* [in] */ BSTR title) { return DOMHTMLElement::setTitle(title); }
1550
1551    virtual HRESULT STDMETHODCALLTYPE lang(
1552        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::lang(result); }
1553
1554    virtual HRESULT STDMETHODCALLTYPE setLang(
1555        /* [in] */ BSTR lang) { return DOMHTMLElement::setLang(lang); }
1556
1557    virtual HRESULT STDMETHODCALLTYPE dir(
1558        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::dir(result); }
1559
1560    virtual HRESULT STDMETHODCALLTYPE setDir(
1561        /* [in] */ BSTR dir) { return DOMHTMLElement::setDir(dir); }
1562
1563    virtual HRESULT STDMETHODCALLTYPE className(
1564        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::className(result); }
1565
1566    virtual HRESULT STDMETHODCALLTYPE setClassName(
1567        /* [in] */ BSTR className) { return DOMHTMLElement::setClassName(className); }
1568
1569    virtual HRESULT STDMETHODCALLTYPE innerHTML(
1570        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerHTML(result); }
1571
1572    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
1573        /* [in] */ BSTR html) { return DOMHTMLElement::setInnerHTML(html); }
1574
1575    virtual HRESULT STDMETHODCALLTYPE innerText(
1576        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerText(result); }
1577
1578    virtual HRESULT STDMETHODCALLTYPE setInnerText(
1579        /* [in] */ BSTR text) { return DOMHTMLElement::setInnerText(text); }
1580
1581    // IDOMHTMLOptionElement
1582    virtual HRESULT STDMETHODCALLTYPE form(
1583        /* [retval][out] */ IDOMHTMLFormElement **result);
1584
1585    virtual HRESULT STDMETHODCALLTYPE defaultSelected(
1586        /* [retval][out] */ BOOL *result);
1587
1588    virtual HRESULT STDMETHODCALLTYPE setDefaultSelected(
1589        /* [in] */ BOOL defaultSelected);
1590
1591    virtual HRESULT STDMETHODCALLTYPE text(
1592        /* [retval][out] */ BSTR *result);
1593
1594    virtual HRESULT STDMETHODCALLTYPE index(
1595        /* [retval][out] */ int *result);
1596
1597    virtual HRESULT STDMETHODCALLTYPE disabled(
1598        /* [retval][out] */ BOOL *result);
1599
1600    virtual HRESULT STDMETHODCALLTYPE setDisabled(
1601        /* [in] */ BOOL disabled);
1602
1603    virtual HRESULT STDMETHODCALLTYPE label(
1604        /* [retval][out] */ BSTR *result);
1605
1606    virtual HRESULT STDMETHODCALLTYPE setLabel(
1607        /* [in] */ BSTR label);
1608
1609    virtual HRESULT STDMETHODCALLTYPE selected(
1610        /* [retval][out] */ BOOL *result);
1611
1612    virtual HRESULT STDMETHODCALLTYPE setSelected(
1613        /* [in] */ BOOL selected);
1614
1615    virtual HRESULT STDMETHODCALLTYPE value(
1616        /* [retval][out] */ BSTR *result);
1617
1618    virtual HRESULT STDMETHODCALLTYPE setValue(
1619        /* [in] */ BSTR value);
1620};
1621
1622class DOMHTMLInputElement : public DOMHTMLElement, public IDOMHTMLInputElement, public IFormsAutoFillTransition, public IFormPromptAdditions
1623{
1624protected:
1625    DOMHTMLInputElement();
1626public:
1627    DOMHTMLInputElement(WebCore::Element* e) : DOMHTMLElement(e) {}
1628
1629    // IUnknown
1630    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
1631    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMHTMLElement::AddRef(); }
1632    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMHTMLElement::Release(); }
1633
1634    // IWebScriptObject
1635    virtual HRESULT STDMETHODCALLTYPE throwException(
1636        /* [in] */ BSTR exceptionMessage,
1637        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::throwException(exceptionMessage, result); }
1638
1639    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
1640        /* [in] */ BSTR name,
1641        /* [size_is][in] */ const VARIANT args[  ],
1642        /* [in] */ int cArgs,
1643        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::callWebScriptMethod(name, args, cArgs, result); }
1644
1645    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
1646        /* [in] */ BSTR script,
1647        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::evaluateWebScript(script, result); }
1648
1649    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
1650        /* [in] */ BSTR name) { return DOMHTMLElement::removeWebScriptKey(name); }
1651
1652    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
1653        /* [retval][out] */ BSTR* stringRepresentation) { return DOMHTMLElement::stringRepresentation(stringRepresentation); }
1654
1655    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
1656        /* [in] */ unsigned int index,
1657        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::webScriptValueAtIndex(index, result); }
1658
1659    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
1660        /* [in] */ unsigned int index,
1661        /* [in] */ VARIANT val) { return DOMHTMLElement::setWebScriptValueAtIndex(index, val); }
1662
1663    virtual HRESULT STDMETHODCALLTYPE setException(
1664        /* [in] */ BSTR description) { return DOMHTMLElement::setException(description); }
1665
1666    // IDOMNode
1667    virtual HRESULT STDMETHODCALLTYPE nodeName(
1668        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeName(result); }
1669
1670    virtual HRESULT STDMETHODCALLTYPE nodeValue(
1671        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeValue(result); }
1672
1673    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
1674        /* [in] */ BSTR value) { return DOMHTMLElement::setNodeValue(value); }
1675
1676    virtual HRESULT STDMETHODCALLTYPE nodeType(
1677        /* [retval][out] */ unsigned short *result) { return DOMHTMLElement::nodeType(result); }
1678
1679    virtual HRESULT STDMETHODCALLTYPE parentNode(
1680        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::parentNode(result); }
1681
1682    virtual HRESULT STDMETHODCALLTYPE childNodes(
1683        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::childNodes(result); }
1684
1685    virtual HRESULT STDMETHODCALLTYPE firstChild(
1686        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::firstChild(result); }
1687
1688    virtual HRESULT STDMETHODCALLTYPE lastChild(
1689        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::lastChild(result); }
1690
1691    virtual HRESULT STDMETHODCALLTYPE previousSibling(
1692        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::previousSibling(result); }
1693
1694    virtual HRESULT STDMETHODCALLTYPE nextSibling(
1695        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::nextSibling(result); }
1696
1697    virtual HRESULT STDMETHODCALLTYPE attributes(
1698        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMHTMLElement::attributes(result); }
1699
1700    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
1701        /* [retval][out] */ IDOMDocument **result) { return DOMHTMLElement::ownerDocument(result); }
1702
1703    virtual HRESULT STDMETHODCALLTYPE insertBefore(
1704        /* [in] */ IDOMNode *newChild,
1705        /* [in] */ IDOMNode *refChild,
1706        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::insertBefore(newChild, refChild, result); }
1707
1708    virtual HRESULT STDMETHODCALLTYPE replaceChild(
1709        /* [in] */ IDOMNode *newChild,
1710        /* [in] */ IDOMNode *oldChild,
1711        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::replaceChild(newChild, oldChild, result); }
1712
1713    virtual HRESULT STDMETHODCALLTYPE removeChild(
1714        /* [in] */ IDOMNode *oldChild,
1715        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::removeChild(oldChild, result); }
1716
1717    virtual HRESULT STDMETHODCALLTYPE appendChild(
1718        /* [in] */ IDOMNode *oldChild,
1719        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::appendChild(oldChild, result); }
1720
1721    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
1722        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasChildNodes(result); }
1723
1724    virtual HRESULT STDMETHODCALLTYPE cloneNode(
1725        /* [in] */ BOOL deep,
1726        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::cloneNode(deep, result); }
1727
1728    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMHTMLElement::normalize(); }
1729
1730    virtual HRESULT STDMETHODCALLTYPE isSupported(
1731        /* [in] */ BSTR feature,
1732        /* [in] */ BSTR version,
1733        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::isSupported(feature, version, result); }
1734
1735    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
1736        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::namespaceURI(result); }
1737
1738    virtual HRESULT STDMETHODCALLTYPE prefix(
1739        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::prefix(result); }
1740
1741    virtual HRESULT STDMETHODCALLTYPE setPrefix(
1742        /* [in] */ BSTR prefix) { return DOMHTMLElement::setPrefix(prefix); }
1743
1744    virtual HRESULT STDMETHODCALLTYPE localName(
1745        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::localName(result); }
1746
1747    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
1748        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributes(result); }
1749
1750    virtual HRESULT STDMETHODCALLTYPE isSameNode(
1751        /* [in] */ IDOMNode* other,
1752        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isSameNode(other, result); }
1753
1754    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
1755        /* [in] */ IDOMNode* other,
1756        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isEqualNode(other, result); }
1757
1758    virtual HRESULT STDMETHODCALLTYPE textContent(
1759        /* [retval][out] */ BSTR* result) { return DOMHTMLElement::textContent(result); }
1760
1761    virtual HRESULT STDMETHODCALLTYPE setTextContent(
1762        /* [in] */ BSTR text) { return DOMHTMLElement::setTextContent(text); }
1763
1764    // IDOMElement
1765    virtual HRESULT STDMETHODCALLTYPE tagName(
1766        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::tagName(result); }
1767
1768    virtual HRESULT STDMETHODCALLTYPE getAttribute(
1769        /* [in] */ BSTR name,
1770        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttribute(name, result); }
1771
1772    virtual HRESULT STDMETHODCALLTYPE setAttribute(
1773        /* [in] */ BSTR name,
1774        /* [in] */ BSTR value) { return DOMHTMLElement::setAttribute(name, value); }
1775
1776    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
1777        /* [in] */ BSTR name) { return DOMHTMLElement::removeAttribute(name); }
1778
1779    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
1780        /* [in] */ BSTR name,
1781        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNode(name, result); }
1782
1783    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
1784        /* [in] */ IDOMAttr *newAttr,
1785        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNode(newAttr, result); }
1786
1787    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
1788        /* [in] */ IDOMAttr *oldAttr,
1789        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::removeAttributeNode(oldAttr, result); }
1790
1791    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
1792        /* [in] */ BSTR name,
1793        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagName(name, result); }
1794
1795    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
1796        /* [in] */ BSTR namespaceURI,
1797        /* [in] */ BSTR localName,
1798        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttributeNS(namespaceURI, localName, result); }
1799
1800    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
1801        /* [in] */ BSTR namespaceURI,
1802        /* [in] */ BSTR qualifiedName,
1803        /* [in] */ BSTR value) { return DOMHTMLElement::setAttributeNS(namespaceURI, qualifiedName, value); }
1804
1805    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
1806        /* [in] */ BSTR namespaceURI,
1807        /* [in] */ BSTR localName) { return DOMHTMLElement::removeAttributeNS(namespaceURI, localName); }
1808
1809    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
1810        /* [in] */ BSTR namespaceURI,
1811        /* [in] */ BSTR localName,
1812        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNodeNS(namespaceURI, localName, result); }
1813
1814    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
1815        /* [in] */ IDOMAttr *newAttr,
1816        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNodeNS(newAttr, result); }
1817
1818    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
1819        /* [in] */ BSTR namespaceURI,
1820        /* [in] */ BSTR localName,
1821        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagNameNS(namespaceURI, localName, result); }
1822
1823    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
1824        /* [in] */ BSTR name,
1825        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttribute(name, result); }
1826
1827    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
1828        /* [in] */ BSTR namespaceURI,
1829        /* [in] */ BSTR localName,
1830        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributeNS(namespaceURI, localName, result); }
1831
1832    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMHTMLElement::focus(); }
1833
1834    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMHTMLElement::blur(); }
1835
1836    // IDOMHTMLElement
1837    virtual HRESULT STDMETHODCALLTYPE idName(
1838        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::idName(result); }
1839
1840    virtual HRESULT STDMETHODCALLTYPE setIdName(
1841        /* [in] */ BSTR idName) { return DOMHTMLElement::setIdName(idName); }
1842
1843    virtual HRESULT STDMETHODCALLTYPE title(
1844        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::title(result); }
1845
1846    virtual HRESULT STDMETHODCALLTYPE setTitle(
1847        /* [in] */ BSTR title) { return DOMHTMLElement::setTitle(title); }
1848
1849    virtual HRESULT STDMETHODCALLTYPE lang(
1850        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::lang(result); }
1851
1852    virtual HRESULT STDMETHODCALLTYPE setLang(
1853        /* [in] */ BSTR lang) { return DOMHTMLElement::setLang(lang); }
1854
1855    virtual HRESULT STDMETHODCALLTYPE dir(
1856        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::dir(result); }
1857
1858    virtual HRESULT STDMETHODCALLTYPE setDir(
1859        /* [in] */ BSTR dir) { return DOMHTMLElement::setDir(dir); }
1860
1861    virtual HRESULT STDMETHODCALLTYPE className(
1862        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::className(result); }
1863
1864    virtual HRESULT STDMETHODCALLTYPE setClassName(
1865        /* [in] */ BSTR className) { return DOMHTMLElement::setClassName(className); }
1866
1867    virtual HRESULT STDMETHODCALLTYPE innerHTML(
1868        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerHTML(result); }
1869
1870    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
1871        /* [in] */ BSTR html) { return DOMHTMLElement::setInnerHTML(html); }
1872
1873    virtual HRESULT STDMETHODCALLTYPE innerText(
1874        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerText(result); }
1875
1876    virtual HRESULT STDMETHODCALLTYPE setInnerText(
1877        /* [in] */ BSTR text) { return DOMHTMLElement::setInnerText(text); }
1878
1879    // IDOMHTMLInputElement
1880    virtual HRESULT STDMETHODCALLTYPE defaultValue(
1881        /* [retval][out] */ BSTR *result);
1882
1883    virtual HRESULT STDMETHODCALLTYPE setDefaultValue(
1884        /* [in] */ BSTR val);
1885
1886    virtual HRESULT STDMETHODCALLTYPE defaultChecked(
1887        /* [retval][out] */ BOOL *result);
1888
1889    virtual HRESULT STDMETHODCALLTYPE setDefaultChecked(
1890        /* [in] */ BSTR checked);
1891
1892    virtual HRESULT STDMETHODCALLTYPE form(
1893        /* [retval][out] */ IDOMHTMLElement **result);
1894
1895    virtual HRESULT STDMETHODCALLTYPE accept(
1896        /* [retval][out] */ BSTR *result);
1897
1898    virtual HRESULT STDMETHODCALLTYPE setAccept(
1899        /* [in] */ BSTR accept);
1900
1901    virtual HRESULT STDMETHODCALLTYPE accessKey(
1902        /* [retval][out] */ BSTR *result);
1903
1904    virtual HRESULT STDMETHODCALLTYPE setAccessKey(
1905        /* [in] */ BSTR key);
1906
1907    virtual HRESULT STDMETHODCALLTYPE align(
1908        /* [retval][out] */ BSTR *result);
1909
1910    virtual HRESULT STDMETHODCALLTYPE setAlign(
1911        /* [in] */ BSTR align);
1912
1913    virtual HRESULT STDMETHODCALLTYPE alt(
1914        /* [retval][out] */ BSTR *result);
1915
1916    virtual HRESULT STDMETHODCALLTYPE setAlt(
1917        /* [in] */ BSTR alt);
1918
1919    virtual HRESULT STDMETHODCALLTYPE checked(
1920        /* [retval][out] */ BOOL *result);
1921
1922    virtual HRESULT STDMETHODCALLTYPE setChecked(
1923        /* [in] */ BOOL checked);
1924
1925    virtual HRESULT STDMETHODCALLTYPE disabled(
1926        /* [retval][out] */ BOOL *result);
1927
1928    virtual HRESULT STDMETHODCALLTYPE setDisabled(
1929        /* [in] */ BOOL disabled);
1930
1931    virtual HRESULT STDMETHODCALLTYPE maxLength(
1932        /* [retval][out] */ int *result);
1933
1934    virtual HRESULT STDMETHODCALLTYPE setMaxLength(
1935        /* [in] */ int maxLength);
1936
1937    virtual HRESULT STDMETHODCALLTYPE name(
1938        /* [retval][out] */ BSTR *name);
1939
1940    virtual HRESULT STDMETHODCALLTYPE setName(
1941        /* [in] */ BSTR name);
1942
1943    virtual HRESULT STDMETHODCALLTYPE readOnly(
1944        /* [retval][out] */ BOOL *result);
1945
1946    virtual HRESULT STDMETHODCALLTYPE setReadOnly(
1947        /* [in] */ BOOL readOnly);
1948
1949    virtual HRESULT STDMETHODCALLTYPE size(
1950        /* [retval][out] */ unsigned int *result);
1951
1952    virtual HRESULT STDMETHODCALLTYPE setSize(
1953        /* [in] */ unsigned int size);
1954
1955    virtual HRESULT STDMETHODCALLTYPE src(
1956        /* [retval][out] */ BSTR *result);
1957
1958    virtual HRESULT STDMETHODCALLTYPE setSrc(
1959        /* [in] */ BSTR src);
1960
1961    virtual HRESULT STDMETHODCALLTYPE tabIndex(
1962        /* [retval][out] */ int *result);
1963
1964    virtual HRESULT STDMETHODCALLTYPE setTabIndex(
1965        /* [in] */ int tabIndex);
1966
1967    virtual HRESULT STDMETHODCALLTYPE type(
1968        /* [retval][out] */ BSTR *result);
1969
1970    virtual HRESULT STDMETHODCALLTYPE setType(
1971        /* [in] */ BSTR type);
1972
1973    virtual HRESULT STDMETHODCALLTYPE useMap(
1974        /* [retval][out] */ BSTR *result);
1975
1976    virtual HRESULT STDMETHODCALLTYPE setUseMap(
1977        /* [in] */ BSTR useMap);
1978
1979    virtual HRESULT STDMETHODCALLTYPE value(
1980        /* [retval][out] */ BSTR *result);
1981
1982    virtual HRESULT STDMETHODCALLTYPE setValue(
1983        /* [in] */ BSTR value);
1984
1985    virtual HRESULT STDMETHODCALLTYPE select( void);
1986
1987    virtual HRESULT STDMETHODCALLTYPE click( void);
1988
1989    virtual HRESULT STDMETHODCALLTYPE setSelectionStart(
1990        /* [in] */ long start);
1991
1992    virtual HRESULT STDMETHODCALLTYPE selectionStart(
1993        /* [retval][out] */ long *start);
1994
1995    virtual HRESULT STDMETHODCALLTYPE setSelectionEnd(
1996        /* [in] */ long end);
1997
1998    virtual HRESULT STDMETHODCALLTYPE selectionEnd(
1999        /* [retval][out] */ long *end);
2000
2001    // IFormsAutoFillTransition
2002    virtual HRESULT STDMETHODCALLTYPE isTextField(
2003        /* [retval][out] */ BOOL *result);
2004
2005    virtual HRESULT STDMETHODCALLTYPE rectOnScreen(
2006        /* [retval][out] */ LPRECT rect);
2007
2008    virtual HRESULT STDMETHODCALLTYPE replaceCharactersInRange(
2009        /* [in] */ int startTarget,
2010        /* [in] */ int endTarget,
2011        /* [in] */ BSTR replacementString,
2012        /* [in] */ int index);
2013
2014    virtual HRESULT STDMETHODCALLTYPE selectedRange(
2015        /* [out] */ int *start,
2016        /* [out] */ int *end);
2017
2018    virtual HRESULT STDMETHODCALLTYPE setAutofilled(
2019        /* [in] */ BOOL filled);
2020
2021    virtual HRESULT STDMETHODCALLTYPE isAutofilled(
2022        /* [retval][out] */ BOOL *result);
2023
2024    // IFormPromptAdditions
2025    virtual HRESULT STDMETHODCALLTYPE isUserEdited(
2026        /* [retval][out] */ BOOL *result);
2027
2028    virtual HRESULT STDMETHODCALLTYPE setValueForUser(
2029        /* [in] */ BSTR value);
2030};
2031
2032class DOMHTMLTextAreaElement : public DOMHTMLElement, public IDOMHTMLTextAreaElement, public IFormPromptAdditions
2033{
2034protected:
2035    DOMHTMLTextAreaElement();
2036public:
2037    DOMHTMLTextAreaElement(WebCore::Element* e) : DOMHTMLElement(e) {}
2038
2039    // IUnknown
2040    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
2041    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMHTMLElement::AddRef(); }
2042    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMHTMLElement::Release(); }
2043
2044    // IWebScriptObject
2045    virtual HRESULT STDMETHODCALLTYPE throwException(
2046        /* [in] */ BSTR exceptionMessage,
2047        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::throwException(exceptionMessage, result); }
2048
2049    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
2050        /* [in] */ BSTR name,
2051        /* [size_is][in] */ const VARIANT args[  ],
2052        /* [in] */ int cArgs,
2053        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::callWebScriptMethod(name, args, cArgs, result); }
2054
2055    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
2056        /* [in] */ BSTR script,
2057        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::evaluateWebScript(script, result); }
2058
2059    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
2060        /* [in] */ BSTR name) { return DOMHTMLElement::removeWebScriptKey(name); }
2061
2062    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
2063        /* [retval][out] */ BSTR* stringRepresentation) { return DOMHTMLElement::stringRepresentation(stringRepresentation); }
2064
2065    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
2066        /* [in] */ unsigned int index,
2067        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::webScriptValueAtIndex(index, result); }
2068
2069    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
2070        /* [in] */ unsigned int index,
2071        /* [in] */ VARIANT val) { return DOMHTMLElement::setWebScriptValueAtIndex(index, val); }
2072
2073    virtual HRESULT STDMETHODCALLTYPE setException(
2074        /* [in] */ BSTR description) { return DOMHTMLElement::setException(description); }
2075
2076    // IDOMNode
2077    virtual HRESULT STDMETHODCALLTYPE nodeName(
2078        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeName(result); }
2079
2080    virtual HRESULT STDMETHODCALLTYPE nodeValue(
2081        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeValue(result); }
2082
2083    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
2084        /* [in] */ BSTR value) { return DOMHTMLElement::setNodeValue(value); }
2085
2086    virtual HRESULT STDMETHODCALLTYPE nodeType(
2087        /* [retval][out] */ unsigned short *result) { return DOMHTMLElement::nodeType(result); }
2088
2089    virtual HRESULT STDMETHODCALLTYPE parentNode(
2090        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::parentNode(result); }
2091
2092    virtual HRESULT STDMETHODCALLTYPE childNodes(
2093        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::childNodes(result); }
2094
2095    virtual HRESULT STDMETHODCALLTYPE firstChild(
2096        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::firstChild(result); }
2097
2098    virtual HRESULT STDMETHODCALLTYPE lastChild(
2099        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::lastChild(result); }
2100
2101    virtual HRESULT STDMETHODCALLTYPE previousSibling(
2102        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::previousSibling(result); }
2103
2104    virtual HRESULT STDMETHODCALLTYPE nextSibling(
2105        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::nextSibling(result); }
2106
2107    virtual HRESULT STDMETHODCALLTYPE attributes(
2108        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMHTMLElement::attributes(result); }
2109
2110    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
2111        /* [retval][out] */ IDOMDocument **result) { return DOMHTMLElement::ownerDocument(result); }
2112
2113    virtual HRESULT STDMETHODCALLTYPE insertBefore(
2114        /* [in] */ IDOMNode *newChild,
2115        /* [in] */ IDOMNode *refChild,
2116        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::insertBefore(newChild, refChild, result); }
2117
2118    virtual HRESULT STDMETHODCALLTYPE replaceChild(
2119        /* [in] */ IDOMNode *newChild,
2120        /* [in] */ IDOMNode *oldChild,
2121        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::replaceChild(newChild, oldChild, result); }
2122
2123    virtual HRESULT STDMETHODCALLTYPE removeChild(
2124        /* [in] */ IDOMNode *oldChild,
2125        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::removeChild(oldChild, result); }
2126
2127    virtual HRESULT STDMETHODCALLTYPE appendChild(
2128        /* [in] */ IDOMNode *oldChild,
2129        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::appendChild(oldChild, result); }
2130
2131    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
2132        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasChildNodes(result); }
2133
2134    virtual HRESULT STDMETHODCALLTYPE cloneNode(
2135        /* [in] */ BOOL deep,
2136        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::cloneNode(deep, result); }
2137
2138    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMHTMLElement::normalize(); }
2139
2140    virtual HRESULT STDMETHODCALLTYPE isSupported(
2141        /* [in] */ BSTR feature,
2142        /* [in] */ BSTR version,
2143        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::isSupported(feature, version, result); }
2144
2145    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
2146        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::namespaceURI(result); }
2147
2148    virtual HRESULT STDMETHODCALLTYPE prefix(
2149        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::prefix(result); }
2150
2151    virtual HRESULT STDMETHODCALLTYPE setPrefix(
2152        /* [in] */ BSTR prefix) { return DOMHTMLElement::setPrefix(prefix); }
2153
2154    virtual HRESULT STDMETHODCALLTYPE localName(
2155        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::localName(result); }
2156
2157    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
2158        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributes(result); }
2159
2160    virtual HRESULT STDMETHODCALLTYPE isSameNode(
2161        /* [in] */ IDOMNode* other,
2162        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isSameNode(other, result); }
2163
2164    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
2165        /* [in] */ IDOMNode* other,
2166        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isEqualNode(other, result); }
2167
2168    virtual HRESULT STDMETHODCALLTYPE textContent(
2169        /* [retval][out] */ BSTR* result) { return DOMHTMLElement::textContent(result); }
2170
2171    virtual HRESULT STDMETHODCALLTYPE setTextContent(
2172        /* [in] */ BSTR text) { return DOMHTMLElement::setTextContent(text); }
2173
2174    // IDOMElement
2175    virtual HRESULT STDMETHODCALLTYPE tagName(
2176        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::tagName(result); }
2177
2178    virtual HRESULT STDMETHODCALLTYPE getAttribute(
2179        /* [in] */ BSTR name,
2180        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttribute(name, result); }
2181
2182    virtual HRESULT STDMETHODCALLTYPE setAttribute(
2183        /* [in] */ BSTR name,
2184        /* [in] */ BSTR value) { return DOMHTMLElement::setAttribute(name, value); }
2185
2186    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
2187        /* [in] */ BSTR name) { return DOMHTMLElement::removeAttribute(name); }
2188
2189    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
2190        /* [in] */ BSTR name,
2191        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNode(name, result); }
2192
2193    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
2194        /* [in] */ IDOMAttr *newAttr,
2195        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNode(newAttr, result); }
2196
2197    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
2198        /* [in] */ IDOMAttr *oldAttr,
2199        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::removeAttributeNode(oldAttr, result); }
2200
2201    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
2202        /* [in] */ BSTR name,
2203        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagName(name, result); }
2204
2205    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
2206        /* [in] */ BSTR namespaceURI,
2207        /* [in] */ BSTR localName,
2208        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttributeNS(namespaceURI, localName, result); }
2209
2210    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
2211        /* [in] */ BSTR namespaceURI,
2212        /* [in] */ BSTR qualifiedName,
2213        /* [in] */ BSTR value) { return DOMHTMLElement::setAttributeNS(namespaceURI, qualifiedName, value); }
2214
2215    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
2216        /* [in] */ BSTR namespaceURI,
2217        /* [in] */ BSTR localName) { return DOMHTMLElement::removeAttributeNS(namespaceURI, localName); }
2218
2219    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
2220        /* [in] */ BSTR namespaceURI,
2221        /* [in] */ BSTR localName,
2222        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNodeNS(namespaceURI, localName, result); }
2223
2224    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
2225        /* [in] */ IDOMAttr *newAttr,
2226        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNodeNS(newAttr, result); }
2227
2228    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
2229        /* [in] */ BSTR namespaceURI,
2230        /* [in] */ BSTR localName,
2231        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagNameNS(namespaceURI, localName, result); }
2232
2233    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
2234        /* [in] */ BSTR name,
2235        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttribute(name, result); }
2236
2237    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
2238        /* [in] */ BSTR namespaceURI,
2239        /* [in] */ BSTR localName,
2240        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributeNS(namespaceURI, localName, result); }
2241
2242    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMHTMLElement::focus(); }
2243
2244    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMHTMLElement::blur(); }
2245
2246    // IDOMHTMLElement
2247    virtual HRESULT STDMETHODCALLTYPE idName(
2248        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::idName(result); }
2249
2250    virtual HRESULT STDMETHODCALLTYPE setIdName(
2251        /* [in] */ BSTR idName) { return DOMHTMLElement::setIdName(idName); }
2252
2253    virtual HRESULT STDMETHODCALLTYPE title(
2254        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::title(result); }
2255
2256    virtual HRESULT STDMETHODCALLTYPE setTitle(
2257        /* [in] */ BSTR title) { return DOMHTMLElement::setTitle(title); }
2258
2259    virtual HRESULT STDMETHODCALLTYPE lang(
2260        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::lang(result); }
2261
2262    virtual HRESULT STDMETHODCALLTYPE setLang(
2263        /* [in] */ BSTR lang) { return DOMHTMLElement::setLang(lang); }
2264
2265    virtual HRESULT STDMETHODCALLTYPE dir(
2266        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::dir(result); }
2267
2268    virtual HRESULT STDMETHODCALLTYPE setDir(
2269        /* [in] */ BSTR dir) { return DOMHTMLElement::setDir(dir); }
2270
2271    virtual HRESULT STDMETHODCALLTYPE className(
2272        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::className(result); }
2273
2274    virtual HRESULT STDMETHODCALLTYPE setClassName(
2275        /* [in] */ BSTR className) { return DOMHTMLElement::setClassName(className); }
2276
2277    virtual HRESULT STDMETHODCALLTYPE innerHTML(
2278        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerHTML(result); }
2279
2280    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
2281        /* [in] */ BSTR html) { return DOMHTMLElement::setInnerHTML(html); }
2282
2283    virtual HRESULT STDMETHODCALLTYPE innerText(
2284        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerText(result); }
2285
2286    virtual HRESULT STDMETHODCALLTYPE setInnerText(
2287        /* [in] */ BSTR text) { return DOMHTMLElement::setInnerText(text); }
2288
2289    // IDOMHTMLTextArea
2290    virtual HRESULT STDMETHODCALLTYPE defaultValue(
2291        /* [retval][out] */ BSTR *result);
2292
2293    virtual HRESULT STDMETHODCALLTYPE setDefaultValue(
2294        /* [in] */ BSTR val);
2295
2296    virtual HRESULT STDMETHODCALLTYPE form(
2297        /* [retval][out] */ IDOMHTMLElement **result);
2298
2299    virtual HRESULT STDMETHODCALLTYPE accessKey(
2300        /* [retval][out] */ BSTR *result);
2301
2302    virtual HRESULT STDMETHODCALLTYPE setAccessKey(
2303        /* [in] */ BSTR key);
2304
2305    virtual HRESULT STDMETHODCALLTYPE cols(
2306        /* [retval][out] */ int *result);
2307
2308    virtual HRESULT STDMETHODCALLTYPE setCols(
2309        /* [in] */ int cols);
2310
2311    virtual HRESULT STDMETHODCALLTYPE disabled(
2312        /* [retval][out] */ BOOL *result);
2313
2314    virtual HRESULT STDMETHODCALLTYPE setDisabled(
2315        /* [in] */ BOOL disabled);
2316
2317    virtual HRESULT STDMETHODCALLTYPE name(
2318        /* [retval][out] */ BSTR *name);
2319
2320    virtual HRESULT STDMETHODCALLTYPE setName(
2321        /* [in] */ BSTR name);
2322
2323    virtual HRESULT STDMETHODCALLTYPE readOnly(
2324        /* [retval][out] */ BOOL *result);
2325
2326    virtual HRESULT STDMETHODCALLTYPE setReadOnly(
2327        /* [in] */ BOOL readOnly);
2328
2329    virtual HRESULT STDMETHODCALLTYPE rows(
2330        /* [retval][out] */ int *result);
2331
2332    virtual HRESULT STDMETHODCALLTYPE setRows(
2333        /* [in] */ int rows);
2334
2335    virtual HRESULT STDMETHODCALLTYPE tabIndex(
2336        /* [retval][out] */ int *result);
2337
2338    virtual HRESULT STDMETHODCALLTYPE setTabIndex(
2339        /* [in] */ int tabIndex);
2340
2341    virtual HRESULT STDMETHODCALLTYPE type(
2342        /* [retval][out] */ BSTR *result);
2343
2344    virtual HRESULT STDMETHODCALLTYPE value(
2345        /* [retval][out] */ BSTR *result);
2346
2347    virtual HRESULT STDMETHODCALLTYPE setValue(
2348        /* [in] */ BSTR value);
2349
2350    virtual HRESULT STDMETHODCALLTYPE select( void);
2351
2352    // IFormPromptAdditions
2353    virtual HRESULT STDMETHODCALLTYPE isUserEdited(
2354        /* [retval][out] */ BOOL *result);
2355};
2356
2357class DOMHTMLIFrameElement : public DOMHTMLElement, public IDOMHTMLIFrameElement
2358{
2359protected:
2360    DOMHTMLIFrameElement();
2361public:
2362    DOMHTMLIFrameElement(WebCore::Element* e) : DOMHTMLElement(e) {}
2363
2364    // IUnknown
2365    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
2366    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMHTMLElement::AddRef(); }
2367    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMHTMLElement::Release(); }
2368
2369    // IWebScriptObject
2370    virtual HRESULT STDMETHODCALLTYPE throwException(
2371        /* [in] */ BSTR exceptionMessage,
2372        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::throwException(exceptionMessage, result); }
2373
2374    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
2375        /* [in] */ BSTR name,
2376        /* [size_is][in] */ const VARIANT args[  ],
2377        /* [in] */ int cArgs,
2378        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::callWebScriptMethod(name, args, cArgs, result); }
2379
2380    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
2381        /* [in] */ BSTR script,
2382        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::evaluateWebScript(script, result); }
2383
2384    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
2385        /* [in] */ BSTR name) { return DOMHTMLElement::removeWebScriptKey(name); }
2386
2387    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
2388        /* [retval][out] */ BSTR* stringRepresentation) { return DOMHTMLElement::stringRepresentation(stringRepresentation); }
2389
2390    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
2391        /* [in] */ unsigned int index,
2392        /* [retval][out] */ VARIANT *result) { return DOMHTMLElement::webScriptValueAtIndex(index, result); }
2393
2394    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
2395        /* [in] */ unsigned int index,
2396        /* [in] */ VARIANT val) { return DOMHTMLElement::setWebScriptValueAtIndex(index, val); }
2397
2398    virtual HRESULT STDMETHODCALLTYPE setException(
2399        /* [in] */ BSTR description) { return DOMHTMLElement::setException(description); }
2400
2401    // IDOMNode
2402    virtual HRESULT STDMETHODCALLTYPE nodeName(
2403        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeName(result); }
2404
2405    virtual HRESULT STDMETHODCALLTYPE nodeValue(
2406        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::nodeValue(result); }
2407
2408    virtual HRESULT STDMETHODCALLTYPE setNodeValue(
2409        /* [in] */ BSTR value) { return DOMHTMLElement::setNodeValue(value); }
2410
2411    virtual HRESULT STDMETHODCALLTYPE nodeType(
2412        /* [retval][out] */ unsigned short *result) { return DOMHTMLElement::nodeType(result); }
2413
2414    virtual HRESULT STDMETHODCALLTYPE parentNode(
2415        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::parentNode(result); }
2416
2417    virtual HRESULT STDMETHODCALLTYPE childNodes(
2418        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::childNodes(result); }
2419
2420    virtual HRESULT STDMETHODCALLTYPE firstChild(
2421        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::firstChild(result); }
2422
2423    virtual HRESULT STDMETHODCALLTYPE lastChild(
2424        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::lastChild(result); }
2425
2426    virtual HRESULT STDMETHODCALLTYPE previousSibling(
2427        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::previousSibling(result); }
2428
2429    virtual HRESULT STDMETHODCALLTYPE nextSibling(
2430        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::nextSibling(result); }
2431
2432    virtual HRESULT STDMETHODCALLTYPE attributes(
2433        /* [retval][out] */ IDOMNamedNodeMap **result) { return DOMHTMLElement::attributes(result); }
2434
2435    virtual HRESULT STDMETHODCALLTYPE ownerDocument(
2436        /* [retval][out] */ IDOMDocument **result) { return DOMHTMLElement::ownerDocument(result); }
2437
2438    virtual HRESULT STDMETHODCALLTYPE insertBefore(
2439        /* [in] */ IDOMNode *newChild,
2440        /* [in] */ IDOMNode *refChild,
2441        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::insertBefore(newChild, refChild, result); }
2442
2443    virtual HRESULT STDMETHODCALLTYPE replaceChild(
2444        /* [in] */ IDOMNode *newChild,
2445        /* [in] */ IDOMNode *oldChild,
2446        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::replaceChild(newChild, oldChild, result); }
2447
2448    virtual HRESULT STDMETHODCALLTYPE removeChild(
2449        /* [in] */ IDOMNode *oldChild,
2450        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::removeChild(oldChild, result); }
2451
2452    virtual HRESULT STDMETHODCALLTYPE appendChild(
2453        /* [in] */ IDOMNode *oldChild,
2454        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::appendChild(oldChild, result); }
2455
2456    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
2457        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasChildNodes(result); }
2458
2459    virtual HRESULT STDMETHODCALLTYPE cloneNode(
2460        /* [in] */ BOOL deep,
2461        /* [retval][out] */ IDOMNode **result) { return DOMHTMLElement::cloneNode(deep, result); }
2462
2463    virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMHTMLElement::normalize(); }
2464
2465    virtual HRESULT STDMETHODCALLTYPE isSupported(
2466        /* [in] */ BSTR feature,
2467        /* [in] */ BSTR version,
2468        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::isSupported(feature, version, result); }
2469
2470    virtual HRESULT STDMETHODCALLTYPE namespaceURI(
2471        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::namespaceURI(result); }
2472
2473    virtual HRESULT STDMETHODCALLTYPE prefix(
2474        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::prefix(result); }
2475
2476    virtual HRESULT STDMETHODCALLTYPE setPrefix(
2477        /* [in] */ BSTR prefix) { return DOMHTMLElement::setPrefix(prefix); }
2478
2479    virtual HRESULT STDMETHODCALLTYPE localName(
2480        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::localName(result); }
2481
2482    virtual HRESULT STDMETHODCALLTYPE hasAttributes(
2483        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributes(result); }
2484
2485    virtual HRESULT STDMETHODCALLTYPE isSameNode(
2486        /* [in] */ IDOMNode* other,
2487        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isSameNode(other, result); }
2488
2489    virtual HRESULT STDMETHODCALLTYPE isEqualNode(
2490        /* [in] */ IDOMNode* other,
2491        /* [retval][out] */ BOOL* result) { return DOMHTMLElement::isEqualNode(other, result); }
2492
2493    virtual HRESULT STDMETHODCALLTYPE textContent(
2494        /* [retval][out] */ BSTR* result) { return DOMHTMLElement::textContent(result); }
2495
2496    virtual HRESULT STDMETHODCALLTYPE setTextContent(
2497        /* [in] */ BSTR text) { return DOMHTMLElement::setTextContent(text); }
2498
2499    // IDOMElement
2500    virtual HRESULT STDMETHODCALLTYPE tagName(
2501        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::tagName(result); }
2502
2503    virtual HRESULT STDMETHODCALLTYPE getAttribute(
2504        /* [in] */ BSTR name,
2505        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttribute(name, result); }
2506
2507    virtual HRESULT STDMETHODCALLTYPE setAttribute(
2508        /* [in] */ BSTR name,
2509        /* [in] */ BSTR value) { return DOMHTMLElement::setAttribute(name, value); }
2510
2511    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
2512        /* [in] */ BSTR name) { return DOMHTMLElement::removeAttribute(name); }
2513
2514    virtual HRESULT STDMETHODCALLTYPE getAttributeNode(
2515        /* [in] */ BSTR name,
2516        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNode(name, result); }
2517
2518    virtual HRESULT STDMETHODCALLTYPE setAttributeNode(
2519        /* [in] */ IDOMAttr *newAttr,
2520        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNode(newAttr, result); }
2521
2522    virtual HRESULT STDMETHODCALLTYPE removeAttributeNode(
2523        /* [in] */ IDOMAttr *oldAttr,
2524        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::removeAttributeNode(oldAttr, result); }
2525
2526    virtual HRESULT STDMETHODCALLTYPE getElementsByTagName(
2527        /* [in] */ BSTR name,
2528        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagName(name, result); }
2529
2530    virtual HRESULT STDMETHODCALLTYPE getAttributeNS(
2531        /* [in] */ BSTR namespaceURI,
2532        /* [in] */ BSTR localName,
2533        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::getAttributeNS(namespaceURI, localName, result); }
2534
2535    virtual HRESULT STDMETHODCALLTYPE setAttributeNS(
2536        /* [in] */ BSTR namespaceURI,
2537        /* [in] */ BSTR qualifiedName,
2538        /* [in] */ BSTR value) { return DOMHTMLElement::setAttributeNS(namespaceURI, qualifiedName, value); }
2539
2540    virtual HRESULT STDMETHODCALLTYPE removeAttributeNS(
2541        /* [in] */ BSTR namespaceURI,
2542        /* [in] */ BSTR localName) { return DOMHTMLElement::removeAttributeNS(namespaceURI, localName); }
2543
2544    virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS(
2545        /* [in] */ BSTR namespaceURI,
2546        /* [in] */ BSTR localName,
2547        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::getAttributeNodeNS(namespaceURI, localName, result); }
2548
2549    virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS(
2550        /* [in] */ IDOMAttr *newAttr,
2551        /* [retval][out] */ IDOMAttr **result) { return DOMHTMLElement::setAttributeNodeNS(newAttr, result); }
2552
2553    virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS(
2554        /* [in] */ BSTR namespaceURI,
2555        /* [in] */ BSTR localName,
2556        /* [retval][out] */ IDOMNodeList **result) { return DOMHTMLElement::getElementsByTagNameNS(namespaceURI, localName, result); }
2557
2558    virtual HRESULT STDMETHODCALLTYPE hasAttribute(
2559        /* [in] */ BSTR name,
2560        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttribute(name, result); }
2561
2562    virtual HRESULT STDMETHODCALLTYPE hasAttributeNS(
2563        /* [in] */ BSTR namespaceURI,
2564        /* [in] */ BSTR localName,
2565        /* [retval][out] */ BOOL *result) { return DOMHTMLElement::hasAttributeNS(namespaceURI, localName, result); }
2566
2567    virtual HRESULT STDMETHODCALLTYPE focus( void) { return DOMHTMLElement::focus(); }
2568
2569    virtual HRESULT STDMETHODCALLTYPE blur( void) { return DOMHTMLElement::blur(); }
2570
2571    // IDOMHTMLElement
2572    virtual HRESULT STDMETHODCALLTYPE idName(
2573        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::idName(result); }
2574
2575    virtual HRESULT STDMETHODCALLTYPE setIdName(
2576        /* [in] */ BSTR idName) { return DOMHTMLElement::setIdName(idName); }
2577
2578    virtual HRESULT STDMETHODCALLTYPE title(
2579        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::title(result); }
2580
2581    virtual HRESULT STDMETHODCALLTYPE setTitle(
2582        /* [in] */ BSTR title) { return DOMHTMLElement::setTitle(title); }
2583
2584    virtual HRESULT STDMETHODCALLTYPE lang(
2585        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::lang(result); }
2586
2587    virtual HRESULT STDMETHODCALLTYPE setLang(
2588        /* [in] */ BSTR lang) { return DOMHTMLElement::setLang(lang); }
2589
2590    virtual HRESULT STDMETHODCALLTYPE dir(
2591        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::dir(result); }
2592
2593    virtual HRESULT STDMETHODCALLTYPE setDir(
2594        /* [in] */ BSTR dir) { return DOMHTMLElement::setDir(dir); }
2595
2596    virtual HRESULT STDMETHODCALLTYPE className(
2597        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::className(result); }
2598
2599    virtual HRESULT STDMETHODCALLTYPE setClassName(
2600        /* [in] */ BSTR className) { return DOMHTMLElement::setClassName(className); }
2601
2602    virtual HRESULT STDMETHODCALLTYPE innerHTML(
2603        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerHTML(result); }
2604
2605    virtual HRESULT STDMETHODCALLTYPE setInnerHTML(
2606        /* [in] */ BSTR html) { return DOMHTMLElement::setInnerHTML(html); }
2607
2608    virtual HRESULT STDMETHODCALLTYPE innerText(
2609        /* [retval][out] */ BSTR *result) { return DOMHTMLElement::innerText(result); }
2610
2611    virtual HRESULT STDMETHODCALLTYPE setInnerText(
2612        /* [in] */ BSTR text) { return DOMHTMLElement::setInnerText(text); }
2613
2614    // IDOMHTMLIFrameElement
2615    virtual HRESULT STDMETHODCALLTYPE contentFrame(
2616        /* [retval][out] */ IWebFrame **result);
2617};
2618
2619#endif
2620