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