2 * Copyright (C) 2006, 2007, 2009 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 #include <WebCore/BString.h>
32 #include <WebCore/COMPtr.h>
33 #include <WebCore/Document.h>
34 #include <WebCore/Element.h>
35 #include <WebCore/FrameView.h>
36 #include <WebCore/HTMLCollection.h>
37 #include <WebCore/HTMLDocument.h>
38 #include <WebCore/HTMLFormElement.h>
39 #include <WebCore/HTMLIFrameElement.h>
40 #include <WebCore/HTMLInputElement.h>
41 #include <WebCore/HTMLNames.h>
42 #include <WebCore/HTMLOptionElement.h>
43 #include <WebCore/HTMLOptionsCollection.h>
44 #include <WebCore/HTMLSelectElement.h>
45 #include <WebCore/HTMLTextAreaElement.h>
46 #include <WebCore/IntRect.h>
47 #include <WebCore/RenderObject.h>
48 #include <WebCore/RenderTextControl.h>
50 using namespace WebCore;
51 using namespace HTMLNames;
55 DOMHTMLCollection::DOMHTMLCollection(WebCore::HTMLCollection* c)
60 IDOMHTMLCollection* DOMHTMLCollection::createInstance(WebCore::HTMLCollection* c)
65 IDOMHTMLCollection* htmlCollection = 0;
66 DOMHTMLCollection* newCollection = new DOMHTMLCollection(c);
67 if (FAILED(newCollection->QueryInterface(IID_IDOMHTMLCollection, (void**)&htmlCollection))) {
72 return htmlCollection;
75 // DOMHTMLCollection - IUnknown -----------------------------------------------
77 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::QueryInterface(REFIID riid, void** ppvObject)
80 if (IsEqualGUID(riid, IID_IDOMHTMLCollection))
81 *ppvObject = static_cast<IDOMHTMLCollection*>(this);
83 return DOMObject::QueryInterface(riid, ppvObject);
89 // DOMHTMLCollection ----------------------------------------------------------
91 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::length(
92 /* [retval][out] */ UINT* result)
98 *result = m_collection->length();
102 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::item(
103 /* [in] */ UINT index,
104 /* [retval][out] */ IDOMNode** node)
110 *node = DOMNode::createInstance(m_collection->item(index));
111 return *node ? S_OK : E_FAIL;
114 HRESULT STDMETHODCALLTYPE DOMHTMLCollection::namedItem(
115 /* [in] */ BSTR /*name*/,
116 /* [retval][out] */ IDOMNode** /*node*/)
118 ASSERT_NOT_REACHED();
122 // DOMHTMLOptionsCollection - IUnknown ----------------------------------------
124 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::QueryInterface(REFIID riid, void** ppvObject)
127 if (IsEqualGUID(riid, IID_IDOMHTMLOptionsCollection))
128 *ppvObject = static_cast<IDOMHTMLOptionsCollection*>(this);
130 return DOMObject::QueryInterface(riid, ppvObject);
136 // DOMHTMLOptionsCollection ---------------------------------------------------
138 DOMHTMLOptionsCollection::DOMHTMLOptionsCollection(WebCore::HTMLOptionsCollection* collection)
139 : m_collection(collection)
143 IDOMHTMLOptionsCollection* DOMHTMLOptionsCollection::createInstance(WebCore::HTMLOptionsCollection* collection)
148 IDOMHTMLOptionsCollection* optionsCollection = 0;
149 DOMHTMLOptionsCollection* newCollection = new DOMHTMLOptionsCollection(collection);
150 if (FAILED(newCollection->QueryInterface(IID_IDOMHTMLOptionsCollection, (void**)&optionsCollection))) {
151 delete newCollection;
155 return optionsCollection;
158 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::length(
159 /* [retval][out] */ unsigned int* result)
164 *result = m_collection->length();
168 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::setLength(
169 /* [in] */ unsigned int /*length*/)
171 ASSERT_NOT_REACHED();
175 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::item(
176 /* [in] */ unsigned int index,
177 /* [retval][out] */ IDOMNode** result)
182 *result = DOMNode::createInstance(m_collection->item(index));
184 return *result ? S_OK : E_FAIL;
187 HRESULT STDMETHODCALLTYPE DOMHTMLOptionsCollection::namedItem(
188 /* [in] */ BSTR /*name*/,
189 /* [retval][out] */ IDOMNode** /*result*/)
191 ASSERT_NOT_REACHED();
195 // DOMHTMLDocument - IUnknown -------------------------------------------------
197 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::QueryInterface(REFIID riid, void** ppvObject)
200 if (IsEqualGUID(riid, IID_IDOMHTMLDocument))
201 *ppvObject = static_cast<IDOMHTMLDocument*>(this);
203 return DOMDocument::QueryInterface(riid, ppvObject);
209 // DOMHTMLDocument ------------------------------------------------------------
211 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::title(
212 /* [retval][out] */ BSTR* result)
219 if (!m_document || !m_document->isHTMLDocument())
222 *result = BString(m_document->title()).release();
226 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setTitle(
227 /* [in] */ BSTR /*title*/)
229 ASSERT_NOT_REACHED();
233 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::referrer(
234 /* [retval][out] */ BSTR* /*result*/)
236 ASSERT_NOT_REACHED();
240 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::domain(
241 /* [retval][out] */ BSTR* /*result*/)
243 ASSERT_NOT_REACHED();
247 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::URL(
248 /* [retval][out] */ BSTR* result)
253 *result = BString(static_cast<HTMLDocument*>(m_document)->url()).release();
257 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::body(
258 /* [retval][out] */ IDOMHTMLElement** bodyElement)
261 if (!m_document || !m_document->isHTMLDocument())
264 HTMLDocument* htmlDoc = static_cast<HTMLDocument*>(m_document);
265 COMPtr<IDOMElement> domElement;
266 domElement.adoptRef(DOMHTMLElement::createInstance(htmlDoc->body()));
268 return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) bodyElement);
272 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setBody(
273 /* [in] */ IDOMHTMLElement* /*body*/)
275 ASSERT_NOT_REACHED();
279 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::images(
280 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
282 ASSERT_NOT_REACHED();
286 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::applets(
287 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
289 ASSERT_NOT_REACHED();
293 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::links(
294 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
296 ASSERT_NOT_REACHED();
300 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::forms(
301 /* [retval][out] */ IDOMHTMLCollection** collection)
304 if (!m_document || !m_document->isHTMLDocument())
307 HTMLDocument* htmlDoc = static_cast<HTMLDocument*>(m_document);
308 RefPtr<HTMLCollection> forms = htmlDoc->forms();
309 *collection = DOMHTMLCollection::createInstance(forms.get());
313 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::anchors(
314 /* [retval][out] */ IDOMHTMLCollection** /*collection*/)
316 ASSERT_NOT_REACHED();
320 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::cookie(
321 /* [retval][out] */ BSTR* /*result*/)
323 ASSERT_NOT_REACHED();
327 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::setCookie(
328 /* [in] */ BSTR /*cookie*/)
330 ASSERT_NOT_REACHED();
334 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::open( void)
336 ASSERT_NOT_REACHED();
340 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::close( void)
342 ASSERT_NOT_REACHED();
346 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::write(
347 /* [in] */ BSTR /*text*/)
349 ASSERT_NOT_REACHED();
353 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::writeln(
354 /* [in] */ BSTR /*text*/)
356 ASSERT_NOT_REACHED();
360 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::getElementById_(
361 /* [in] */ BSTR /*elementId*/,
362 /* [retval][out] */ IDOMElement** /*element*/)
364 ASSERT_NOT_REACHED();
368 HRESULT STDMETHODCALLTYPE DOMHTMLDocument::getElementsByName(
369 /* [in] */ BSTR /*elementName*/,
370 /* [retval][out] */ IDOMNodeList** /*nodeList*/)
372 ASSERT_NOT_REACHED();
376 // DOMHTMLElement - IUnknown --------------------------------------------------
378 HRESULT STDMETHODCALLTYPE DOMHTMLElement::QueryInterface(REFIID riid, void** ppvObject)
381 if (IsEqualGUID(riid, IID_IDOMHTMLElement))
382 *ppvObject = static_cast<IDOMHTMLElement*>(this);
384 return DOMElement::QueryInterface(riid, ppvObject);
390 // DOMHTMLElement -------------------------------------------------------------
392 HRESULT STDMETHODCALLTYPE DOMHTMLElement::idName(
393 /* [retval][out] */ BSTR* result)
398 ASSERT(m_element && m_element->isHTMLElement());
399 String idString = static_cast<HTMLElement*>(m_element)->getAttribute(idAttr);
400 *result = BString(idString).release();
404 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setIdName(
405 /* [in] */ BSTR /*idName*/)
407 ASSERT_NOT_REACHED();
411 HRESULT STDMETHODCALLTYPE DOMHTMLElement::title(
412 /* [retval][out] */ BSTR* /*result*/)
414 ASSERT_NOT_REACHED();
418 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setTitle(
419 /* [in] */ BSTR /*title*/)
421 ASSERT_NOT_REACHED();
425 HRESULT STDMETHODCALLTYPE DOMHTMLElement::lang(
426 /* [retval][out] */ BSTR* /*result*/)
428 ASSERT_NOT_REACHED();
432 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setLang(
433 /* [in] */ BSTR /*lang*/)
435 ASSERT_NOT_REACHED();
439 HRESULT STDMETHODCALLTYPE DOMHTMLElement::dir(
440 /* [retval][out] */ BSTR* /*result*/)
442 ASSERT_NOT_REACHED();
446 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setDir(
447 /* [in] */ BSTR /*dir*/)
449 ASSERT_NOT_REACHED();
453 HRESULT STDMETHODCALLTYPE DOMHTMLElement::className(
454 /* [retval][out] */ BSTR* /*result*/)
456 ASSERT_NOT_REACHED();
460 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setClassName(
461 /* [in] */ BSTR /*className*/)
463 ASSERT_NOT_REACHED();
467 HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerHTML(
468 /* [retval][out] */ BSTR* /*result*/)
470 ASSERT_NOT_REACHED();
474 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerHTML(
475 /* [in] */ BSTR /*html*/)
477 ASSERT_NOT_REACHED();
481 HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerText(
482 /* [retval][out] */ BSTR* result)
484 ASSERT(m_element && m_element->isHTMLElement());
485 WTF::String innerTextString = static_cast<HTMLElement*>(m_element)->innerText();
486 *result = BString(innerTextString.characters(), innerTextString.length()).release();
490 HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerText(
491 /* [in] */ BSTR text)
493 ASSERT(m_element && m_element->isHTMLElement());
494 HTMLElement* htmlEle = static_cast<HTMLElement*>(m_element);
495 WTF::String textString(text, SysStringLen(text));
496 WebCore::ExceptionCode ec = 0;
497 htmlEle->setInnerText(textString, ec);
501 // DOMHTMLFormElement - IUnknown ----------------------------------------------
503 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::QueryInterface(REFIID riid, void** ppvObject)
506 if (IsEqualGUID(riid, IID_IDOMHTMLFormElement))
507 *ppvObject = static_cast<IDOMHTMLFormElement*>(this);
509 return DOMHTMLElement::QueryInterface(riid, ppvObject);
515 // DOMHTMLFormElement ---------------------------------------------------------
517 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::elements(
518 /* [retval][out] */ IDOMHTMLCollection** /*result*/)
520 ASSERT_NOT_REACHED();
524 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::length(
525 /* [retval][out] */ int* /*result*/)
527 ASSERT_NOT_REACHED();
531 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::name(
532 /* [retval][out] */ BSTR* /*result*/)
534 ASSERT_NOT_REACHED();
538 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setName(
539 /* [in] */ BSTR /*name*/)
541 ASSERT_NOT_REACHED();
545 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::acceptCharset(
546 /* [retval][out] */ BSTR* /*result*/)
548 ASSERT_NOT_REACHED();
552 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setAcceptCharset(
553 /* [in] */ BSTR /*acceptCharset*/)
555 ASSERT_NOT_REACHED();
559 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::action(
560 /* [retval][out] */ BSTR* result)
562 ASSERT(m_element && m_element->hasTagName(formTag));
563 WTF::String actionString = static_cast<HTMLFormElement*>(m_element)->action();
564 *result = BString(actionString.characters(), actionString.length()).release();
568 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setAction(
569 /* [in] */ BSTR /*action*/)
571 ASSERT_NOT_REACHED();
575 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::encType(
576 /* [retval][out] */ BSTR* /*result*/)
578 ASSERT_NOT_REACHED();
582 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setEnctype(
583 /* [retval][out] */ BSTR* /*encType*/)
585 ASSERT_NOT_REACHED();
589 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::method(
590 /* [retval][out] */ BSTR* result)
592 ASSERT(m_element && m_element->hasTagName(formTag));
593 WTF::String methodString = static_cast<HTMLFormElement*>(m_element)->method();
594 *result = BString(methodString.characters(), methodString.length()).release();
598 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setMethod(
599 /* [in] */ BSTR /*method*/)
601 ASSERT_NOT_REACHED();
605 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::target(
606 /* [retval][out] */ BSTR* /*result*/)
608 ASSERT_NOT_REACHED();
612 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::setTarget(
613 /* [in] */ BSTR /*target*/)
615 ASSERT_NOT_REACHED();
619 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::submit( void)
621 ASSERT_NOT_REACHED();
625 HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::reset( void)
627 ASSERT_NOT_REACHED();
631 // DOMHTMLSelectElement - IUnknown ----------------------------------------------
633 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::QueryInterface(REFIID riid, void** ppvObject)
636 if (IsEqualGUID(riid, IID_IDOMHTMLSelectElement))
637 *ppvObject = static_cast<IDOMHTMLSelectElement*>(this);
638 else if (IsEqualGUID(riid, IID_IFormsAutoFillTransitionSelect))
639 *ppvObject = static_cast<IFormsAutoFillTransitionSelect*>(this);
641 return DOMHTMLElement::QueryInterface(riid, ppvObject);
647 // DOMHTMLSelectElement -------------------------------------------------------
649 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::type(
650 /* [retval][out] */ BSTR* /*result*/)
652 ASSERT_NOT_REACHED();
656 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::selectedIndex(
657 /* [retval][out] */ int* /*result*/)
659 ASSERT_NOT_REACHED();
663 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setSelectedIndx(
664 /* [in] */ int /*selectedIndex*/)
666 ASSERT_NOT_REACHED();
670 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::value(
671 /* [retval][out] */ BSTR* /*result*/)
673 ASSERT_NOT_REACHED();
677 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setValue(
678 /* [in] */ BSTR /*value*/)
680 ASSERT_NOT_REACHED();
684 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::length(
685 /* [retval][out] */ int* /*result*/)
687 ASSERT_NOT_REACHED();
691 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::form(
692 /* [retval][out] */ IDOMHTMLFormElement** /*result*/)
694 ASSERT_NOT_REACHED();
698 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::options(
699 /* [retval][out] */ IDOMHTMLOptionsCollection** result)
707 ASSERT(m_element->hasTagName(selectTag));
708 HTMLSelectElement* selectElement = static_cast<HTMLSelectElement*>(m_element);
710 if (!selectElement->options())
713 RefPtr<HTMLOptionsCollection> options = selectElement->options();
714 *result = DOMHTMLOptionsCollection::createInstance(options.get());
718 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::disabled(
719 /* [retval][out] */ BOOL* /*result*/)
721 ASSERT_NOT_REACHED();
725 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setDisabled(
726 /* [in] */ BOOL /*disabled*/)
728 ASSERT_NOT_REACHED();
732 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::multiple(
733 /* [retval][out] */ BOOL* /*result*/)
735 ASSERT_NOT_REACHED();
739 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setMultiple(
740 /* [in] */ BOOL /*multiple*/)
742 ASSERT_NOT_REACHED();
746 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::name(
747 /* [retval][out] */ BSTR* /*result*/)
749 ASSERT_NOT_REACHED();
753 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setName(
754 /* [in] */ BSTR /*name*/)
756 ASSERT_NOT_REACHED();
760 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::size(
761 /* [retval][out] */ int* /*size*/)
763 ASSERT_NOT_REACHED();
767 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setSize(
768 /* [in] */ int /*size*/)
770 ASSERT_NOT_REACHED();
774 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::tabIndex(
775 /* [retval][out] */ int* /*result*/)
777 ASSERT_NOT_REACHED();
781 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::setTabIndex(
782 /* [in] */ int /*tabIndex*/)
784 ASSERT_NOT_REACHED();
788 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::add(
789 /* [in] */ IDOMHTMLElement* /*element*/,
790 /* [in] */ IDOMHTMLElement* /*before*/)
792 ASSERT_NOT_REACHED();
796 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::remove(
797 /* [in] */ int /*index*/)
799 ASSERT_NOT_REACHED();
803 // DOMHTMLSelectElement - IFormsAutoFillTransitionSelect ----------------------
805 HRESULT STDMETHODCALLTYPE DOMHTMLSelectElement::activateItemAtIndex(
806 /* [in] */ int index)
809 ASSERT(m_element->hasTagName(selectTag));
810 HTMLSelectElement* selectElement = static_cast<HTMLSelectElement*>(m_element);
812 if (index >= selectElement->length())
815 selectElement->setSelectedIndex(index);
819 // DOMHTMLOptionElement - IUnknown --------------------------------------------
821 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::QueryInterface(REFIID riid, void** ppvObject)
824 if (IsEqualGUID(riid, IID_IDOMHTMLOptionElement))
825 *ppvObject = static_cast<IDOMHTMLOptionElement*>(this);
827 return DOMHTMLElement::QueryInterface(riid, ppvObject);
833 // DOMHTMLOptionElement -------------------------------------------------------
835 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::form(
836 /* [retval][out] */ IDOMHTMLFormElement** /*result*/)
838 ASSERT_NOT_REACHED();
842 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::defaultSelected(
843 /* [retval][out] */ BOOL* /*result*/)
845 ASSERT_NOT_REACHED();
849 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setDefaultSelected(
850 /* [in] */ BOOL /*defaultSelected*/)
852 ASSERT_NOT_REACHED();
856 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::text(
857 /* [retval][out] */ BSTR* result)
865 ASSERT(m_element->hasTagName(optionTag));
866 HTMLOptionElement* optionElement = static_cast<HTMLOptionElement*>(m_element);
868 *result = BString(optionElement->text()).release();
872 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::index(
873 /* [retval][out] */ int* /*result*/)
875 ASSERT_NOT_REACHED();
879 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::disabled(
880 /* [retval][out] */ BOOL* /*result*/)
882 ASSERT_NOT_REACHED();
886 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setDisabled(
887 /* [in] */ BOOL /*disabled*/)
889 ASSERT_NOT_REACHED();
893 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::label(
894 /* [retval][out] */ BSTR* result)
902 ASSERT(m_element->hasTagName(optionTag));
903 HTMLOptionElement* optionElement = static_cast<HTMLOptionElement*>(m_element);
905 *result = BString(optionElement->label()).release();
909 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setLabel(
910 /* [in] */ BSTR /*label*/)
912 ASSERT_NOT_REACHED();
916 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::selected(
917 /* [retval][out] */ BOOL* /*result*/)
919 ASSERT_NOT_REACHED();
923 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setSelected(
924 /* [in] */ BOOL /*selected*/)
926 ASSERT_NOT_REACHED();
930 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::value(
931 /* [retval][out] */ BSTR* /*result*/)
933 ASSERT_NOT_REACHED();
937 HRESULT STDMETHODCALLTYPE DOMHTMLOptionElement::setValue(
938 /* [in] */ BSTR /*value*/)
940 ASSERT_NOT_REACHED();
944 // DOMHTMLInputElement - IUnknown ----------------------------------------------
946 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::QueryInterface(REFIID riid, void** ppvObject)
949 if (IsEqualGUID(riid, IID_IDOMHTMLInputElement))
950 *ppvObject = static_cast<IDOMHTMLInputElement*>(this);
951 else if (IsEqualGUID(riid, IID_IFormsAutoFillTransition))
952 *ppvObject = static_cast<IFormsAutoFillTransition*>(this);
953 else if (IsEqualGUID(riid, IID_IFormPromptAdditions))
954 *ppvObject = static_cast<IFormPromptAdditions*>(this);
956 return DOMHTMLElement::QueryInterface(riid, ppvObject);
962 // DOMHTMLInputElement --------------------------------------------------------
964 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::defaultValue(
965 /* [retval][out] */ BSTR* /*result*/)
967 ASSERT_NOT_REACHED();
971 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDefaultValue(
972 /* [in] */ BSTR /*val*/)
974 ASSERT_NOT_REACHED();
978 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::defaultChecked(
979 /* [retval][out] */ BOOL* /*result*/)
981 ASSERT_NOT_REACHED();
985 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDefaultChecked(
986 /* [in] */ BSTR /*checked*/)
988 ASSERT_NOT_REACHED();
992 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::form(
993 /* [retval][out] */ IDOMHTMLElement** result)
998 ASSERT(m_element && m_element->hasTagName(inputTag));
999 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1000 COMPtr<IDOMElement> domElement;
1001 domElement.adoptRef(DOMHTMLElement::createInstance(inputElement->form()));
1003 return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result);
1007 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::accept(
1008 /* [retval][out] */ BSTR* /*result*/)
1010 ASSERT_NOT_REACHED();
1014 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAccept(
1015 /* [in] */ BSTR /*accept*/)
1017 ASSERT_NOT_REACHED();
1021 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::accessKey(
1022 /* [retval][out] */ BSTR* /*result*/)
1024 ASSERT_NOT_REACHED();
1028 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAccessKey(
1029 /* [in] */ BSTR /*key*/)
1031 ASSERT_NOT_REACHED();
1035 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::align(
1036 /* [retval][out] */ BSTR* /*result*/)
1038 ASSERT_NOT_REACHED();
1042 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAlign(
1043 /* [in] */ BSTR /*align*/)
1045 ASSERT_NOT_REACHED();
1049 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::alt(
1050 /* [retval][out] */ BSTR* /*result*/)
1052 ASSERT_NOT_REACHED();
1056 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAlt(
1057 /* [in] */ BSTR /*alt*/)
1059 ASSERT_NOT_REACHED();
1063 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::checked(
1064 /* [retval][out] */ BOOL* /*result*/)
1066 ASSERT_NOT_REACHED();
1070 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setChecked(
1071 /* [in] */ BOOL /*checked*/)
1073 ASSERT_NOT_REACHED();
1077 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::disabled(
1078 /* [retval][out] */ BOOL* result)
1080 ASSERT(m_element && m_element->hasTagName(inputTag));
1081 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1082 *result = inputElement->disabled() ? TRUE : FALSE;
1086 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setDisabled(
1087 /* [in] */ BOOL /*disabled*/)
1089 ASSERT_NOT_REACHED();
1093 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::maxLength(
1094 /* [retval][out] */ int* /*result*/)
1096 ASSERT_NOT_REACHED();
1100 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setMaxLength(
1101 /* [in] */ int /*maxLength*/)
1103 ASSERT_NOT_REACHED();
1107 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::name(
1108 /* [retval][out] */ BSTR* /*name*/)
1110 ASSERT_NOT_REACHED();
1114 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setName(
1115 /* [in] */ BSTR /*name*/)
1117 ASSERT_NOT_REACHED();
1121 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::readOnly(
1122 /* [retval][out] */ BOOL* result)
1124 ASSERT(m_element && m_element->hasTagName(inputTag));
1125 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1126 *result = inputElement->readOnly() ? TRUE : FALSE;
1130 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setReadOnly(
1131 /* [in] */ BOOL /*readOnly*/)
1133 ASSERT_NOT_REACHED();
1137 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::size(
1138 /* [retval][out] */ unsigned int* /*result*/)
1140 ASSERT_NOT_REACHED();
1144 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSize(
1145 /* [in] */ unsigned int /*size*/)
1147 ASSERT_NOT_REACHED();
1151 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::src(
1152 /* [retval][out] */ BSTR* /*result*/)
1154 ASSERT_NOT_REACHED();
1158 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSrc(
1159 /* [in] */ BSTR /*src*/)
1161 ASSERT_NOT_REACHED();
1165 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::tabIndex(
1166 /* [retval][out] */ int* /*result*/)
1168 ASSERT_NOT_REACHED();
1172 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setTabIndex(
1173 /* [in] */ int /*tabIndex*/)
1175 ASSERT_NOT_REACHED();
1179 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::type(
1180 /* [retval][out] */ BSTR* /*result*/)
1182 ASSERT_NOT_REACHED();
1186 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setType(
1187 /* [in] */ BSTR type)
1189 ASSERT(m_element && m_element->hasTagName(inputTag));
1190 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1191 WTF::String typeString(type, SysStringLen(type));
1192 inputElement->setType(typeString);
1196 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::useMap(
1197 /* [retval][out] */ BSTR* /*result*/)
1199 ASSERT_NOT_REACHED();
1203 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setUseMap(
1204 /* [in] */ BSTR /*useMap*/)
1206 ASSERT_NOT_REACHED();
1210 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::value(
1211 /* [retval][out] */ BSTR* result)
1213 ASSERT(m_element && m_element->hasTagName(inputTag));
1214 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1215 WTF::String valueString = inputElement->value();
1216 *result = BString(valueString.characters(), valueString.length()).release();
1217 if (valueString.length() && !*result)
1218 return E_OUTOFMEMORY;
1222 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setValue(
1223 /* [in] */ BSTR value)
1225 ASSERT(m_element && m_element->hasTagName(inputTag));
1226 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1227 inputElement->setValue(String((UChar*) value, SysStringLen(value)));
1231 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setValueForUser(
1232 /* [in] */ BSTR value)
1235 ASSERT(m_element->hasTagName(inputTag));
1236 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1237 inputElement->setValueForUser(String(static_cast<UChar*>(value), SysStringLen(value)));
1241 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::select( void)
1243 ASSERT(m_element && m_element->hasTagName(inputTag));
1244 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1245 inputElement->select();
1249 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::click( void)
1251 ASSERT_NOT_REACHED();
1255 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSelectionStart(
1256 /* [in] */ long start)
1258 ASSERT(m_element && m_element->hasTagName(inputTag));
1259 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1260 inputElement->setSelectionStart(start);
1264 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectionStart(
1265 /* [retval][out] */ long *start)
1267 ASSERT(m_element && m_element->hasTagName(inputTag));
1268 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1269 *start = inputElement->selectionStart();
1273 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setSelectionEnd(
1274 /* [in] */ long end)
1276 ASSERT(m_element && m_element->hasTagName(inputTag));
1277 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1278 inputElement->setSelectionEnd(end);
1282 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectionEnd(
1283 /* [retval][out] */ long *end)
1285 ASSERT(m_element && m_element->hasTagName(inputTag));
1286 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1287 *end = inputElement->selectionEnd();
1291 // DOMHTMLInputElement -- IFormsAutoFillTransition ----------------------------
1293 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isTextField(
1294 /* [retval][out] */ BOOL* result)
1297 ASSERT(m_element->hasTagName(inputTag));
1298 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1299 *result = inputElement->isTextField() ? TRUE : FALSE;
1303 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::rectOnScreen(
1304 /* [retval][out] */ LPRECT rect)
1307 ASSERT(m_element->hasTagName(inputTag));
1308 rect->left = rect->top = rect->right = rect->bottom = 0;
1309 RenderObject* renderer = m_element->renderer();
1310 FrameView* view = m_element->document()->view();
1311 if (!renderer || !view)
1314 IntRect coreRect = view->contentsToScreen(renderer->absoluteBoundingBoxRect());
1315 rect->left = coreRect.x();
1316 rect->top = coreRect.y();
1317 rect->right = coreRect.maxX();
1318 rect->bottom = coreRect.maxY();
1323 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::replaceCharactersInRange(
1324 /* [in] */ int startTarget,
1325 /* [in] */ int endTarget,
1326 /* [in] */ BSTR replacementString,
1327 /* [in] */ int index)
1329 if (!replacementString)
1333 ASSERT(m_element->hasTagName(inputTag));
1334 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1336 String newValue = inputElement->value();
1337 String webCoreReplacementString(static_cast<UChar*>(replacementString), SysStringLen(replacementString));
1338 newValue.replace(startTarget, endTarget - startTarget, webCoreReplacementString);
1339 inputElement->setValue(newValue);
1340 inputElement->setSelectionRange(index, newValue.length());
1345 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::selectedRange(
1346 /* [out] */ int* start,
1347 /* [out] */ int* end)
1350 ASSERT(m_element->hasTagName(inputTag));
1351 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1352 *start = inputElement->selectionStart();
1353 *end = inputElement->selectionEnd();
1357 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setAutofilled(
1358 /* [in] */ BOOL filled)
1361 ASSERT(m_element->hasTagName(inputTag));
1362 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1363 inputElement->setAutofilled(!!filled);
1367 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isAutofilled(
1368 /* [retval][out] */ BOOL* result)
1371 ASSERT(m_element->hasTagName(inputTag));
1372 HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
1373 *result = inputElement->isAutofilled() ? TRUE : FALSE;
1377 // DOMHTMLInputElement -- IFormPromptAdditions ------------------------------------
1379 HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isUserEdited(
1380 /* [retval][out] */ BOOL *result)
1386 ASSERT(m_element && m_element->hasTagName(inputTag));
1387 BOOL textField = FALSE;
1388 if (FAILED(isTextField(&textField)) || !textField)
1390 if (static_cast<HTMLInputElement*>(m_element)->lastChangeWasUserEdit())
1395 // DOMHTMLTextAreaElement - IUnknown ----------------------------------------------
1397 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::QueryInterface(REFIID riid, void** ppvObject)
1400 if (IsEqualGUID(riid, IID_IDOMHTMLTextAreaElement))
1401 *ppvObject = static_cast<IDOMHTMLTextAreaElement*>(this);
1402 else if (IsEqualGUID(riid, IID_IFormPromptAdditions))
1403 *ppvObject = static_cast<IFormPromptAdditions*>(this);
1405 return DOMHTMLElement::QueryInterface(riid, ppvObject);
1411 // DOMHTMLTextAreaElement -----------------------------------------------------
1413 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::defaultValue(
1414 /* [retval][out] */ BSTR* /*result*/)
1416 ASSERT_NOT_REACHED();
1420 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setDefaultValue(
1421 /* [in] */ BSTR /*val*/)
1423 ASSERT_NOT_REACHED();
1427 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::form(
1428 /* [retval][out] */ IDOMHTMLElement** result)
1433 ASSERT(m_element && m_element->hasTagName(textareaTag));
1434 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1435 COMPtr<IDOMElement> domElement;
1436 domElement.adoptRef(DOMHTMLElement::createInstance(textareaElement->form()));
1438 return domElement->QueryInterface(IID_IDOMHTMLElement, (void**) result);
1442 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::accessKey(
1443 /* [retval][out] */ BSTR* /*result*/)
1445 ASSERT_NOT_REACHED();
1449 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setAccessKey(
1450 /* [in] */ BSTR /*key*/)
1452 ASSERT_NOT_REACHED();
1456 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::cols(
1457 /* [retval][out] */ int* /*result*/)
1459 ASSERT_NOT_REACHED();
1463 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setCols(
1464 /* [in] */ int /*cols*/)
1466 ASSERT_NOT_REACHED();
1470 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::disabled(
1471 /* [retval][out] */ BOOL* /*result*/)
1473 ASSERT_NOT_REACHED();
1477 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setDisabled(
1478 /* [in] */ BOOL /*disabled*/)
1480 ASSERT_NOT_REACHED();
1484 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::name(
1485 /* [retval][out] */ BSTR* /*name*/)
1487 ASSERT_NOT_REACHED();
1491 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setName(
1492 /* [in] */ BSTR /*name*/)
1494 ASSERT_NOT_REACHED();
1498 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::readOnly(
1499 /* [retval][out] */ BOOL* /*result*/)
1501 ASSERT_NOT_REACHED();
1505 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setReadOnly(
1506 /* [in] */ BOOL /*readOnly*/)
1508 ASSERT_NOT_REACHED();
1512 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::rows(
1513 /* [retval][out] */ int* /*result*/)
1515 ASSERT_NOT_REACHED();
1519 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setRows(
1520 /* [in] */ int /*rows*/)
1522 ASSERT_NOT_REACHED();
1526 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::tabIndex(
1527 /* [retval][out] */ int* /*result*/)
1529 ASSERT_NOT_REACHED();
1533 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setTabIndex(
1534 /* [in] */ int /*tabIndex*/)
1536 ASSERT_NOT_REACHED();
1540 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::type(
1541 /* [retval][out] */ BSTR* /*result*/)
1543 ASSERT_NOT_REACHED();
1547 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::value(
1548 /* [retval][out] */ BSTR* result)
1550 ASSERT(m_element && m_element->hasTagName(textareaTag));
1551 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1552 WTF::String valueString = textareaElement->value();
1553 *result = BString(valueString.characters(), valueString.length()).release();
1554 if (valueString.length() && !*result)
1555 return E_OUTOFMEMORY;
1559 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::setValue(
1560 /* [in] */ BSTR value)
1562 ASSERT(m_element && m_element->hasTagName(textareaTag));
1563 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1564 textareaElement->setValue(String((UChar*) value, SysStringLen(value)));
1568 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::select( void)
1570 ASSERT(m_element && m_element->hasTagName(textareaTag));
1571 HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
1572 textareaElement->select();
1576 // DOMHTMLTextAreaElement -- IFormPromptAdditions ------------------------------------
1578 HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::isUserEdited(
1579 /* [retval][out] */ BOOL *result)
1585 ASSERT(m_element && m_element->hasTagName(textareaTag));
1586 if (static_cast<HTMLTextAreaElement*>(m_element)->lastChangeWasUserEdit())
1591 // DOMHTMLIFrameElement - IUnknown --------------------------------------------------
1593 HRESULT STDMETHODCALLTYPE DOMHTMLIFrameElement::QueryInterface(REFIID riid, void** ppvObject)
1596 if (IsEqualGUID(riid, IID_IDOMHTMLIFrameElement))
1597 *ppvObject = static_cast<IDOMHTMLIFrameElement*>(this);
1599 return DOMHTMLElement::QueryInterface(riid, ppvObject);
1605 // DOMHTMLIFrameElement -------------------------------------------------------------
1607 HRESULT STDMETHODCALLTYPE DOMHTMLIFrameElement::contentFrame(
1608 /* [retval][out] */ IWebFrame **result)
1613 ASSERT(m_element && m_element->hasTagName(iframeTag));
1614 HTMLIFrameElement* iFrameElement = static_cast<HTMLIFrameElement*>(m_element);
1615 COMPtr<IWebFrame> webFrame = kit(iFrameElement->contentFrame());
1618 return webFrame.copyRefTo(result);