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