IDOMElement* DOMElement::createInstance(WebCore::Element* e) { if (!e) return 0; HRESULT hr; IDOMElement* domElement = 0; if (isHTMLFormElement(e)) { DOMHTMLFormElement* newElement = new DOMHTMLFormElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->hasTagName(iframeTag)) { DOMHTMLIFrameElement* newElement = new DOMHTMLIFrameElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (isHTMLInputElement(e)) { DOMHTMLInputElement* newElement = new DOMHTMLInputElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (isHTMLOptionElement(e)) { DOMHTMLOptionElement* newElement = new DOMHTMLOptionElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->hasTagName(selectTag)) { DOMHTMLSelectElement* newElement = new DOMHTMLSelectElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (isHTMLTextAreaElement(e)) { DOMHTMLTextAreaElement* newElement = new DOMHTMLTextAreaElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->isHTMLElement()) { DOMHTMLElement* newElement = new DOMHTMLElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else { DOMElement* newElement = new DOMElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } if (FAILED(hr)) return 0; return domElement; }