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 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 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 { 33class Element; 34class Document; 35class DOMWindow; 36class Node; 37class NodeList; 38} 39 40 41class DOMObject : public WebScriptObject, public IDOMObject { 42public: 43 // IUnknown 44 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 45 virtual ULONG STDMETHODCALLTYPE AddRef(void) { return WebScriptObject::AddRef(); } 46 virtual ULONG STDMETHODCALLTYPE Release(void) { return WebScriptObject::Release(); } 47 48 // IWebScriptObject 49 virtual HRESULT STDMETHODCALLTYPE throwException( 50 /* [in] */ BSTR exceptionMessage, 51 /* [retval][out] */ BOOL* result) { return WebScriptObject::throwException(exceptionMessage, result); } 52 53 virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod( 54 /* [in] */ BSTR name, 55 /* [size_is][in] */ const VARIANT args[ ], 56 /* [in] */ int cArgs, 57 /* [retval][out] */ VARIANT* result) { return WebScriptObject::callWebScriptMethod(name, args, cArgs, result); } 58 59 virtual HRESULT STDMETHODCALLTYPE evaluateWebScript( 60 /* [in] */ BSTR script, 61 /* [retval][out] */ VARIANT* result) { return WebScriptObject::evaluateWebScript(script, result); } 62 63 virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey( 64 /* [in] */ BSTR name) { return WebScriptObject::removeWebScriptKey(name); } 65 66 virtual HRESULT STDMETHODCALLTYPE stringRepresentation( 67 /* [retval][out] */ BSTR* stringRepresentation) { return WebScriptObject::stringRepresentation(stringRepresentation); } 68 69 virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex( 70 /* [in] */ unsigned int index, 71 /* [retval][out] */ VARIANT* result) { return WebScriptObject::webScriptValueAtIndex(index, result); } 72 73 virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex( 74 /* [in] */ unsigned int index, 75 /* [in] */ VARIANT val) { return WebScriptObject::setWebScriptValueAtIndex(index, val); } 76 77 virtual HRESULT STDMETHODCALLTYPE setException( 78 /* [in] */ BSTR description) { return WebScriptObject::setException(description); } 79}; 80 81class DECLSPEC_UUID("062AEEE3-9E42-44DC-A8A9-236B216FE011") DOMNode : public DOMObject, public IDOMNode, public IDOMEventTarget { 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 { 248protected: 249 DOMNodeList(WebCore::NodeList* l); 250 ~DOMNodeList(); 251 252public: 253 static IDOMNodeList* createInstance(WebCore::NodeList* l); 254 255public: 256 // IUnknown 257 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 258 virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); } 259 virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); } 260 261 // IWebScriptObject 262 virtual HRESULT STDMETHODCALLTYPE throwException( 263 /* [in] */ BSTR exceptionMessage, 264 /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); } 265 266 virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod( 267 /* [in] */ BSTR name, 268 /* [size_is][in] */ const VARIANT args[ ], 269 /* [in] */ int cArgs, 270 /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); } 271 272 virtual HRESULT STDMETHODCALLTYPE evaluateWebScript( 273 /* [in] */ BSTR script, 274 /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); } 275 276 virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey( 277 /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); } 278 279 virtual HRESULT STDMETHODCALLTYPE stringRepresentation( 280 /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); } 281 282 virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex( 283 /* [in] */ unsigned int index, 284 /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); } 285 286 virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex( 287 /* [in] */ unsigned int index, 288 /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); } 289 290 virtual HRESULT STDMETHODCALLTYPE setException( 291 /* [in] */ BSTR description) { return DOMObject::setException(description); } 292 293 // IDOMNodeList 294 virtual HRESULT STDMETHODCALLTYPE item( 295 /* [in] */ UINT index, 296 /* [retval][out] */ IDOMNode** result); 297 298 virtual HRESULT STDMETHODCALLTYPE length( 299 /* [retval][out] */ UINT* result); 300 301protected: 302 WebCore::NodeList* m_nodeList; 303}; 304 305class DOMDocument : public DOMNode, public IDOMDocument, public IDOMViewCSS, public IDOMDocumentEvent { 306protected: 307 DOMDocument(WebCore::Document* d); 308 ~DOMDocument(); 309 310public: 311 static IDOMDocument* createInstance(WebCore::Document* d); 312 313public: 314 // IUnknown 315 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 316 virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMNode::AddRef(); } 317 virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMNode::Release(); } 318 319 // IWebScriptObject 320 virtual HRESULT STDMETHODCALLTYPE throwException( 321 /* [in] */ BSTR exceptionMessage, 322 /* [retval][out] */ BOOL* result) { return DOMNode::throwException(exceptionMessage, result); } 323 324 virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod( 325 /* [in] */ BSTR name, 326 /* [size_is][in] */ const VARIANT args[ ], 327 /* [in] */ int cArgs, 328 /* [retval][out] */ VARIANT* result) { return DOMNode::callWebScriptMethod(name, args, cArgs, result); } 329 330 virtual HRESULT STDMETHODCALLTYPE evaluateWebScript( 331 /* [in] */ BSTR script, 332 /* [retval][out] */ VARIANT* result) { return DOMNode::evaluateWebScript(script, result); } 333 334 virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey( 335 /* [in] */ BSTR name) { return DOMNode::removeWebScriptKey(name); } 336 337 virtual HRESULT STDMETHODCALLTYPE stringRepresentation( 338 /* [retval][out] */ BSTR* stringRepresentation) { return DOMNode::stringRepresentation(stringRepresentation); } 339 340 virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex( 341 /* [in] */ unsigned int index, 342 /* [retval][out] */ VARIANT* result) { return DOMNode::webScriptValueAtIndex(index, result); } 343 344 virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex( 345 /* [in] */ unsigned int index, 346 /* [in] */ VARIANT val) { return DOMNode::setWebScriptValueAtIndex(index, val); } 347 348 virtual HRESULT STDMETHODCALLTYPE setException( 349 /* [in] */ BSTR description) { return DOMNode::setException(description); } 350 351 // IDOMNode 352 virtual HRESULT STDMETHODCALLTYPE nodeName( 353 /* [retval][out] */ BSTR* result) { return DOMNode::nodeName(result); } 354 355 virtual HRESULT STDMETHODCALLTYPE nodeValue( 356 /* [retval][out] */ BSTR* result) { return DOMNode::nodeValue(result); } 357 358 virtual HRESULT STDMETHODCALLTYPE setNodeValue( 359 /* [in] */ BSTR value) { return DOMNode::setNodeValue(value); } 360 361 virtual HRESULT STDMETHODCALLTYPE nodeType( 362 /* [retval][out] */ unsigned short* result) { return DOMNode::nodeType(result); } 363 364 virtual HRESULT STDMETHODCALLTYPE parentNode( 365 /* [retval][out] */ IDOMNode** result) { return DOMNode::parentNode(result); } 366 367 virtual HRESULT STDMETHODCALLTYPE childNodes( 368 /* [retval][out] */ IDOMNodeList** result) { return DOMNode::childNodes(result); } 369 370 virtual HRESULT STDMETHODCALLTYPE firstChild( 371 /* [retval][out] */ IDOMNode** result) { return DOMNode::firstChild(result); } 372 373 virtual HRESULT STDMETHODCALLTYPE lastChild( 374 /* [retval][out] */ IDOMNode** result) { return DOMNode::lastChild(result); } 375 376 virtual HRESULT STDMETHODCALLTYPE previousSibling( 377 /* [retval][out] */ IDOMNode** result) { return DOMNode::previousSibling(result); } 378 379 virtual HRESULT STDMETHODCALLTYPE nextSibling( 380 /* [retval][out] */ IDOMNode** result) { return DOMNode::nextSibling(result); } 381 382 virtual HRESULT STDMETHODCALLTYPE attributes( 383 /* [retval][out] */ IDOMNamedNodeMap** result) { return DOMNode::attributes(result); } 384 385 virtual HRESULT STDMETHODCALLTYPE ownerDocument( 386 /* [retval][out] */ IDOMDocument** result) { return DOMNode::ownerDocument(result); } 387 388 virtual HRESULT STDMETHODCALLTYPE insertBefore( 389 /* [in] */ IDOMNode* newChild, 390 /* [in] */ IDOMNode* refChild, 391 /* [retval][out] */ IDOMNode** result) { return DOMNode::insertBefore(newChild, refChild, result); } 392 393 virtual HRESULT STDMETHODCALLTYPE replaceChild( 394 /* [in] */ IDOMNode* newChild, 395 /* [in] */ IDOMNode* oldChild, 396 /* [retval][out] */ IDOMNode** result) { return DOMNode::replaceChild(newChild, oldChild, result); } 397 398 virtual HRESULT STDMETHODCALLTYPE removeChild( 399 /* [in] */ IDOMNode* oldChild, 400 /* [retval][out] */ IDOMNode** result) { return DOMNode::removeChild(oldChild, result); } 401 402 virtual HRESULT STDMETHODCALLTYPE appendChild( 403 /* [in] */ IDOMNode* oldChild, 404 /* [retval][out] */ IDOMNode** result) { return DOMNode::appendChild(oldChild, result); } 405 406 virtual HRESULT STDMETHODCALLTYPE hasChildNodes( 407 /* [retval][out] */ BOOL* result) { return DOMNode::hasChildNodes(result); } 408 409 virtual HRESULT STDMETHODCALLTYPE cloneNode( 410 /* [in] */ BOOL deep, 411 /* [retval][out] */ IDOMNode** result) { return DOMNode::cloneNode(deep, result); } 412 413 virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMNode::normalize(); } 414 415 virtual HRESULT STDMETHODCALLTYPE isSupported( 416 /* [in] */ BSTR feature, 417 /* [in] */ BSTR version, 418 /* [retval][out] */ BOOL* result) { return DOMNode::isSupported(feature, version, result); } 419 420 virtual HRESULT STDMETHODCALLTYPE namespaceURI( 421 /* [retval][out] */ BSTR* result) { return DOMNode::namespaceURI(result); } 422 423 virtual HRESULT STDMETHODCALLTYPE prefix( 424 /* [retval][out] */ BSTR* result) { return DOMNode::prefix(result); } 425 426 virtual HRESULT STDMETHODCALLTYPE setPrefix( 427 /* [in] */ BSTR prefix) { return DOMNode::setPrefix(prefix); } 428 429 virtual HRESULT STDMETHODCALLTYPE localName( 430 /* [retval][out] */ BSTR* result) { return DOMNode::localName(result); } 431 432 virtual HRESULT STDMETHODCALLTYPE hasAttributes( 433 /* [retval][out] */ BOOL* result) { return DOMNode::hasAttributes(result); } 434 435 virtual HRESULT STDMETHODCALLTYPE isSameNode( 436 /* [in] */ IDOMNode* other, 437 /* [retval][out] */ BOOL* result) { return DOMNode::isSameNode(other, result); } 438 439 virtual HRESULT STDMETHODCALLTYPE isEqualNode( 440 /* [in] */ IDOMNode* other, 441 /* [retval][out] */ BOOL* result) { return DOMNode::isEqualNode(other, result); } 442 443 virtual HRESULT STDMETHODCALLTYPE textContent( 444 /* [retval][out] */ BSTR* result) { return DOMNode::textContent(result); } 445 446 virtual HRESULT STDMETHODCALLTYPE setTextContent( 447 /* [in] */ BSTR text) { return DOMNode::setTextContent(text); } 448 449 // IDOMDocument 450 virtual HRESULT STDMETHODCALLTYPE doctype( 451 /* [retval][out] */ IDOMDocumentType** result); 452 453 virtual HRESULT STDMETHODCALLTYPE implementation( 454 /* [retval][out] */ IDOMImplementation** result); 455 456 virtual HRESULT STDMETHODCALLTYPE documentElement( 457 /* [retval][out] */ IDOMElement** result); 458 459 virtual HRESULT STDMETHODCALLTYPE createElement( 460 /* [in] */ BSTR tagName, 461 /* [retval][out] */ IDOMElement** result); 462 463 virtual HRESULT STDMETHODCALLTYPE createDocumentFragment( 464 /* [retval][out] */ IDOMDocumentFragment** result); 465 466 virtual HRESULT STDMETHODCALLTYPE createTextNode( 467 /* [in] */ BSTR data, 468 /* [retval][out] */ IDOMText** result); 469 470 virtual HRESULT STDMETHODCALLTYPE createComment( 471 /* [in] */ BSTR data, 472 /* [retval][out] */ IDOMComment** result); 473 474 virtual HRESULT STDMETHODCALLTYPE createCDATASection( 475 /* [in] */ BSTR data, 476 /* [retval][out] */ IDOMCDATASection** result); 477 478 virtual HRESULT STDMETHODCALLTYPE createProcessingInstruction( 479 /* [in] */ BSTR target, 480 /* [in] */ BSTR data, 481 /* [retval][out] */ IDOMProcessingInstruction** result); 482 483 virtual HRESULT STDMETHODCALLTYPE createAttribute( 484 /* [in] */ BSTR name, 485 /* [retval][out] */ IDOMAttr** result); 486 487 virtual HRESULT STDMETHODCALLTYPE createEntityReference( 488 /* [in] */ BSTR name, 489 /* [retval][out] */ IDOMEntityReference** result); 490 491 virtual HRESULT STDMETHODCALLTYPE getElementsByTagName( 492 /* [in] */ BSTR tagName, 493 /* [retval][out] */ IDOMNodeList** result); 494 495 virtual HRESULT STDMETHODCALLTYPE importNode( 496 /* [in] */ IDOMNode* importedNode, 497 /* [in] */ BOOL deep, 498 /* [retval][out] */ IDOMNode** result); 499 500 virtual HRESULT STDMETHODCALLTYPE createElementNS( 501 /* [in] */ BSTR namespaceURI, 502 /* [in] */ BSTR qualifiedName, 503 /* [retval][out] */ IDOMElement** result); 504 505 virtual HRESULT STDMETHODCALLTYPE createAttributeNS( 506 /* [in] */ BSTR namespaceURI, 507 /* [in] */ BSTR qualifiedName, 508 /* [retval][out] */ IDOMAttr** result); 509 510 virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS( 511 /* [in] */ BSTR namespaceURI, 512 /* [in] */ BSTR localName, 513 /* [retval][out] */ IDOMNodeList** result); 514 515 virtual HRESULT STDMETHODCALLTYPE getElementById( 516 /* [in] */ BSTR elementId, 517 /* [retval][out] */ IDOMElement** result); 518 519 // IDOMViewCSS 520 virtual HRESULT STDMETHODCALLTYPE getComputedStyle( 521 /* [in] */ IDOMElement* elt, 522 /* [in] */ BSTR pseudoElt, 523 /* [retval][out] */ IDOMCSSStyleDeclaration** result); 524 525 // IDOMDocumentEvent 526 virtual HRESULT STDMETHODCALLTYPE createEvent( 527 /* [in] */ BSTR eventType, 528 /* [retval][out] */ IDOMEvent** result); 529 530 // DOMDocument 531 WebCore::Document* document() { return m_document; } 532 533protected: 534 WebCore::Document* m_document; 535}; 536 537class DOMWindow : public DOMObject, public IDOMWindow, public IDOMEventTarget { 538protected: 539 DOMWindow(WebCore::DOMWindow*); 540 ~DOMWindow(); 541 542public: 543 static IDOMWindow* createInstance(WebCore::DOMWindow*); 544 545public: 546 // IUnknown 547 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 548 virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); } 549 virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); } 550 551 // IWebScriptObject 552 virtual HRESULT STDMETHODCALLTYPE throwException( 553 /* [in] */ BSTR exceptionMessage, 554 /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); } 555 556 virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod( 557 /* [in] */ BSTR name, 558 /* [size_is][in] */ const VARIANT args[ ], 559 /* [in] */ int cArgs, 560 /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); } 561 562 virtual HRESULT STDMETHODCALLTYPE evaluateWebScript( 563 /* [in] */ BSTR script, 564 /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); } 565 566 virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey( 567 /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); } 568 569 virtual HRESULT STDMETHODCALLTYPE stringRepresentation( 570 /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); } 571 572 virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex( 573 /* [in] */ unsigned int index, 574 /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); } 575 576 virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex( 577 /* [in] */ unsigned int index, 578 /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); } 579 580 virtual HRESULT STDMETHODCALLTYPE setException( 581 /* [in] */ BSTR description) { return DOMObject::setException(description); } 582 583 virtual HRESULT STDMETHODCALLTYPE document( 584 /* [out, retval] */ IDOMDocument**); 585 586 virtual HRESULT STDMETHODCALLTYPE getComputedStyle( 587 /* [in] */ IDOMElement*, 588 /* [in] */ BSTR); 589 590 virtual HRESULT STDMETHODCALLTYPE getMatchedCSSRules( 591 /* [in] */ IDOMElement*, 592 /* [in] */ BSTR, 593 /* [in] */ BOOL, 594 /* [out, retval] */ IDOMCSSRuleList**); 595 596 virtual HRESULT STDMETHODCALLTYPE devicePixelRatio( 597 /* [out, retval] */ double*); 598 599 virtual HRESULT STDMETHODCALLTYPE addEventListener( 600 /* [in] */ BSTR, 601 /* [in] */ IDOMEventListener *, 602 /* [in] */ BOOL); 603 604 virtual HRESULT STDMETHODCALLTYPE removeEventListener( 605 /* [in] */ BSTR, 606 /* [in] */ IDOMEventListener *, 607 /* [in] */ BOOL); 608 609 virtual HRESULT STDMETHODCALLTYPE dispatchEvent( 610 /* [in] */ IDOMEvent *, 611 /* [retval][out] */ BOOL *); 612 613 // DOMWindow 614 WebCore::DOMWindow* window() { return m_window; } 615 616protected: 617 WebCore::DOMWindow* m_window; 618}; 619 620 621 622class DOMElement : public DOMNode, public IDOMElement, public IDOMElementPrivate, public IDOMNodeExtensions, public IDOMElementCSSInlineStyle, public IDOMElementExtensions { 623protected: 624 DOMElement(WebCore::Element* e); 625 ~DOMElement(); 626 627public: 628 static IDOMElement* createInstance(WebCore::Element* e); 629 630 // IUnknown 631 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 632 virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMNode::AddRef(); } 633 virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMNode::Release(); } 634 635 // IWebScriptObject 636 virtual HRESULT STDMETHODCALLTYPE throwException( 637 /* [in] */ BSTR exceptionMessage, 638 /* [retval][out] */ BOOL* result) { return DOMNode::throwException(exceptionMessage, result); } 639 640 virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod( 641 /* [in] */ BSTR name, 642 /* [size_is][in] */ const VARIANT args[ ], 643 /* [in] */ int cArgs, 644 /* [retval][out] */ VARIANT* result) { return DOMNode::callWebScriptMethod(name, args, cArgs, result); } 645 646 virtual HRESULT STDMETHODCALLTYPE evaluateWebScript( 647 /* [in] */ BSTR script, 648 /* [retval][out] */ VARIANT* result) { return DOMNode::evaluateWebScript(script, result); } 649 650 virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey( 651 /* [in] */ BSTR name) { return DOMNode::removeWebScriptKey(name); } 652 653 virtual HRESULT STDMETHODCALLTYPE stringRepresentation( 654 /* [retval][out] */ BSTR* stringRepresentation) { return DOMNode::stringRepresentation(stringRepresentation); } 655 656 virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex( 657 /* [in] */ unsigned int index, 658 /* [retval][out] */ VARIANT* result) { return DOMNode::webScriptValueAtIndex(index, result); } 659 660 virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex( 661 /* [in] */ unsigned int index, 662 /* [in] */ VARIANT val) { return DOMNode::setWebScriptValueAtIndex(index, val); } 663 664 virtual HRESULT STDMETHODCALLTYPE setException( 665 /* [in] */ BSTR description) { return DOMNode::setException(description); } 666 667 // IDOMNode 668 virtual HRESULT STDMETHODCALLTYPE nodeName( 669 /* [retval][out] */ BSTR* result) { return DOMNode::nodeName(result); } 670 671 virtual HRESULT STDMETHODCALLTYPE nodeValue( 672 /* [retval][out] */ BSTR* result) { return DOMNode::nodeValue(result); } 673 674 virtual HRESULT STDMETHODCALLTYPE setNodeValue( 675 /* [in] */ BSTR value) { return DOMNode::setNodeValue(value); } 676 677 virtual HRESULT STDMETHODCALLTYPE nodeType( 678 /* [retval][out] */ unsigned short* result) { return DOMNode::nodeType(result); } 679 680 virtual HRESULT STDMETHODCALLTYPE parentNode( 681 /* [retval][out] */ IDOMNode** result) { return DOMNode::parentNode(result); } 682 683 virtual HRESULT STDMETHODCALLTYPE childNodes( 684 /* [retval][out] */ IDOMNodeList** result) { return DOMNode::childNodes(result); } 685 686 virtual HRESULT STDMETHODCALLTYPE firstChild( 687 /* [retval][out] */ IDOMNode** result) { return DOMNode::firstChild(result); } 688 689 virtual HRESULT STDMETHODCALLTYPE lastChild( 690 /* [retval][out] */ IDOMNode** result) { return DOMNode::lastChild(result); } 691 692 virtual HRESULT STDMETHODCALLTYPE previousSibling( 693 /* [retval][out] */ IDOMNode** result) { return DOMNode::previousSibling(result); } 694 695 virtual HRESULT STDMETHODCALLTYPE nextSibling( 696 /* [retval][out] */ IDOMNode** result) { return DOMNode::nextSibling(result); } 697 698 virtual HRESULT STDMETHODCALLTYPE attributes( 699 /* [retval][out] */ IDOMNamedNodeMap** result) { return DOMNode::attributes(result); } 700 701 virtual HRESULT STDMETHODCALLTYPE ownerDocument( 702 /* [retval][out] */ IDOMDocument** result) { return DOMNode::ownerDocument(result); } 703 704 virtual HRESULT STDMETHODCALLTYPE insertBefore( 705 /* [in] */ IDOMNode* newChild, 706 /* [in] */ IDOMNode* refChild, 707 /* [retval][out] */ IDOMNode** result) { return DOMNode::insertBefore(newChild, refChild, result); } 708 709 virtual HRESULT STDMETHODCALLTYPE replaceChild( 710 /* [in] */ IDOMNode* newChild, 711 /* [in] */ IDOMNode* oldChild, 712 /* [retval][out] */ IDOMNode** result) { return DOMNode::replaceChild(newChild, oldChild, result); } 713 714 virtual HRESULT STDMETHODCALLTYPE removeChild( 715 /* [in] */ IDOMNode* oldChild, 716 /* [retval][out] */ IDOMNode** result) { return DOMNode::removeChild(oldChild, result); } 717 718 virtual HRESULT STDMETHODCALLTYPE appendChild( 719 /* [in] */ IDOMNode* oldChild, 720 /* [retval][out] */ IDOMNode** result) { return DOMNode::appendChild(oldChild, result); } 721 722 virtual HRESULT STDMETHODCALLTYPE hasChildNodes( 723 /* [retval][out] */ BOOL* result) { return DOMNode::hasChildNodes(result); } 724 725 virtual HRESULT STDMETHODCALLTYPE cloneNode( 726 /* [in] */ BOOL deep, 727 /* [retval][out] */ IDOMNode** result) { return DOMNode::cloneNode(deep, result); } 728 729 virtual HRESULT STDMETHODCALLTYPE normalize( void) { return DOMNode::normalize(); } 730 731 virtual HRESULT STDMETHODCALLTYPE isSupported( 732 /* [in] */ BSTR feature, 733 /* [in] */ BSTR version, 734 /* [retval][out] */ BOOL* result) { return DOMNode::isSupported(feature, version, result); } 735 736 virtual HRESULT STDMETHODCALLTYPE namespaceURI( 737 /* [retval][out] */ BSTR* result) { return DOMNode::namespaceURI(result); } 738 739 virtual HRESULT STDMETHODCALLTYPE prefix( 740 /* [retval][out] */ BSTR* result) { return DOMNode::prefix(result); } 741 742 virtual HRESULT STDMETHODCALLTYPE setPrefix( 743 /* [in] */ BSTR prefix) { return DOMNode::setPrefix(prefix); } 744 745 virtual HRESULT STDMETHODCALLTYPE localName( 746 /* [retval][out] */ BSTR* result) { return DOMNode::localName(result); } 747 748 virtual HRESULT STDMETHODCALLTYPE hasAttributes( 749 /* [retval][out] */ BOOL* result) { return DOMNode::hasAttributes(result); } 750 751 virtual HRESULT STDMETHODCALLTYPE isSameNode( 752 /* [in] */ IDOMNode* other, 753 /* [retval][out] */ BOOL* result) { return DOMNode::isSameNode(other, result); } 754 755 virtual HRESULT STDMETHODCALLTYPE isEqualNode( 756 /* [in] */ IDOMNode* other, 757 /* [retval][out] */ BOOL* result) { return DOMNode::isEqualNode(other, result); } 758 759 virtual HRESULT STDMETHODCALLTYPE textContent( 760 /* [retval][out] */ BSTR* result) { return DOMNode::textContent(result); } 761 762 virtual HRESULT STDMETHODCALLTYPE setTextContent( 763 /* [in] */ BSTR text) { return DOMNode::setTextContent(text); } 764 765 // IDOMElement 766 virtual HRESULT STDMETHODCALLTYPE tagName( 767 /* [retval][out] */ BSTR* result); 768 769 virtual HRESULT STDMETHODCALLTYPE getAttribute( 770 /* [in] */ BSTR name, 771 /* [retval][out] */ BSTR* result); 772 773 virtual HRESULT STDMETHODCALLTYPE setAttribute( 774 /* [in] */ BSTR name, 775 /* [in] */ BSTR value); 776 777 virtual HRESULT STDMETHODCALLTYPE removeAttribute( 778 /* [in] */ BSTR name); 779 780 virtual HRESULT STDMETHODCALLTYPE getAttributeNode( 781 /* [in] */ BSTR name, 782 /* [retval][out] */ IDOMAttr** result); 783 784 virtual HRESULT STDMETHODCALLTYPE setAttributeNode( 785 /* [in] */ IDOMAttr *newAttr, 786 /* [retval][out] */ IDOMAttr** result); 787 788 virtual HRESULT STDMETHODCALLTYPE removeAttributeNode( 789 /* [in] */ IDOMAttr *oldAttr, 790 /* [retval][out] */ IDOMAttr** result); 791 792 virtual HRESULT STDMETHODCALLTYPE getElementsByTagName( 793 /* [in] */ BSTR name, 794 /* [retval][out] */ IDOMNodeList** result); 795 796 virtual HRESULT STDMETHODCALLTYPE getAttributeNS( 797 /* [in] */ BSTR namespaceURI, 798 /* [in] */ BSTR localName, 799 /* [retval][out] */ BSTR* result); 800 801 virtual HRESULT STDMETHODCALLTYPE setAttributeNS( 802 /* [in] */ BSTR namespaceURI, 803 /* [in] */ BSTR qualifiedName, 804 /* [in] */ BSTR value); 805 806 virtual HRESULT STDMETHODCALLTYPE removeAttributeNS( 807 /* [in] */ BSTR namespaceURI, 808 /* [in] */ BSTR localName); 809 810 virtual HRESULT STDMETHODCALLTYPE getAttributeNodeNS( 811 /* [in] */ BSTR namespaceURI, 812 /* [in] */ BSTR localName, 813 /* [retval][out] */ IDOMAttr** result); 814 815 virtual HRESULT STDMETHODCALLTYPE setAttributeNodeNS( 816 /* [in] */ IDOMAttr *newAttr, 817 /* [retval][out] */ IDOMAttr** result); 818 819 virtual HRESULT STDMETHODCALLTYPE getElementsByTagNameNS( 820 /* [in] */ BSTR namespaceURI, 821 /* [in] */ BSTR localName, 822 /* [retval][out] */ IDOMNodeList** result); 823 824 virtual HRESULT STDMETHODCALLTYPE hasAttribute( 825 /* [in] */ BSTR name, 826 /* [retval][out] */ BOOL* result); 827 828 virtual HRESULT STDMETHODCALLTYPE hasAttributeNS( 829 /* [in] */ BSTR namespaceURI, 830 /* [in] */ BSTR localName, 831 /* [retval][out] */ BOOL* result); 832 833 virtual HRESULT STDMETHODCALLTYPE focus( void); 834 835 virtual HRESULT STDMETHODCALLTYPE blur( void); 836 837 // IDOMNodeExtensions 838 virtual HRESULT STDMETHODCALLTYPE boundingBox( 839 /* [retval][out] */ LPRECT rect); 840 841 virtual HRESULT STDMETHODCALLTYPE lineBoxRects( 842 /* [size_is][in] */ RECT* rects, 843 /* [in] */ int cRects); 844 845 // IDOMElementPrivate 846 virtual HRESULT STDMETHODCALLTYPE coreElement( 847 void** element); 848 849 virtual HRESULT STDMETHODCALLTYPE isEqual( 850 /* [in] */ IDOMElement* other, 851 /* [retval][out] */ BOOL* result); 852 853 virtual HRESULT STDMETHODCALLTYPE isFocused( 854 /* [retval][out] */ BOOL* result); 855 856 virtual HRESULT STDMETHODCALLTYPE innerText( 857 /* [retval][out] */ BSTR* result); 858 859 virtual HRESULT STDMETHODCALLTYPE font( 860 WebFontDescription* webFontDescription); 861 862 virtual HRESULT STDMETHODCALLTYPE renderedImage( 863 /* [retval][out] */ HBITMAP* image); 864 865 virtual HRESULT STDMETHODCALLTYPE markerTextForListItem( 866 /* [retval][out] */ BSTR* markerText); 867 868 virtual HRESULT STDMETHODCALLTYPE shadowPseudoId( 869 /* [retval][out] */ BSTR* result); 870 871 // IDOMElementCSSInlineStyle 872 virtual HRESULT STDMETHODCALLTYPE style( 873 /* [retval][out] */ IDOMCSSStyleDeclaration** result); 874 875 // IDOMElementExtensions 876 virtual HRESULT STDMETHODCALLTYPE offsetLeft( 877 /* [retval][out] */ int* result); 878 879 virtual HRESULT STDMETHODCALLTYPE offsetTop( 880 /* [retval][out] */ int* result); 881 882 virtual HRESULT STDMETHODCALLTYPE offsetWidth( 883 /* [retval][out] */ int* result); 884 885 virtual HRESULT STDMETHODCALLTYPE offsetHeight( 886 /* [retval][out] */ int* result); 887 888 virtual HRESULT STDMETHODCALLTYPE offsetParent( 889 /* [retval][out] */ IDOMElement** result); 890 891 virtual HRESULT STDMETHODCALLTYPE clientWidth( 892 /* [retval][out] */ int* result); 893 894 virtual HRESULT STDMETHODCALLTYPE clientHeight( 895 /* [retval][out] */ int* result); 896 897 virtual HRESULT STDMETHODCALLTYPE scrollLeft( 898 /* [retval][out] */ int* result); 899 900 virtual HRESULT STDMETHODCALLTYPE setScrollLeft( 901 /* [in] */ int newScrollLeft); 902 903 virtual HRESULT STDMETHODCALLTYPE scrollTop( 904 /* [retval][out] */ int* result); 905 906 virtual HRESULT STDMETHODCALLTYPE setScrollTop( 907 /* [in] */ int newScrollTop); 908 909 virtual HRESULT STDMETHODCALLTYPE scrollWidth( 910 /* [retval][out] */ int* result); 911 912 virtual HRESULT STDMETHODCALLTYPE scrollHeight( 913 /* [retval][out] */ int* result); 914 915 virtual HRESULT STDMETHODCALLTYPE scrollIntoView( 916 /* [in] */ BOOL alignWithTop); 917 918 virtual HRESULT STDMETHODCALLTYPE scrollIntoViewIfNeeded( 919 /* [in] */ BOOL centerIfNeeded); 920 921 // DOMElement 922 WebCore::Element* element() { return m_element; } 923 924protected: 925 WebCore::Element* m_element; 926}; 927 928#endif 929