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