diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKit/win/DOMHTMLClasses.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKit/win/DOMHTMLClasses.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,1470 @@ +/* + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebKitDLL.h" +#include "DOMHTMLClasses.h" +#include "COMPtr.h" + +#pragma warning(push, 0) +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#pragma warning(pop) + +using namespace WebCore; +using namespace HTMLNames; + +// DOMHTMLCollection + +DOMHTMLCollection::DOMHTMLCollection(WebCore::HTMLCollection* c) +: m_collection(c) +{ +} + +IDOMHTMLCollection* DOMHTMLCollection::createInstance(WebCore::HTMLCollection* c) +{ + if (!c) + return 0; + + IDOMHTMLCollection* htmlCollection = 0; + DOMHTMLCollection* newCollection = new DOMHTMLCollection(c); + if (FAILED(newCollection->QueryInterface(IID_IDOMHTMLCollection, (void**)&htmlCollection))) { + delete newCollection; + return 0; + } + + return htmlCollection; +} + +// DOMHTMLCollection - IUnknown ----------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLCollection::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLCollection)) + *ppvObject = static_cast(this); + else + return DOMObject::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLCollection ---------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLCollection::length( + /* [retval][out] */ UINT* result) +{ + *result = 0; + if (!m_collection) + return E_POINTER; + + *result = m_collection->length(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLCollection::item( + /* [in] */ UINT index, + /* [retval][out] */ IDOMNode** node) +{ + *node = 0; + if (!m_collection) + return E_POINTER; + + *node = DOMNode::createInstance(m_collection->item(index)); + return *node ? S_OK : E_FAIL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLCollection::namedItem( + /* [in] */ BSTR /*name*/, + /* [retval][out] */ IDOMNode** /*node*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLOptionsCollection - IUnknown ---------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLOptionsCollection)) + *ppvObject = static_cast(this); + else + return DOMObject::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLOptionsCollection --------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::length( + /* [retval][out] */ unsigned int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::setLength( + /* [in] */ unsigned int /*length*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::item( + /* [in] */ unsigned int /*index*/, + /* [retval][out] */ IDOMNode** /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::namedItem( + /* [in] */ BSTR /*name*/, + /* [retval][out] */ IDOMNode* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLDocument - IUnknown ------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLDocument)) + *ppvObject = static_cast(this); + else + return DOMDocument::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLDocument ------------------------------------------------------------ + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::title( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setTitle( + /* [in] */ BSTR /*title*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::referrer( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::domain( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::URL( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::body( + /* [retval][out] */ IDOMHTMLElement** bodyElement) +{ + *bodyElement = 0; + if (!m_document || !m_document->isHTMLDocument()) + return E_FAIL; + + HTMLDocument* htmlDoc = static_cast(m_document); + COMPtr domElement; + domElement.adoptRef(DOMHTMLElement::createInstance(htmlDoc->body())); + if (domElement) + return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) bodyElement); + return E_FAIL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setBody( + /* [in] */ IDOMHTMLElement* /*body*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::images( + /* [retval][out] */ IDOMHTMLCollection** /*collection*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::applets( + /* [retval][out] */ IDOMHTMLCollection** /*collection*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::links( + /* [retval][out] */ IDOMHTMLCollection** /*collection*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::forms( + /* [retval][out] */ IDOMHTMLCollection** collection) +{ + *collection = 0; + if (!m_document || !m_document->isHTMLDocument()) + return E_FAIL; + + HTMLDocument* htmlDoc = static_cast(m_document); + *collection = DOMHTMLCollection::createInstance(htmlDoc->forms().get()); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::anchors( + /* [retval][out] */ IDOMHTMLCollection** /*collection*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::cookie( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setCookie( + /* [in] */ BSTR /*cookie*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::open( void) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::close( void) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::write( + /* [in] */ BSTR /*text*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::writeln( + /* [in] */ BSTR /*text*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::getElementById_( + /* [in] */ BSTR /*elementId*/, + /* [retval][out] */ IDOMElement** /*element*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLDocument::getElementsByName( + /* [in] */ BSTR /*elementName*/, + /* [retval][out] */ IDOMNodeList** /*nodeList*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLElement - IUnknown -------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLElement)) + *ppvObject = static_cast(this); + else + return DOMElement::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLElement ------------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::idName( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setIdName( + /* [in] */ BSTR /*idName*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::title( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setTitle( + /* [in] */ BSTR /*title*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::lang( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setLang( + /* [in] */ BSTR /*lang*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::dir( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setDir( + /* [in] */ BSTR /*dir*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::className( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setClassName( + /* [in] */ BSTR /*className*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerHTML( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerHTML( + /* [in] */ BSTR /*html*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerText( + /* [retval][out] */ BSTR* result) +{ + ASSERT(m_element && m_element->isHTMLElement()); + WebCore::String innerTextString = static_cast(m_element)->innerText(); + *result = BString(innerTextString.characters(), innerTextString.length()).release(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerText( + /* [in] */ BSTR text) +{ + ASSERT(m_element && m_element->isHTMLElement()); + HTMLElement* htmlEle = static_cast(m_element); + WebCore::String textString(text, SysStringLen(text)); + WebCore::ExceptionCode ec = 0; + htmlEle->setInnerText(textString, ec); + return S_OK; +} + +// DOMHTMLFormElement - IUnknown ---------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLFormElement)) + *ppvObject = static_cast(this); + else + return DOMHTMLElement::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLFormElement --------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::elements( + /* [retval][out] */ IDOMHTMLCollection** /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::length( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::name( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setName( + /* [in] */ BSTR /*name*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::acceptCharset( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setAcceptCharset( + /* [in] */ BSTR /*acceptCharset*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::action( + /* [retval][out] */ BSTR* result) +{ + ASSERT(m_element && m_element->hasTagName(formTag)); + WebCore::String actionString = static_cast(m_element)->action(); + *result = BString(actionString.characters(), actionString.length()).release(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setAction( + /* [in] */ BSTR /*action*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::encType( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setEnctype( + /* [retval][out] */ BSTR* /*encType*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::method( + /* [retval][out] */ BSTR* result) +{ + ASSERT(m_element && m_element->hasTagName(formTag)); + WebCore::String methodString = static_cast(m_element)->method(); + *result = BString(methodString.characters(), methodString.length()).release(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setMethod( + /* [in] */ BSTR /*method*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::target( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setTarget( + /* [in] */ BSTR /*target*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::submit( void) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::reset( void) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLSelectElement - IUnknown ---------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLSelectElement)) + *ppvObject = static_cast(this); + else if (IsEqualGUID(riid, IID_IFormsAutoFillTransitionSelect)) + *ppvObject = static_cast(this); + else + return DOMHTMLElement::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLSelectElement ------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::type( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::selectedIndex( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setSelectedIndx( + /* [in] */ int /*selectedIndex*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::value( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setValue( + /* [in] */ BSTR /*value*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::length( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::form( + /* [retval][out] */ IDOMHTMLFormElement** /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::options( + /* [retval][out] */ IDOMHTMLOptionsCollection** /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::disabled( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setDisabled( + /* [in] */ BOOL /*disabled*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::multiple( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setMultiple( + /* [in] */ BOOL /*multiple*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::name( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setName( + /* [in] */ BSTR /*name*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::size( + /* [retval][out] */ int* /*size*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setSize( + /* [in] */ int /*size*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::tabIndex( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setTabIndex( + /* [in] */ int /*tabIndex*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::add( + /* [in] */ IDOMHTMLElement* /*element*/, + /* [in] */ IDOMHTMLElement* /*before*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::remove( + /* [in] */ int /*index*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLSelectElement - IFormsAutoFillTransitionSelect ---------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::activateItemAtIndex( + /* [in] */ int /*index*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLOptionElement - IUnknown -------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLOptionElement)) + *ppvObject = static_cast(this); + else + return DOMHTMLElement::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLOptionElement ------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::form( + /* [retval][out] */ IDOMHTMLFormElement** /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::defaultSelected( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setDefaultSelected( + /* [in] */ BOOL /*defaultSelected*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::text( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::index( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::disabled( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setDisabled( + /* [in] */ BOOL /*disabled*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::label( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setLabel( + /* [in] */ BSTR /*label*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::selected( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setSelected( + /* [in] */ BOOL /*selected*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::value( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setValue( + /* [in] */ BSTR /*value*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +// DOMHTMLInputElement - IUnknown ---------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLInputElement)) + *ppvObject = static_cast(this); + else if (IsEqualGUID(riid, IID_IFormsAutoFillTransition)) + *ppvObject = static_cast(this); + else if (IsEqualGUID(riid, IID_IFormPromptAdditions)) + *ppvObject = static_cast(this); + else + return DOMHTMLElement::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLInputElement -------------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::defaultValue( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDefaultValue( + /* [in] */ BSTR /*val*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::defaultChecked( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDefaultChecked( + /* [in] */ BSTR /*checked*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::form( + /* [retval][out] */ IDOMHTMLElement** result) +{ + if (!result) + return E_POINTER; + *result = 0; + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + COMPtr domElement; + domElement.adoptRef(DOMHTMLElement::createInstance(inputElement->form())); + if (domElement) + return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result); + return E_FAIL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::accept( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAccept( + /* [in] */ BSTR /*accept*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::accessKey( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAccessKey( + /* [in] */ BSTR /*key*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::align( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAlign( + /* [in] */ BSTR /*align*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::alt( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAlt( + /* [in] */ BSTR /*alt*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::checked( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setChecked( + /* [in] */ BOOL /*checked*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::disabled( + /* [retval][out] */ BOOL* result) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + *result = inputElement->disabled() ? TRUE : FALSE; + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDisabled( + /* [in] */ BOOL /*disabled*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::maxLength( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setMaxLength( + /* [in] */ int /*maxLength*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::name( + /* [retval][out] */ BSTR* /*name*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setName( + /* [in] */ BSTR /*name*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::readOnly( + /* [retval][out] */ BOOL* result) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + *result = inputElement->readOnly() ? TRUE : FALSE; + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setReadOnly( + /* [in] */ BOOL /*readOnly*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::size( + /* [retval][out] */ unsigned int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSize( + /* [in] */ unsigned int /*size*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::src( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSrc( + /* [in] */ BSTR /*src*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::tabIndex( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setTabIndex( + /* [in] */ int /*tabIndex*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::type( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setType( + /* [in] */ BSTR type) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + WebCore::String typeString(type, SysStringLen(type)); + inputElement->setType(typeString); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::useMap( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setUseMap( + /* [in] */ BSTR /*useMap*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::value( + /* [retval][out] */ BSTR* result) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + WebCore::String valueString = inputElement->value(); + *result = BString(valueString.characters(), valueString.length()).release(); + if (valueString.length() && !*result) + return E_OUTOFMEMORY; + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setValue( + /* [in] */ BSTR value) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + inputElement->setValue(String((UChar*) value, SysStringLen(value))); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::select( void) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + inputElement->select(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::click( void) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSelectionStart( + /* [in] */ long start) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + inputElement->setSelectionStart(start); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectionStart( + /* [retval][out] */ long *start) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + *start = inputElement->selectionStart(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSelectionEnd( + /* [in] */ long end) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + inputElement->setSelectionEnd(end); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectionEnd( + /* [retval][out] */ long *end) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + *end = inputElement->selectionEnd(); + return S_OK; +} + +// DOMHTMLInputElement -- IFormsAutoFillTransition ---------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isTextField( + /* [retval][out] */ BOOL* result) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + *result = inputElement->isTextField() ? TRUE : FALSE; + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::rectOnScreen( + /* [retval][out] */ LPRECT rect) +{ + rect->left = rect->top = rect->right = rect->bottom = 0; + RenderObject* renderer = m_element->renderer(); + FrameView* view = m_element->document()->view(); + if (!renderer || !view) + return E_FAIL; + + IntRect coreRect = renderer->absoluteBoundingBoxRect(); + coreRect.setLocation(view->contentsToWindow(coreRect.location())); + rect->left = coreRect.x(); + rect->top = coreRect.y(); + rect->right = coreRect.right(); + rect->bottom = coreRect.bottom(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::replaceCharactersInRange( + /* [in] */ int /*startTarget*/, + /* [in] */ int /*endTarget*/, + /* [in] */ BSTR /*replacementString*/, + /* [in] */ int /*index*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectedRange( + /* [out] */ int* start, + /* [out] */ int* end) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + *start = inputElement->selectionStart(); + *end = inputElement->selectionEnd(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAutofilled( + /* [in] */ BOOL filled) +{ + ASSERT(m_element && m_element->hasTagName(inputTag)); + HTMLInputElement* inputElement = static_cast(m_element); + inputElement->setAutofilled(!!filled); + return S_OK; +} + +// DOMHTMLInputElement -- IFormPromptAdditions ------------------------------------ + +HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isUserEdited( + /* [retval][out] */ BOOL *result) +{ + if (!result) + return E_POINTER; + + *result = FALSE; + ASSERT(m_element); + BOOL textField = FALSE; + if (FAILED(isTextField(&textField)) || !textField) + return S_OK; + RenderObject* renderer = m_element->renderer(); + if (renderer && static_cast(renderer)->isUserEdited()) + *result = TRUE; + return S_OK; +} + +// DOMHTMLTextAreaElement - IUnknown ---------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::QueryInterface(REFIID riid, void** ppvObject) +{ + *ppvObject = 0; + if (IsEqualGUID(riid, IID_IDOMHTMLTextAreaElement)) + *ppvObject = static_cast(this); + else if (IsEqualGUID(riid, IID_IFormPromptAdditions)) + *ppvObject = static_cast(this); + else + return DOMHTMLElement::QueryInterface(riid, ppvObject); + + AddRef(); + return S_OK; +} + +// DOMHTMLTextAreaElement ----------------------------------------------------- + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::defaultValue( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setDefaultValue( + /* [in] */ BSTR /*val*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::form( + /* [retval][out] */ IDOMHTMLElement** result) +{ + if (!result) + return E_POINTER; + *result = 0; + ASSERT(m_element && m_element->hasTagName(textareaTag)); + HTMLTextAreaElement* textareaElement = static_cast(m_element); + COMPtr domElement; + domElement.adoptRef(DOMHTMLElement::createInstance(textareaElement->form())); + if (domElement) + return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result); + return E_FAIL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::accessKey( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setAccessKey( + /* [in] */ BSTR /*key*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::cols( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setCols( + /* [in] */ int /*cols*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::disabled( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setDisabled( + /* [in] */ BOOL /*disabled*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::name( + /* [retval][out] */ BSTR* /*name*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setName( + /* [in] */ BSTR /*name*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::readOnly( + /* [retval][out] */ BOOL* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setReadOnly( + /* [in] */ BOOL /*readOnly*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::rows( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setRows( + /* [in] */ int /*rows*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::tabIndex( + /* [retval][out] */ int* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setTabIndex( + /* [in] */ int /*tabIndex*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::type( + /* [retval][out] */ BSTR* /*result*/) +{ + ASSERT_NOT_REACHED(); + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::value( + /* [retval][out] */ BSTR* result) +{ + ASSERT(m_element && m_element->hasTagName(textareaTag)); + HTMLTextAreaElement* textareaElement = static_cast(m_element); + WebCore::String valueString = textareaElement->value(); + *result = BString(valueString.characters(), valueString.length()).release(); + if (valueString.length() && !*result) + return E_OUTOFMEMORY; + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setValue( + /* [in] */ BSTR value) +{ + ASSERT(m_element && m_element->hasTagName(textareaTag)); + HTMLTextAreaElement* textareaElement = static_cast(m_element); + textareaElement->setValue(String((UChar*) value, SysStringLen(value))); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::select( void) +{ + ASSERT(m_element && m_element->hasTagName(textareaTag)); + HTMLTextAreaElement* textareaElement = static_cast(m_element); + textareaElement->select(); + return S_OK; +} + +// DOMHTMLTextAreaElement -- IFormPromptAdditions ------------------------------------ + +HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::isUserEdited( + /* [retval][out] */ BOOL *result) +{ + if (!result) + return E_POINTER; + + *result = FALSE; + ASSERT(m_element); + RenderObject* renderer = m_element->renderer(); + if (renderer && static_cast(renderer)->isUserEdited()) + *result = TRUE; + return S_OK; +}