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