2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
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.
27 #include "WebKitDLL.h"
28 #include "DOMHTMLClasses.h"
31 #pragma warning(push, 0)
32 #include <WebCore/BString.h>
33 #include <WebCore/Document.h>
34 #include <WebCore/Element.h>
35 #include <WebCore/FrameView.h>
36 #include <WebCore/HTMLDocument.h>
37 #include <WebCore/HTMLFormElement.h>
38 #include <WebCore/HTMLInputElement.h>
39 #include <WebCore/HTMLNames.h>
40 #include <WebCore/HTMLOptionElement.h>
41 #include <WebCore/HTMLSelectElement.h>
42 #include <WebCore/HTMLTextAreaElement.h>
43 #include <WebCore/IntRect.h>
44 #include <WebCore/RenderObject.h>
45 #include <WebCore/RenderTextControl.h>
48 using namespace WebCore;
49 using namespace HTMLNames;
53 DOMHTMLCollection::DOMHTMLCollection(WebCore::HTMLCollection* c)
58 IDOMHTMLCollection* DOMHTMLCollection::createInstance(WebCore::HTMLCollection* c)
63 IDOMHTMLCollection* htmlCollection = 0;
64 DOMHTMLCollection* newCollection = new DOMHTMLCollection(c);
65 if (FAILED(newCollection->QueryInterface(IID_IDOMHTMLCollection, (void**)&htmlCollection))) {
70 return htmlCollection;
73 // DOMHTMLCollection - IUnknown -----------------------------------------------
75 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::QueryInterface(REFIID riid, void** ppvObject)
78 if (IsEqualGUID(riid, IID_IDOMHTMLCollection))
79 *ppvObject = static_cast<IDOMHTMLCollection*>(this);
81 return DOMObject::QueryInterface(riid, ppvObject);
87 // DOMHTMLCollection ----------------------------------------------------------
89 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::length(
90 /* [retval][out] */ UINT* result)
96 *result = m_collection->length();
100 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::item(
101 /* [in] */ UINT index,
102 /* [retval][out] */ IDOMNode** node)
108 *node = DOMNode::createInstance(m_collection->item(index));
109 return *node ? S_OK : E_FAIL;
112 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::namedItem(
113 /* [in] */ BSTR /*name*/,
114 /* [retval][out] */ IDOMNode** /*node*/)
116 ASSERT_NOT_REACHED();
120 // DOMHTMLOptionsCollection - IUnknown ----------------------------------------
122 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::QueryInterface(REFIID riid, void** ppvObject)
125 if (IsEqualGUID(riid, IID_IDOMHTMLOptionsCollection))
126 *ppvObject = static_cast<IDOMHTMLOptionsCollection*>(this);
128 return DOMObject::QueryInterface(riid, ppvObject);
134 // DOMHTMLOptionsCollection ---------------------------------------------------
136 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::length(
137 /* [retval][out] */ unsigned int* /*result*/)
139 ASSERT_NOT_REACHED();
143 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::setLength(
144 /* [in] */ unsigned int /*length*/)
146 ASSERT_NOT_REACHED();
150 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::item(
151 /* [in] */ unsigned int /*index*/,
152 /* [retval][out] */ IDOMNode** /*result*/)
154 ASSERT_NOT_REACHED();
158 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::namedItem(
159 /* [in] */ BSTR /*name*/,
160 /* [retval][out] */ IDOMNode* /*result*/)
162 ASSERT_NOT_REACHED();
166 // DOMHTMLDocument - IUnknown -------------------------------------------------
168 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::QueryInterface(REFIID riid, void** ppvObject)
171 if (IsEqualGUID(riid, IID_IDOMHTMLDocument))
172 *ppvObject = static_cast<IDOMHTMLDocument*>(this);
174 return DOMDocument::QueryInterface(riid, ppvObject);
180 // DOMHTMLDocument ------------------------------------------------------------
182 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::title(
183 /* [retval][out] */ BSTR* /*result*/)
185 ASSERT_NOT_REACHED();
189 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setTitle(
190 /* [in] */ BSTR /*title*/)
192 ASSERT_NOT_REACHED();
196 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::referrer(
197 /* [retval][out] */ BSTR* /*result*/)
199 ASSERT_NOT_REACHED();
203 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::domain(
204 /* [retval][out] */ BSTR* /*result*/)
206 ASSERT_NOT_REACHED();
210 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::URL(
211 /* [retval][out] */ BSTR* result)
216 *result = BString(static_cast<HTMLDocument*>(m_document)->URL()).release();
220 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::body(
221 /* [retval][out] */ IDOMHTMLElement** bodyElement)
224 if (!m_document || !m_document->isHTMLDocument())
227 HTMLDocument* htmlDoc = static_cast<HTMLDocument*>(m_document);
228 COMPtr<IDOMElement> domElement;
229 domElement.adoptRef(DOMHTMLElement::createInstance(htmlDoc->body()));
231 return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) bodyElement);
235 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setBody(
236 /* [in] */ IDOMHTMLElement* /*body*/)
238 ASSERT_NOT_REACHED();
242 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::images(
243 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
245 ASSERT_NOT_REACHED();
249 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::applets(
250 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
252 ASSERT_NOT_REACHED();
256 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::links(
257 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
259 ASSERT_NOT_REACHED();
263 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::forms(
264 /* [retval][out] */ IDOMHTMLCollection** collection)
267 if (!m_document || !m_document->isHTMLDocument())
270 HTMLDocument* htmlDoc = static_cast<HTMLDocument*>(m_document);
271 *collection = DOMHTMLCollection::createInstance(htmlDoc->forms().get());
275 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::anchors(
276 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
278 ASSERT_NOT_REACHED();
282 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::cookie(
283 /* [retval][out] */ BSTR* /*result*/)
285 ASSERT_NOT_REACHED();
289 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setCookie(
290 /* [in] */ BSTR /*cookie*/)
292 ASSERT_NOT_REACHED();
296 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::open( void)
298 ASSERT_NOT_REACHED();
302 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::close( void)
304 ASSERT_NOT_REACHED();
308 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::write(
309 /* [in] */ BSTR /*text*/)
311 ASSERT_NOT_REACHED();
315 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::writeln(
316 /* [in] */ BSTR /*text*/)
318 ASSERT_NOT_REACHED();
322 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::getElementById_(
323 /* [in] */ BSTR /*elementId*/,
324 /* [retval][out] */ IDOMElement** /*element*/)
326 ASSERT_NOT_REACHED();
330 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::getElementsByName(
331 /* [in] */ BSTR /*elementName*/,
332 /* [retval][out] */ IDOMNodeList** /*nodeList*/)
334 ASSERT_NOT_REACHED();
338 // DOMHTMLElement - IUnknown --------------------------------------------------
340 HRESULT STDMETHODCALLTYPE DOMHTMLElement::QueryInterface(REFIID riid, void** ppvObject)
343 if (IsEqualGUID(riid, IID_IDOMHTMLElement))
344 *ppvObject = static_cast<IDOMHTMLElement*>(this);
346 return DOMElement::QueryInterface(riid, ppvObject);
352 // DOMHTMLElement -------------------------------------------------------------
354 HRESULT STDMETHODCALLTYPE DOMHTMLElement::idName(
355 /* [retval][out] */ BSTR* /*result*/)
357 ASSERT_NOT_REACHED();
361 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setIdName(
362 /* [in] */ BSTR /*idName*/)
364 ASSERT_NOT_REACHED();
368 HRESULT STDMETHODCALLTYPE DOMHTMLElement::title(
369 /* [retval][out] */ BSTR* /*result*/)
371 ASSERT_NOT_REACHED();
375 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setTitle(
376 /* [in] */ BSTR /*title*/)
378 ASSERT_NOT_REACHED();
382 HRESULT STDMETHODCALLTYPE DOMHTMLElement::lang(
383 /* [retval][out] */ BSTR* /*result*/)
385 ASSERT_NOT_REACHED();
389 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setLang(
390 /* [in] */ BSTR /*lang*/)
392 ASSERT_NOT_REACHED();
396 HRESULT STDMETHODCALLTYPE DOMHTMLElement::dir(
397 /* [retval][out] */ BSTR* /*result*/)
399 ASSERT_NOT_REACHED();
403 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setDir(
404 /* [in] */ BSTR /*dir*/)
406 ASSERT_NOT_REACHED();
410 HRESULT STDMETHODCALLTYPE DOMHTMLElement::className(
411 /* [retval][out] */ BSTR* /*result*/)
413 ASSERT_NOT_REACHED();
417 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setClassName(
418 /* [in] */ BSTR /*className*/)
420 ASSERT_NOT_REACHED();
424 HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerHTML(
425 /* [retval][out] */ BSTR* /*result*/)
427 ASSERT_NOT_REACHED();
431 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerHTML(
432 /* [in] */ BSTR /*html*/)
434 ASSERT_NOT_REACHED();
438 HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerText(
439 /* [retval][out] */ BSTR* result)
441 ASSERT(m_element && m_element->isHTMLElement());
442 WebCore::String innerTextString = static_cast<HTMLElement*>(m_element)->innerText();
443 *result = BString(innerTextString.characters(), innerTextString.length()).release();
447 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerText(
448 /* [in] */ BSTR text)
450 ASSERT(m_element && m_element->isHTMLElement());
451 HTMLElement* htmlEle = static_cast<HTMLElement*>(m_element);
452 WebCore::String textString(text, SysStringLen(text));
453 WebCore::ExceptionCode ec = 0;
454 htmlEle->setInnerText(textString, ec);
458 // DOMHTMLFormElement - IUnknown ----------------------------------------------
460 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::QueryInterface(REFIID riid, void** ppvObject)
463 if (IsEqualGUID(riid, IID_IDOMHTMLFormElement))
464 *ppvObject = static_cast<IDOMHTMLFormElement*>(this);
466 return DOMHTMLElement::QueryInterface(riid, ppvObject);
472 // DOMHTMLFormElement ---------------------------------------------------------
474 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::elements(
475 /* [retval][out] */ IDOMHTMLCollection** /*result*/)
477 ASSERT_NOT_REACHED();
481 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::length(
482 /* [retval][out] */ int* /*result*/)
484 ASSERT_NOT_REACHED();
488 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::name(
489 /* [retval][out] */ BSTR* /*result*/)
491 ASSERT_NOT_REACHED();
495 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setName(
496 /* [in] */ BSTR /*name*/)
498 ASSERT_NOT_REACHED();
502 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::acceptCharset(
503 /* [retval][out] */ BSTR* /*result*/)
505 ASSERT_NOT_REACHED();
509 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setAcceptCharset(
510 /* [in] */ BSTR /*acceptCharset*/)
512 ASSERT_NOT_REACHED();
516 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::action(
517 /* [retval][out] */ BSTR* result)
519 ASSERT(m_element && m_element->hasTagName(formTag));
520 WebCore::String actionString = static_cast<HTMLFormElement*>(m_element)->action();
521 *result = BString(actionString.characters(), actionString.length()).release();
525 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setAction(
526 /* [in] */ BSTR /*action*/)
528 ASSERT_NOT_REACHED();
532 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::encType(
533 /* [retval][out] */ BSTR* /*result*/)
535 ASSERT_NOT_REACHED();
539 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setEnctype(
540 /* [retval][out] */ BSTR* /*encType*/)
542 ASSERT_NOT_REACHED();
546 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::method(
547 /* [retval][out] */ BSTR* result)
549 ASSERT(m_element && m_element->hasTagName(formTag));
550 WebCore::String methodString = static_cast<HTMLFormElement*>(m_element)->method();
551 *result = BString(methodString.characters(), methodString.length()).release();
555 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setMethod(
556 /* [in] */ BSTR /*method*/)
558 ASSERT_NOT_REACHED();
562 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::target(
563 /* [retval][out] */ BSTR* /*result*/)
565 ASSERT_NOT_REACHED();
569 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setTarget(
570 /* [in] */ BSTR /*target*/)
572 ASSERT_NOT_REACHED();
576 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::submit( void)
578 ASSERT_NOT_REACHED();
582 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::reset( void)
584 ASSERT_NOT_REACHED();
588 // DOMHTMLSelectElement - IUnknown ----------------------------------------------
590 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::QueryInterface(REFIID riid, void** ppvObject)
593 if (IsEqualGUID(riid, IID_IDOMHTMLSelectElement))
594 *ppvObject = static_cast<IDOMHTMLSelectElement*>(this);
595 else if (IsEqualGUID(riid, IID_IFormsAutoFillTransitionSelect))
596 *ppvObject = static_cast<IFormsAutoFillTransitionSelect*>(this);
598 return DOMHTMLElement::QueryInterface(riid, ppvObject);
604 // DOMHTMLSelectElement -------------------------------------------------------
606 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::type(
607 /* [retval][out] */ BSTR* /*result*/)
609 ASSERT_NOT_REACHED();
613 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::selectedIndex(
614 /* [retval][out] */ int* /*result*/)
616 ASSERT_NOT_REACHED();
620 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setSelectedIndx(
621 /* [in] */ int /*selectedIndex*/)
623 ASSERT_NOT_REACHED();
627 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::value(
628 /* [retval][out] */ BSTR* /*result*/)
630 ASSERT_NOT_REACHED();
634 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setValue(
635 /* [in] */ BSTR /*value*/)
637 ASSERT_NOT_REACHED();
641 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::length(
642 /* [retval][out] */ int* /*result*/)
644 ASSERT_NOT_REACHED();
648 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::form(
649 /* [retval][out] */ IDOMHTMLFormElement** /*result*/)
651 ASSERT_NOT_REACHED();
655 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::options(
656 /* [retval][out] */ IDOMHTMLOptionsCollection** /*result*/)
658 ASSERT_NOT_REACHED();
662 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::disabled(
663 /* [retval][out] */ BOOL* /*result*/)
665 ASSERT_NOT_REACHED();
669 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setDisabled(
670 /* [in] */ BOOL /*disabled*/)
672 ASSERT_NOT_REACHED();
676 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::multiple(
677 /* [retval][out] */ BOOL* /*result*/)
679 ASSERT_NOT_REACHED();
683 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setMultiple(
684 /* [in] */ BOOL /*multiple*/)
686 ASSERT_NOT_REACHED();
690 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::name(
691 /* [retval][out] */ BSTR* /*result*/)
693 ASSERT_NOT_REACHED();
697 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setName(
698 /* [in] */ BSTR /*name*/)
700 ASSERT_NOT_REACHED();
704 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::size(
705 /* [retval][out] */ int* /*size*/)
707 ASSERT_NOT_REACHED();
711 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setSize(
712 /* [in] */ int /*size*/)
714 ASSERT_NOT_REACHED();
718 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::tabIndex(
719 /* [retval][out] */ int* /*result*/)
721 ASSERT_NOT_REACHED();
725 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setTabIndex(
726 /* [in] */ int /*tabIndex*/)
728 ASSERT_NOT_REACHED();
732 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::add(
733 /* [in] */ IDOMHTMLElement* /*element*/,
734 /* [in] */ IDOMHTMLElement* /*before*/)
736 ASSERT_NOT_REACHED();
740 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::remove(
741 /* [in] */ int /*index*/)
743 ASSERT_NOT_REACHED();
747 // DOMHTMLSelectElement - IFormsAutoFillTransitionSelect ----------------------
749 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::activateItemAtIndex(
750 /* [in] */ int /*index*/)
752 ASSERT_NOT_REACHED();
756 // DOMHTMLOptionElement - IUnknown --------------------------------------------
758 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::QueryInterface(REFIID riid, void** ppvObject)
761 if (IsEqualGUID(riid, IID_IDOMHTMLOptionElement))
762 *ppvObject = static_cast<IDOMHTMLOptionElement*>(this);
764 return DOMHTMLElement::QueryInterface(riid, ppvObject);
770 // DOMHTMLOptionElement -------------------------------------------------------
772 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::form(
773 /* [retval][out] */ IDOMHTMLFormElement** /*result*/)
775 ASSERT_NOT_REACHED();
779 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::defaultSelected(
780 /* [retval][out] */ BOOL* /*result*/)
782 ASSERT_NOT_REACHED();
786 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setDefaultSelected(
787 /* [in] */ BOOL /*defaultSelected*/)
789 ASSERT_NOT_REACHED();
793 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::text(
794 /* [retval][out] */ BSTR* /*result*/)
796 ASSERT_NOT_REACHED();
800 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::index(
801 /* [retval][out] */ int* /*result*/)
803 ASSERT_NOT_REACHED();
807 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::disabled(
808 /* [retval][out] */ BOOL* /*result*/)
810 ASSERT_NOT_REACHED();
814 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setDisabled(
815 /* [in] */ BOOL /*disabled*/)
817 ASSERT_NOT_REACHED();
821 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::label(
822 /* [retval][out] */ BSTR* /*result*/)
824 ASSERT_NOT_REACHED();
828 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setLabel(
829 /* [in] */ BSTR /*label*/)
831 ASSERT_NOT_REACHED();
835 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::selected(
836 /* [retval][out] */ BOOL* /*result*/)
838 ASSERT_NOT_REACHED();
842 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setSelected(
843 /* [in] */ BOOL /*selected*/)
845 ASSERT_NOT_REACHED();
849 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::value(
850 /* [retval][out] */ BSTR* /*result*/)
852 ASSERT_NOT_REACHED();
856 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setValue(
857 /* [in] */ BSTR /*value*/)
859 ASSERT_NOT_REACHED();
863 // DOMHTMLInputElement - IUnknown ----------------------------------------------
865 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::QueryInterface(REFIID riid, void** ppvObject)
868 if (IsEqualGUID(riid, IID_IDOMHTMLInputElement))
869 *ppvObject = static_cast<IDOMHTMLInputElement*>(this);
870 else if (IsEqualGUID(riid, IID_IFormsAutoFillTransition))
871 *ppvObject = static_cast<IFormsAutoFillTransition*>(this);
872 else if (IsEqualGUID(riid, IID_IFormPromptAdditions))
873 *ppvObject = static_cast<IFormPromptAdditions*>(this);
875 return DOMHTMLElement::QueryInterface(riid, ppvObject);
881 // DOMHTMLInputElement --------------------------------------------------------
883 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::defaultValue(
884 /* [retval][out] */ BSTR* /*result*/)
886 ASSERT_NOT_REACHED();
890 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDefaultValue(
891 /* [in] */ BSTR /*val*/)
893 ASSERT_NOT_REACHED();
897 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::defaultChecked(
898 /* [retval][out] */ BOOL* /*result*/)
900 ASSERT_NOT_REACHED();
904 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDefaultChecked(
905 /* [in] */ BSTR /*checked*/)
907 ASSERT_NOT_REACHED();
911 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::form(
912 /* [retval][out] */ IDOMHTMLElement** result)
917 ASSERT(m_element && m_element->hasTagName(inputTag));
918 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
919 COMPtr<IDOMElement> domElement;
920 domElement.adoptRef(DOMHTMLElement::createInstance(inputElement->form()));
922 return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result);
926 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::accept(
927 /* [retval][out] */ BSTR* /*result*/)
929 ASSERT_NOT_REACHED();
933 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAccept(
934 /* [in] */ BSTR /*accept*/)
936 ASSERT_NOT_REACHED();
940 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::accessKey(
941 /* [retval][out] */ BSTR* /*result*/)
943 ASSERT_NOT_REACHED();
947 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAccessKey(
948 /* [in] */ BSTR /*key*/)
950 ASSERT_NOT_REACHED();
954 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::align(
955 /* [retval][out] */ BSTR* /*result*/)
957 ASSERT_NOT_REACHED();
961 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAlign(
962 /* [in] */ BSTR /*align*/)
964 ASSERT_NOT_REACHED();
968 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::alt(
969 /* [retval][out] */ BSTR* /*result*/)
971 ASSERT_NOT_REACHED();
975 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAlt(
976 /* [in] */ BSTR /*alt*/)
978 ASSERT_NOT_REACHED();
982 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::checked(
983 /* [retval][out] */ BOOL* /*result*/)
985 ASSERT_NOT_REACHED();
989 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setChecked(
990 /* [in] */ BOOL /*checked*/)
992 ASSERT_NOT_REACHED();
996 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::disabled(
997 /* [retval][out] */ BOOL* result)
999 ASSERT(m_element && m_element->hasTagName(inputTag));
1000 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1001 *result = inputElement->disabled() ? TRUE : FALSE;
1005 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDisabled(
1006 /* [in] */ BOOL /*disabled*/)
1008 ASSERT_NOT_REACHED();
1012 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::maxLength(
1013 /* [retval][out] */ int* /*result*/)
1015 ASSERT_NOT_REACHED();
1019 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setMaxLength(
1020 /* [in] */ int /*maxLength*/)
1022 ASSERT_NOT_REACHED();
1026 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::name(
1027 /* [retval][out] */ BSTR* /*name*/)
1029 ASSERT_NOT_REACHED();
1033 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setName(
1034 /* [in] */ BSTR /*name*/)
1036 ASSERT_NOT_REACHED();
1040 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::readOnly(
1041 /* [retval][out] */ BOOL* result)
1043 ASSERT(m_element && m_element->hasTagName(inputTag));
1044 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1045 *result = inputElement->readOnly() ? TRUE : FALSE;
1049 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setReadOnly(
1050 /* [in] */ BOOL /*readOnly*/)
1052 ASSERT_NOT_REACHED();
1056 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::size(
1057 /* [retval][out] */ unsigned int* /*result*/)
1059 ASSERT_NOT_REACHED();
1063 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSize(
1064 /* [in] */ unsigned int /*size*/)
1066 ASSERT_NOT_REACHED();
1070 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::src(
1071 /* [retval][out] */ BSTR* /*result*/)
1073 ASSERT_NOT_REACHED();
1077 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSrc(
1078 /* [in] */ BSTR /*src*/)
1080 ASSERT_NOT_REACHED();
1084 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::tabIndex(
1085 /* [retval][out] */ int* /*result*/)
1087 ASSERT_NOT_REACHED();
1091 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setTabIndex(
1092 /* [in] */ int /*tabIndex*/)
1094 ASSERT_NOT_REACHED();
1098 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::type(
1099 /* [retval][out] */ BSTR* /*result*/)
1101 ASSERT_NOT_REACHED();
1105 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setType(
1106 /* [in] */ BSTR type)
1108 ASSERT(m_element && m_element->hasTagName(inputTag));
1109 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1110 WebCore::String typeString(type, SysStringLen(type));
1111 inputElement->setType(typeString);
1115 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::useMap(
1116 /* [retval][out] */ BSTR* /*result*/)
1118 ASSERT_NOT_REACHED();
1122 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setUseMap(
1123 /* [in] */ BSTR /*useMap*/)
1125 ASSERT_NOT_REACHED();
1129 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::value(
1130 /* [retval][out] */ BSTR* result)
1132 ASSERT(m_element && m_element->hasTagName(inputTag));
1133 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1134 WebCore::String valueString = inputElement->value();
1135 *result = BString(valueString.characters(), valueString.length()).release();
1136 if (valueString.length() && !*result)
1137 return E_OUTOFMEMORY;
1141 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setValue(
1142 /* [in] */ BSTR value)
1144 ASSERT(m_element && m_element->hasTagName(inputTag));
1145 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1146 inputElement->setValue(String((UChar*) value, SysStringLen(value)));
1150 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::select( void)
1152 ASSERT(m_element && m_element->hasTagName(inputTag));
1153 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1154 inputElement->select();
1158 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::click( void)
1160 ASSERT_NOT_REACHED();
1164 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSelectionStart(
1165 /* [in] */ long start)
1167 ASSERT(m_element && m_element->hasTagName(inputTag));
1168 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1169 inputElement->setSelectionStart(start);
1173 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectionStart(
1174 /* [retval][out] */ long *start)
1176 ASSERT(m_element && m_element->hasTagName(inputTag));
1177 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1178 *start = inputElement->selectionStart();
1182 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSelectionEnd(
1183 /* [in] */ long end)
1185 ASSERT(m_element && m_element->hasTagName(inputTag));
1186 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1187 inputElement->setSelectionEnd(end);
1191 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectionEnd(
1192 /* [retval][out] */ long *end)
1194 ASSERT(m_element && m_element->hasTagName(inputTag));
1195 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1196 *end = inputElement->selectionEnd();
1200 // DOMHTMLInputElement -- IFormsAutoFillTransition ----------------------------
1202 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isTextField(
1203 /* [retval][out] */ BOOL* result)
1205 ASSERT(m_element && m_element->hasTagName(inputTag));
1206 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1207 *result = inputElement->isTextField() ? TRUE : FALSE;
1211 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::rectOnScreen(
1212 /* [retval][out] */ LPRECT rect)
1214 rect->left = rect->top = rect->right = rect->bottom = 0;
1215 RenderObject* renderer = m_element->renderer();
1216 FrameView* view = m_element->document()->view();
1217 if (!renderer || !view)
1220 IntRect coreRect = renderer->absoluteBoundingBoxRect();
1221 coreRect.setLocation(view->contentsToWindow(coreRect.location()));
1222 rect->left = coreRect.x();
1223 rect->top = coreRect.y();
1224 rect->right = coreRect.right();
1225 rect->bottom = coreRect.bottom();
1229 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::replaceCharactersInRange(
1230 /* [in] */ int /*startTarget*/,
1231 /* [in] */ int /*endTarget*/,
1232 /* [in] */ BSTR /*replacementString*/,
1233 /* [in] */ int /*index*/)
1235 ASSERT_NOT_REACHED();
1239 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectedRange(
1240 /* [out] */ int* start,
1241 /* [out] */ int* end)
1243 ASSERT(m_element && m_element->hasTagName(inputTag));
1244 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1245 *start = inputElement->selectionStart();
1246 *end = inputElement->selectionEnd();
1250 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAutofilled(
1251 /* [in] */ BOOL filled)
1253 ASSERT(m_element && m_element->hasTagName(inputTag));
1254 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1255 inputElement->setAutofilled(!!filled);
1259 // DOMHTMLInputElement -- IFormPromptAdditions ------------------------------------
1261 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isUserEdited(
1262 /* [retval][out] */ BOOL *result)
1269 BOOL textField = FALSE;
1270 if (FAILED(isTextField(&textField)) || !textField)
1272 RenderObject* renderer = m_element->renderer();
1273 if (renderer && static_cast<WebCore::RenderTextControl*>(renderer)->isUserEdited())
1278 // DOMHTMLTextAreaElement - IUnknown ----------------------------------------------
1280 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::QueryInterface(REFIID riid, void** ppvObject)
1283 if (IsEqualGUID(riid, IID_IDOMHTMLTextAreaElement))
1284 *ppvObject = static_cast<IDOMHTMLTextAreaElement*>(this);
1285 else if (IsEqualGUID(riid, IID_IFormPromptAdditions))
1286 *ppvObject = static_cast<IFormPromptAdditions*>(this);
1288 return DOMHTMLElement::QueryInterface(riid, ppvObject);
1294 // DOMHTMLTextAreaElement -----------------------------------------------------
1296 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::defaultValue(
1297 /* [retval][out] */ BSTR* /*result*/)
1299 ASSERT_NOT_REACHED();
1303 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setDefaultValue(
1304 /* [in] */ BSTR /*val*/)
1306 ASSERT_NOT_REACHED();
1310 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::form(
1311 /* [retval][out] */ IDOMHTMLElement** result)
1316 ASSERT(m_element && m_element->hasTagName(textareaTag));
1317 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1318 COMPtr<IDOMElement> domElement;
1319 domElement.adoptRef(DOMHTMLElement::createInstance(textareaElement->form()));
1321 return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result);
1325 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::accessKey(
1326 /* [retval][out] */ BSTR* /*result*/)
1328 ASSERT_NOT_REACHED();
1332 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setAccessKey(
1333 /* [in] */ BSTR /*key*/)
1335 ASSERT_NOT_REACHED();
1339 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::cols(
1340 /* [retval][out] */ int* /*result*/)
1342 ASSERT_NOT_REACHED();
1346 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setCols(
1347 /* [in] */ int /*cols*/)
1349 ASSERT_NOT_REACHED();
1353 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::disabled(
1354 /* [retval][out] */ BOOL* /*result*/)
1356 ASSERT_NOT_REACHED();
1360 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setDisabled(
1361 /* [in] */ BOOL /*disabled*/)
1363 ASSERT_NOT_REACHED();
1367 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::name(
1368 /* [retval][out] */ BSTR* /*name*/)
1370 ASSERT_NOT_REACHED();
1374 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setName(
1375 /* [in] */ BSTR /*name*/)
1377 ASSERT_NOT_REACHED();
1381 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::readOnly(
1382 /* [retval][out] */ BOOL* /*result*/)
1384 ASSERT_NOT_REACHED();
1388 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setReadOnly(
1389 /* [in] */ BOOL /*readOnly*/)
1391 ASSERT_NOT_REACHED();
1395 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::rows(
1396 /* [retval][out] */ int* /*result*/)
1398 ASSERT_NOT_REACHED();
1402 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setRows(
1403 /* [in] */ int /*rows*/)
1405 ASSERT_NOT_REACHED();
1409 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::tabIndex(
1410 /* [retval][out] */ int* /*result*/)
1412 ASSERT_NOT_REACHED();
1416 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setTabIndex(
1417 /* [in] */ int /*tabIndex*/)
1419 ASSERT_NOT_REACHED();
1423 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::type(
1424 /* [retval][out] */ BSTR* /*result*/)
1426 ASSERT_NOT_REACHED();
1430 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::value(
1431 /* [retval][out] */ BSTR* result)
1433 ASSERT(m_element && m_element->hasTagName(textareaTag));
1434 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1435 WebCore::String valueString = textareaElement->value();
1436 *result = BString(valueString.characters(), valueString.length()).release();
1437 if (valueString.length() && !*result)
1438 return E_OUTOFMEMORY;
1442 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setValue(
1443 /* [in] */ BSTR value)
1445 ASSERT(m_element && m_element->hasTagName(textareaTag));
1446 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1447 textareaElement->setValue(String((UChar*) value, SysStringLen(value)));
1451 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::select( void)
1453 ASSERT(m_element && m_element->hasTagName(textareaTag));
1454 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1455 textareaElement->select();
1459 // DOMHTMLTextAreaElement -- IFormPromptAdditions ------------------------------------
1461 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::isUserEdited(
1462 /* [retval][out] */ BOOL *result)
1469 RenderObject* renderer = m_element->renderer();
1470 if (renderer && static_cast<WebCore::RenderTextControl*>(renderer)->isUserEdited())