Changeset 24630 in webkit


Ignore:
Timestamp:
Jul 25, 2007, 1:54:03 PM (18 years ago)
Author:
adachan
Message:

2007-07-25 Ada Chan <adachan@apple.com>

Reviewed by Adam and Steve.


Implemented some DOM methods and other fixes for <rdar://problem/5311601>.


  • DOMCoreClasses.cpp: (DOMNode::ownerDocument): implemented (DOMDocument::getComputedStyle): get the DOMElement via QueryInterface (DOMElement::QueryInterface):
  • DOMHTMLClasses.cpp: (DOMHTMLDocument::body): fixed leak (DOMHTMLFormElement::action): implemented (DOMHTMLFormElement::method): ditto (DOMHTMLInputElement::form): ditto (DOMHTMLTextAreaElement::form): ditto
  • Interfaces/DOMHTML.idl: IDOMHTMLInputElement should inherit from IDOMHTMLElement
Location:
trunk/WebKit/win
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/win/ChangeLog

    r24602 r24630  
     12007-07-25  Ada Chan  <adachan@apple.com>
     2
     3        Reviewed by Adam and Steve.
     4       
     5        Implemented some DOM methods and other fixes for <rdar://problem/5311601>.
     6       
     7        * DOMCoreClasses.cpp:
     8        (DOMNode::ownerDocument): implemented
     9        (DOMDocument::getComputedStyle): get the DOMElement via QueryInterface
     10        (DOMElement::QueryInterface):
     11        * DOMHTMLClasses.cpp:
     12        (DOMHTMLDocument::body): fixed leak
     13        (DOMHTMLFormElement::action): implemented
     14        (DOMHTMLFormElement::method): ditto
     15        (DOMHTMLInputElement::form): ditto
     16        (DOMHTMLTextAreaElement::form): ditto
     17        * Interfaces/DOMHTML.idl: IDOMHTMLInputElement should inherit from IDOMHTMLElement
     18
    1192007-07-24  Steve Falkenburg  <sfalken@apple.com>
    220
  • trunk/WebKit/win/DOMCoreClasses.cpp

    r24536 r24630  
    5050// {79A193A5-D783-4c73-9AD9-D10678B943DE}
    5151DEFINE_GUID(IID_DOMNode, 0x79a193a5, 0xd783, 0x4c73, 0x9a, 0xd9, 0xd1, 0x6, 0x78, 0xb9, 0x43, 0xde);
     52// {3B0C0EFF-478B-4b0b-8290-D2321E08E23E}
     53DEFINE_GUID(IID_DOMElement, 0x3b0c0eff, 0x478b, 0x4b0b, 0x82, 0x90, 0xd2, 0x32, 0x1e, 0x8, 0xe2, 0x3e);
    5254
    5355using namespace WebCore;
     
    172174
    173175HRESULT STDMETHODCALLTYPE DOMNode::ownerDocument(
    174     /* [retval][out] */ IDOMDocument** /*result*/)
    175 {
    176     ASSERT_NOT_REACHED();
    177     return E_NOTIMPL;
     176    /* [retval][out] */ IDOMDocument** result)
     177{
     178    if (!result)
     179        return E_POINTER;
     180    *result = 0;
     181    if (!m_node)
     182        return E_FAIL;
     183    *result = DOMDocument::createInstance(m_node->ownerDocument());
     184    return S_OK;
    178185}
    179186
     
    689696        return E_POINTER;
    690697
    691     DOMElement* domEle = static_cast<DOMElement*>(elt);
     698    COMPtr<DOMElement> domEle;
     699    HRESULT hr = elt->QueryInterface(IID_DOMElement, (void**)&domEle);
     700    if (FAILED(hr))
     701        return hr;
    692702    Element* element = domEle->element();
    693703
     
    755765    if (IsEqualGUID(riid, IID_IDOMElement))
    756766        *ppvObject = static_cast<IDOMElement*>(this);
     767    else if (IsEqualGUID(riid, IID_DOMElement))
     768        *ppvObject = static_cast<DOMElement*>(this);
    757769    else if (IsEqualGUID(riid, IID_IDOMElementPrivate))
    758770        *ppvObject = static_cast<IDOMElementPrivate*>(this);
  • trunk/WebKit/win/DOMHTMLClasses.cpp

    r23455 r24630  
    222222
    223223    HTMLDocument* htmlDoc = static_cast<HTMLDocument*>(m_document);
    224     COMPtr<IDOMElement> domEle = DOMHTMLElement::createInstance(htmlDoc->body());
    225     if (domEle)
    226         return domEle->QueryInterface(IID_IDOMHTMLElement, (void**) bodyElement);
     224    COMPtr<IDOMElement> domElement;
     225    domElement.adoptRef(DOMHTMLElement::createInstance(htmlDoc->body()));
     226    if (domElement)
     227        return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) bodyElement);
    227228    return E_FAIL;
    228229}
     
    510511   
    511512HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::action(
    512         /* [retval][out] */ BSTR* /*result*/)
    513 {
    514     ASSERT_NOT_REACHED();
    515     return E_NOTIMPL;
     513        /* [retval][out] */ BSTR* result)
     514{
     515    ASSERT(m_element && m_element->hasTagName(formTag));
     516    WebCore::String actionString = static_cast<HTMLFormElement*>(m_element)->action();
     517    *result = BString(actionString.characters(), actionString.length()).release();
     518    return S_OK;
    516519}
    517520   
     
    538541   
    539542HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::method(
    540         /* [retval][out] */ BSTR* /*method*/)
    541 {
    542     ASSERT_NOT_REACHED();
    543     return E_NOTIMPL;
     543        /* [retval][out] */ BSTR* result)
     544{
     545    ASSERT(m_element && m_element->hasTagName(formTag));
     546    WebCore::String methodString = static_cast<HTMLFormElement*>(m_element)->method();
     547    *result = BString(methodString.characters(), methodString.length()).release();
     548    return S_OK;
    544549}
    545550   
     
    899904   
    900905HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::form(
    901         /* [retval][out] */ IDOMHTMLElement** /*result*/)
    902 {
    903     ASSERT_NOT_REACHED();
    904     return E_NOTIMPL;
     906        /* [retval][out] */ IDOMHTMLElement** result)
     907{
     908    if (!result)
     909        return E_POINTER;
     910    *result = 0;
     911    ASSERT(m_element && m_element->hasTagName(inputTag));
     912    HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
     913    COMPtr<IDOMElement> domElement;
     914    domElement.adoptRef(DOMHTMLElement::createInstance(inputElement->form()));
     915    if (domElement)
     916        return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result);
     917    return E_FAIL;
    905918}
    906919   
     
    12691282   
    12701283HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::form(
    1271         /* [retval][out] */ IDOMHTMLElement** /*result*/)
    1272 {
    1273     ASSERT_NOT_REACHED();
    1274     return E_NOTIMPL;
     1284        /* [retval][out] */ IDOMHTMLElement** result)
     1285{
     1286    if (!result)
     1287        return E_POINTER;
     1288    *result = 0;
     1289    ASSERT(m_element && m_element->hasTagName(textareaTag));
     1290    HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
     1291    COMPtr<IDOMElement> domElement;
     1292    domElement.adoptRef(DOMHTMLElement::createInstance(textareaElement->form()));
     1293    if (domElement)
     1294        return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result);
     1295    return E_FAIL;
    12751296}
    12761297   
  • trunk/WebKit/win/Interfaces/DOMHTML.idl

    r23357 r24630  
    612612    pointer_default(unique)
    613613]
    614 interface IDOMHTMLInputElement : IDOMElement
     614interface IDOMHTMLInputElement : IDOMHTMLElement
    615615{
    616616    /*
Note: See TracChangeset for help on using the changeset viewer.