2 * Copyright 2006 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
30 #include "wine/debug.h"
32 #include "mshtml_private.h"
33 #include "htmlevent.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(mshtml
);
37 struct HTMLInputElement
{
40 IHTMLInputElement IHTMLInputElement_iface
;
41 IHTMLInputTextElement IHTMLInputTextElement_iface
;
42 IHTMLInputTextElement2 IHTMLInputTextElement2_iface
;
44 nsIDOMHTMLInputElement
*nsinput
;
47 static inline HTMLInputElement
*impl_from_IHTMLInputElement(IHTMLInputElement
*iface
)
49 return CONTAINING_RECORD(iface
, HTMLInputElement
, IHTMLInputElement_iface
);
52 static inline HTMLInputElement
*impl_from_IHTMLInputTextElement(IHTMLInputTextElement
*iface
)
54 return CONTAINING_RECORD(iface
, HTMLInputElement
, IHTMLInputTextElement_iface
);
57 static HRESULT WINAPI
HTMLInputElement_QueryInterface(IHTMLInputElement
*iface
,
58 REFIID riid
, void **ppv
)
60 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
62 return IHTMLDOMNode_QueryInterface(&This
->element
.node
.IHTMLDOMNode_iface
, riid
, ppv
);
65 static ULONG WINAPI
HTMLInputElement_AddRef(IHTMLInputElement
*iface
)
67 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
69 return IHTMLDOMNode_AddRef(&This
->element
.node
.IHTMLDOMNode_iface
);
72 static ULONG WINAPI
HTMLInputElement_Release(IHTMLInputElement
*iface
)
74 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
76 return IHTMLDOMNode_Release(&This
->element
.node
.IHTMLDOMNode_iface
);
79 static HRESULT WINAPI
HTMLInputElement_GetTypeInfoCount(IHTMLInputElement
*iface
, UINT
*pctinfo
)
81 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
83 return IDispatchEx_GetTypeInfoCount(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, pctinfo
);
86 static HRESULT WINAPI
HTMLInputElement_GetTypeInfo(IHTMLInputElement
*iface
, UINT iTInfo
,
87 LCID lcid
, ITypeInfo
**ppTInfo
)
89 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
91 return IDispatchEx_GetTypeInfo(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, iTInfo
, lcid
,
95 static HRESULT WINAPI
HTMLInputElement_GetIDsOfNames(IHTMLInputElement
*iface
, REFIID riid
,
96 LPOLESTR
*rgszNames
, UINT cNames
,
97 LCID lcid
, DISPID
*rgDispId
)
99 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
101 return IDispatchEx_GetIDsOfNames(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, riid
, rgszNames
,
102 cNames
, lcid
, rgDispId
);
105 static HRESULT WINAPI
HTMLInputElement_Invoke(IHTMLInputElement
*iface
, DISPID dispIdMember
,
106 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
107 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
109 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
111 return IDispatchEx_Invoke(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, dispIdMember
, riid
,
112 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
115 static HRESULT WINAPI
HTMLInputElement_put_type(IHTMLInputElement
*iface
, BSTR v
)
117 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
121 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
125 * On IE setting type works only on dynamically created elements before adding them to DOM tree.
127 nsAString_InitDepend(&type_str
, v
);
128 nsres
= nsIDOMHTMLInputElement_SetType(This
->nsinput
, &type_str
);
129 nsAString_Finish(&type_str
);
130 if(NS_FAILED(nsres
)) {
131 ERR("SetType failed: %08x\n", nsres
);
138 static HRESULT WINAPI
HTMLInputElement_get_type(IHTMLInputElement
*iface
, BSTR
*p
)
140 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
144 TRACE("(%p)->(%p)\n", This
, p
);
146 nsAString_Init(&type_str
, NULL
);
147 nsres
= nsIDOMHTMLInputElement_GetType(This
->nsinput
, &type_str
);
148 return return_nsstr(nsres
, &type_str
, p
);
151 static HRESULT WINAPI
HTMLInputElement_put_value(IHTMLInputElement
*iface
, BSTR v
)
153 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
157 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
159 nsAString_InitDepend(&val_str
, v
);
160 nsres
= nsIDOMHTMLInputElement_SetValue(This
->nsinput
, &val_str
);
161 nsAString_Finish(&val_str
);
163 ERR("SetValue failed: %08x\n", nsres
);
168 static HRESULT WINAPI
HTMLInputElement_get_value(IHTMLInputElement
*iface
, BSTR
*p
)
170 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
174 TRACE("(%p)->(%p)\n", This
, p
);
176 nsAString_Init(&value_str
, NULL
);
177 nsres
= nsIDOMHTMLInputElement_GetValue(This
->nsinput
, &value_str
);
178 return return_nsstr(nsres
, &value_str
, p
);
181 static HRESULT WINAPI
HTMLInputElement_put_name(IHTMLInputElement
*iface
, BSTR v
)
183 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
187 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
189 nsAString_InitDepend(&name_str
, v
);
190 nsres
= nsIDOMHTMLInputElement_SetName(This
->nsinput
, &name_str
);
191 nsAString_Finish(&name_str
);
192 if(NS_FAILED(nsres
)) {
193 ERR("SetName failed: %08x\n", nsres
);
200 static HRESULT WINAPI
HTMLInputElement_get_name(IHTMLInputElement
*iface
, BSTR
*p
)
202 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
206 TRACE("(%p)->(%p)\n", This
, p
);
208 nsAString_Init(&name_str
, NULL
);
209 nsres
= nsIDOMHTMLInputElement_GetName(This
->nsinput
, &name_str
);
210 return return_nsstr(nsres
, &name_str
, p
);
213 static HRESULT WINAPI
HTMLInputElement_put_status(IHTMLInputElement
*iface
, VARIANT_BOOL v
)
215 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
216 FIXME("(%p)->(%x)\n", This
, v
);
220 static HRESULT WINAPI
HTMLInputElement_get_status(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
222 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
223 FIXME("(%p)->(%p)\n", This
, p
);
227 static HRESULT WINAPI
HTMLInputElement_put_disabled(IHTMLInputElement
*iface
, VARIANT_BOOL v
)
229 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
232 TRACE("(%p)->(%x)\n", This
, v
);
234 nsres
= nsIDOMHTMLInputElement_SetDisabled(This
->nsinput
, v
!= VARIANT_FALSE
);
236 ERR("SetDisabled failed: %08x\n", nsres
);
241 static HRESULT WINAPI
HTMLInputElement_get_disabled(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
243 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
244 cpp_bool disabled
= FALSE
;
246 TRACE("(%p)->(%p)\n", This
, p
);
248 nsIDOMHTMLInputElement_GetDisabled(This
->nsinput
, &disabled
);
250 *p
= variant_bool(disabled
);
254 static HRESULT WINAPI
HTMLInputElement_get_form(IHTMLInputElement
*iface
, IHTMLFormElement
**p
)
256 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
257 nsIDOMHTMLFormElement
*nsform
;
260 TRACE("(%p)->(%p)\n", This
, p
);
262 nsres
= nsIDOMHTMLInputElement_GetForm(This
->nsinput
, &nsform
);
263 return return_nsform(nsres
, nsform
, p
);
266 static HRESULT WINAPI
HTMLInputElement_put_size(IHTMLInputElement
*iface
, LONG v
)
268 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
272 TRACE("(%p)->(%d)\n", This
, v
);
274 return CTL_E_INVALIDPROPERTYVALUE
;
276 nsres
= nsIDOMHTMLInputElement_SetSize(This
->nsinput
, val
);
277 if (NS_FAILED(nsres
)) {
278 ERR("Set Size(%u) failed: %08x\n", val
, nsres
);
284 static HRESULT WINAPI
HTMLInputElement_get_size(IHTMLInputElement
*iface
, LONG
*p
)
286 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
290 TRACE("(%p)->(%p)\n", This
, p
);
294 nsres
= nsIDOMHTMLInputElement_GetSize(This
->nsinput
, &val
);
295 if (NS_FAILED(nsres
)) {
296 ERR("Get Size failed: %08x\n", nsres
);
303 static HRESULT WINAPI
HTMLInputElement_put_maxLength(IHTMLInputElement
*iface
, LONG v
)
305 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
308 TRACE("(%p)->(%d)\n", This
, v
);
310 nsres
= nsIDOMHTMLInputElement_SetMaxLength(This
->nsinput
, v
);
311 if(NS_FAILED(nsres
)) {
312 /* FIXME: Gecko throws an error on negative values, while MSHTML should accept them */
313 FIXME("SetMaxLength failed\n");
320 static HRESULT WINAPI
HTMLInputElement_get_maxLength(IHTMLInputElement
*iface
, LONG
*p
)
322 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
326 TRACE("(%p)->(%p)\n", This
, p
);
328 nsres
= nsIDOMHTMLInputElement_GetMaxLength(This
->nsinput
, &max_length
);
329 assert(nsres
== NS_OK
);
331 /* Gecko reports -1 as default value, while MSHTML uses INT_MAX */
332 *p
= max_length
== -1 ? INT_MAX
: max_length
;
336 static HRESULT WINAPI
HTMLInputElement_select(IHTMLInputElement
*iface
)
338 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
341 TRACE("(%p)\n", This
);
343 nsres
= nsIDOMHTMLInputElement_Select(This
->nsinput
);
344 if(NS_FAILED(nsres
)) {
345 ERR("Select failed: %08x\n", nsres
);
352 static HRESULT WINAPI
HTMLInputElement_put_onchange(IHTMLInputElement
*iface
, VARIANT v
)
354 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
356 TRACE("(%p)->()\n", This
);
358 return set_node_event(&This
->element
.node
, EVENTID_CHANGE
, &v
);
361 static HRESULT WINAPI
HTMLInputElement_get_onchange(IHTMLInputElement
*iface
, VARIANT
*p
)
363 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
365 TRACE("(%p)->(%p)\n", This
, p
);
367 return get_node_event(&This
->element
.node
, EVENTID_CHANGE
, p
);
370 static HRESULT WINAPI
HTMLInputElement_put_onselect(IHTMLInputElement
*iface
, VARIANT v
)
372 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
373 FIXME("(%p)->()\n", This
);
377 static HRESULT WINAPI
HTMLInputElement_get_onselect(IHTMLInputElement
*iface
, VARIANT
*p
)
379 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
380 FIXME("(%p)->(%p)\n", This
, p
);
384 static HRESULT WINAPI
HTMLInputElement_put_defaultValue(IHTMLInputElement
*iface
, BSTR v
)
386 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
390 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
392 nsAString_InitDepend(&nsstr
, v
);
393 nsres
= nsIDOMHTMLInputElement_SetDefaultValue(This
->nsinput
, &nsstr
);
394 nsAString_Finish(&nsstr
);
395 if(NS_FAILED(nsres
)) {
396 ERR("SetValue failed: %08x\n", nsres
);
403 static HRESULT WINAPI
HTMLInputElement_get_defaultValue(IHTMLInputElement
*iface
, BSTR
*p
)
405 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
409 TRACE("(%p)->(%p)\n", This
, p
);
411 nsAString_Init(&nsstr
, NULL
);
412 nsres
= nsIDOMHTMLInputElement_GetDefaultValue(This
->nsinput
, &nsstr
);
413 return return_nsstr(nsres
, &nsstr
, p
);
416 static HRESULT WINAPI
HTMLInputElement_put_readOnly(IHTMLInputElement
*iface
, VARIANT_BOOL v
)
418 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
421 TRACE("(%p)->(%x)\n", This
, v
);
423 nsres
= nsIDOMHTMLInputElement_SetReadOnly(This
->nsinput
, v
!= VARIANT_FALSE
);
424 if (NS_FAILED(nsres
)) {
425 ERR("Set ReadOnly Failed: %08x\n", nsres
);
431 static HRESULT WINAPI
HTMLInputElement_get_readOnly(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
433 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
437 TRACE("(%p)->(%p)\n", This
, p
);
439 nsres
= nsIDOMHTMLInputElement_GetReadOnly(This
->nsinput
, &b
);
440 if (NS_FAILED(nsres
)) {
441 ERR("Get ReadOnly Failed: %08x\n", nsres
);
445 *p
= variant_bool(b
);
449 static HRESULT WINAPI
HTMLInputElement_createTextRange(IHTMLInputElement
*iface
, IHTMLTxtRange
**range
)
451 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
452 FIXME("(%p)->(%p)\n", This
, range
);
456 static HRESULT WINAPI
HTMLInputElement_put_indeterminate(IHTMLInputElement
*iface
, VARIANT_BOOL v
)
458 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
459 FIXME("(%p)->(%x)\n", This
, v
);
463 static HRESULT WINAPI
HTMLInputElement_get_indeterminate(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
465 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
466 FIXME("(%p)->(%p)\n", This
, p
);
470 static HRESULT WINAPI
HTMLInputElement_put_defaultChecked(IHTMLInputElement
*iface
, VARIANT_BOOL v
)
472 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
475 TRACE("(%p)->(%x)\n", This
, v
);
477 nsres
= nsIDOMHTMLInputElement_SetDefaultChecked(This
->nsinput
, v
!= VARIANT_FALSE
);
478 if(NS_FAILED(nsres
)) {
479 ERR("SetDefaultChecked failed: %08x\n", nsres
);
486 static HRESULT WINAPI
HTMLInputElement_get_defaultChecked(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
488 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
489 cpp_bool default_checked
= FALSE
;
492 TRACE("(%p)->(%p)\n", This
, p
);
494 nsres
= nsIDOMHTMLInputElement_GetDefaultChecked(This
->nsinput
, &default_checked
);
495 if(NS_FAILED(nsres
)) {
496 ERR("GetDefaultChecked failed: %08x\n", nsres
);
500 *p
= variant_bool(default_checked
);
504 static HRESULT WINAPI
HTMLInputElement_put_checked(IHTMLInputElement
*iface
, VARIANT_BOOL v
)
506 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
509 TRACE("(%p)->(%x)\n", This
, v
);
511 nsres
= nsIDOMHTMLInputElement_SetChecked(This
->nsinput
, v
!= VARIANT_FALSE
);
512 if(NS_FAILED(nsres
)) {
513 ERR("SetChecked failed: %08x\n", nsres
);
520 static HRESULT WINAPI
HTMLInputElement_get_checked(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
522 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
526 TRACE("(%p)->(%p)\n", This
, p
);
528 nsres
= nsIDOMHTMLInputElement_GetChecked(This
->nsinput
, &checked
);
529 if(NS_FAILED(nsres
)) {
530 ERR("GetChecked failed: %08x\n", nsres
);
534 *p
= variant_bool(checked
);
535 TRACE("checked=%x\n", *p
);
539 static HRESULT WINAPI
HTMLInputElement_put_border(IHTMLInputElement
*iface
, VARIANT v
)
541 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
542 FIXME("(%p)->()\n", This
);
546 static HRESULT WINAPI
HTMLInputElement_get_border(IHTMLInputElement
*iface
, VARIANT
*p
)
548 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
549 FIXME("(%p)->(%p)\n", This
, p
);
553 static HRESULT WINAPI
HTMLInputElement_put_vspace(IHTMLInputElement
*iface
, LONG v
)
555 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
556 FIXME("(%p)->(%d)\n", This
, v
);
560 static HRESULT WINAPI
HTMLInputElement_get_vspace(IHTMLInputElement
*iface
, LONG
*p
)
562 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
563 FIXME("(%p)->(%p)\n", This
, p
);
567 static HRESULT WINAPI
HTMLInputElement_put_hspace(IHTMLInputElement
*iface
, LONG v
)
569 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
570 FIXME("(%p)->(%d)\n", This
, v
);
574 static HRESULT WINAPI
HTMLInputElement_get_hspace(IHTMLInputElement
*iface
, LONG
*p
)
576 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
577 FIXME("(%p)->(%p)\n", This
, p
);
581 static HRESULT WINAPI
HTMLInputElement_put_alt(IHTMLInputElement
*iface
, BSTR v
)
583 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
584 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
588 static HRESULT WINAPI
HTMLInputElement_get_alt(IHTMLInputElement
*iface
, BSTR
*p
)
590 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
591 FIXME("(%p)->(%p)\n", This
, p
);
595 static HRESULT WINAPI
HTMLInputElement_put_src(IHTMLInputElement
*iface
, BSTR v
)
597 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
601 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
603 nsAString_InitDepend(&nsstr
, v
);
604 nsres
= nsIDOMHTMLInputElement_SetSrc(This
->nsinput
, &nsstr
);
605 nsAString_Finish(&nsstr
);
607 ERR("SetSrc failed: %08x\n", nsres
);
612 static HRESULT WINAPI
HTMLInputElement_get_src(IHTMLInputElement
*iface
, BSTR
*p
)
614 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
615 const PRUnichar
*src
;
620 TRACE("(%p)->(%p)\n", This
, p
);
622 nsAString_Init(&src_str
, NULL
);
623 nsres
= nsIDOMHTMLInputElement_GetSrc(This
->nsinput
, &src_str
);
624 if(NS_FAILED(nsres
)) {
625 ERR("GetSrc failed: %08x\n", nsres
);
629 nsAString_GetData(&src_str
, &src
);
630 hres
= nsuri_to_url(src
, FALSE
, p
);
631 nsAString_Finish(&src_str
);
636 static HRESULT WINAPI
HTMLInputElement_put_lowsrc(IHTMLInputElement
*iface
, BSTR v
)
638 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
639 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
643 static HRESULT WINAPI
HTMLInputElement_get_lowsrc(IHTMLInputElement
*iface
, BSTR
*p
)
645 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
646 FIXME("(%p)->(%p)\n", This
, p
);
650 static HRESULT WINAPI
HTMLInputElement_put_vrml(IHTMLInputElement
*iface
, BSTR v
)
652 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
653 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
657 static HRESULT WINAPI
HTMLInputElement_get_vrml(IHTMLInputElement
*iface
, BSTR
*p
)
659 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
660 FIXME("(%p)->(%p)\n", This
, p
);
664 static HRESULT WINAPI
HTMLInputElement_put_dynsrc(IHTMLInputElement
*iface
, BSTR v
)
666 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
667 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
671 static HRESULT WINAPI
HTMLInputElement_get_dynsrc(IHTMLInputElement
*iface
, BSTR
*p
)
673 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
674 FIXME("(%p)->(%p)\n", This
, p
);
678 static HRESULT WINAPI
HTMLInputElement_get_readyState(IHTMLInputElement
*iface
, BSTR
*p
)
680 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
681 FIXME("(%p)->(%p)\n", This
, p
);
685 static HRESULT WINAPI
HTMLInputElement_get_complete(IHTMLInputElement
*iface
, VARIANT_BOOL
*p
)
687 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
688 FIXME("(%p)->(%p)\n", This
, p
);
692 static HRESULT WINAPI
HTMLInputElement_put_loop(IHTMLInputElement
*iface
, VARIANT v
)
694 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
695 FIXME("(%p)->()\n", This
);
699 static HRESULT WINAPI
HTMLInputElement_get_loop(IHTMLInputElement
*iface
, VARIANT
*p
)
701 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
702 FIXME("(%p)->(%p)\n", This
, p
);
706 static HRESULT WINAPI
HTMLInputElement_put_align(IHTMLInputElement
*iface
, BSTR v
)
708 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
709 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
713 static HRESULT WINAPI
HTMLInputElement_get_align(IHTMLInputElement
*iface
, BSTR
*p
)
715 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
716 FIXME("(%p)->(%p)\n", This
, p
);
720 static HRESULT WINAPI
HTMLInputElement_put_onload(IHTMLInputElement
*iface
, VARIANT v
)
722 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
723 FIXME("(%p)->()\n", This
);
727 static HRESULT WINAPI
HTMLInputElement_get_onload(IHTMLInputElement
*iface
, VARIANT
*p
)
729 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
730 FIXME("(%p)->(%p)\n", This
, p
);
734 static HRESULT WINAPI
HTMLInputElement_put_onerror(IHTMLInputElement
*iface
, VARIANT v
)
736 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
737 FIXME("(%p)->()\n", This
);
741 static HRESULT WINAPI
HTMLInputElement_get_onerror(IHTMLInputElement
*iface
, VARIANT
*p
)
743 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
744 FIXME("(%p)->(%p)\n", This
, p
);
748 static HRESULT WINAPI
HTMLInputElement_put_onabort(IHTMLInputElement
*iface
, VARIANT v
)
750 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
751 FIXME("(%p)->()\n", This
);
755 static HRESULT WINAPI
HTMLInputElement_get_onabort(IHTMLInputElement
*iface
, VARIANT
*p
)
757 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
758 FIXME("(%p)->(%p)\n", This
, p
);
762 static HRESULT WINAPI
HTMLInputElement_put_width(IHTMLInputElement
*iface
, LONG v
)
764 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
765 FIXME("(%p)->(%d)\n", This
, v
);
769 static HRESULT WINAPI
HTMLInputElement_get_width(IHTMLInputElement
*iface
, LONG
*p
)
771 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
772 FIXME("(%p)->(%p)\n", This
, p
);
776 static HRESULT WINAPI
HTMLInputElement_put_height(IHTMLInputElement
*iface
, LONG v
)
778 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
779 FIXME("(%p)->(%d)\n", This
, v
);
783 static HRESULT WINAPI
HTMLInputElement_get_height(IHTMLInputElement
*iface
, LONG
*p
)
785 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
786 FIXME("(%p)->(%p)\n", This
, p
);
790 static HRESULT WINAPI
HTMLInputElement_put_start(IHTMLInputElement
*iface
, BSTR v
)
792 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
793 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
797 static HRESULT WINAPI
HTMLInputElement_get_start(IHTMLInputElement
*iface
, BSTR
*p
)
799 HTMLInputElement
*This
= impl_from_IHTMLInputElement(iface
);
800 FIXME("(%p)->(%p)\n", This
, p
);
804 static const IHTMLInputElementVtbl HTMLInputElementVtbl
= {
805 HTMLInputElement_QueryInterface
,
806 HTMLInputElement_AddRef
,
807 HTMLInputElement_Release
,
808 HTMLInputElement_GetTypeInfoCount
,
809 HTMLInputElement_GetTypeInfo
,
810 HTMLInputElement_GetIDsOfNames
,
811 HTMLInputElement_Invoke
,
812 HTMLInputElement_put_type
,
813 HTMLInputElement_get_type
,
814 HTMLInputElement_put_value
,
815 HTMLInputElement_get_value
,
816 HTMLInputElement_put_name
,
817 HTMLInputElement_get_name
,
818 HTMLInputElement_put_status
,
819 HTMLInputElement_get_status
,
820 HTMLInputElement_put_disabled
,
821 HTMLInputElement_get_disabled
,
822 HTMLInputElement_get_form
,
823 HTMLInputElement_put_size
,
824 HTMLInputElement_get_size
,
825 HTMLInputElement_put_maxLength
,
826 HTMLInputElement_get_maxLength
,
827 HTMLInputElement_select
,
828 HTMLInputElement_put_onchange
,
829 HTMLInputElement_get_onchange
,
830 HTMLInputElement_put_onselect
,
831 HTMLInputElement_get_onselect
,
832 HTMLInputElement_put_defaultValue
,
833 HTMLInputElement_get_defaultValue
,
834 HTMLInputElement_put_readOnly
,
835 HTMLInputElement_get_readOnly
,
836 HTMLInputElement_createTextRange
,
837 HTMLInputElement_put_indeterminate
,
838 HTMLInputElement_get_indeterminate
,
839 HTMLInputElement_put_defaultChecked
,
840 HTMLInputElement_get_defaultChecked
,
841 HTMLInputElement_put_checked
,
842 HTMLInputElement_get_checked
,
843 HTMLInputElement_put_border
,
844 HTMLInputElement_get_border
,
845 HTMLInputElement_put_vspace
,
846 HTMLInputElement_get_vspace
,
847 HTMLInputElement_put_hspace
,
848 HTMLInputElement_get_hspace
,
849 HTMLInputElement_put_alt
,
850 HTMLInputElement_get_alt
,
851 HTMLInputElement_put_src
,
852 HTMLInputElement_get_src
,
853 HTMLInputElement_put_lowsrc
,
854 HTMLInputElement_get_lowsrc
,
855 HTMLInputElement_put_vrml
,
856 HTMLInputElement_get_vrml
,
857 HTMLInputElement_put_dynsrc
,
858 HTMLInputElement_get_dynsrc
,
859 HTMLInputElement_get_readyState
,
860 HTMLInputElement_get_complete
,
861 HTMLInputElement_put_loop
,
862 HTMLInputElement_get_loop
,
863 HTMLInputElement_put_align
,
864 HTMLInputElement_get_align
,
865 HTMLInputElement_put_onload
,
866 HTMLInputElement_get_onload
,
867 HTMLInputElement_put_onerror
,
868 HTMLInputElement_get_onerror
,
869 HTMLInputElement_put_onabort
,
870 HTMLInputElement_get_onabort
,
871 HTMLInputElement_put_width
,
872 HTMLInputElement_get_width
,
873 HTMLInputElement_put_height
,
874 HTMLInputElement_get_height
,
875 HTMLInputElement_put_start
,
876 HTMLInputElement_get_start
879 static HRESULT WINAPI
HTMLInputTextElement_QueryInterface(IHTMLInputTextElement
*iface
,
880 REFIID riid
, void **ppv
)
882 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
884 return IHTMLDOMNode_QueryInterface(&This
->element
.node
.IHTMLDOMNode_iface
, riid
, ppv
);
887 static ULONG WINAPI
HTMLInputTextElement_AddRef(IHTMLInputTextElement
*iface
)
889 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
891 return IHTMLDOMNode_AddRef(&This
->element
.node
.IHTMLDOMNode_iface
);
894 static ULONG WINAPI
HTMLInputTextElement_Release(IHTMLInputTextElement
*iface
)
896 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
898 return IHTMLDOMNode_Release(&This
->element
.node
.IHTMLDOMNode_iface
);
901 static HRESULT WINAPI
HTMLInputTextElement_GetTypeInfoCount(IHTMLInputTextElement
*iface
, UINT
*pctinfo
)
903 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
904 return IDispatchEx_GetTypeInfoCount(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, pctinfo
);
907 static HRESULT WINAPI
HTMLInputTextElement_GetTypeInfo(IHTMLInputTextElement
*iface
, UINT iTInfo
,
908 LCID lcid
, ITypeInfo
**ppTInfo
)
910 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
911 return IDispatchEx_GetTypeInfo(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, iTInfo
, lcid
,
915 static HRESULT WINAPI
HTMLInputTextElement_GetIDsOfNames(IHTMLInputTextElement
*iface
, REFIID riid
,
916 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
918 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
919 return IDispatchEx_GetIDsOfNames(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, riid
, rgszNames
,
920 cNames
, lcid
, rgDispId
);
923 static HRESULT WINAPI
HTMLInputTextElement_Invoke(IHTMLInputTextElement
*iface
, DISPID dispIdMember
,
924 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
925 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
927 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
928 return IDispatchEx_Invoke(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, dispIdMember
, riid
,
929 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
932 static HRESULT WINAPI
HTMLInputTextElement_get_type(IHTMLInputTextElement
*iface
, BSTR
*p
)
934 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
936 TRACE("(%p)->(%p)\n", This
, p
);
938 return IHTMLInputElement_get_type(&This
->IHTMLInputElement_iface
, p
);
941 static HRESULT WINAPI
HTMLInputTextElement_put_value(IHTMLInputTextElement
*iface
, BSTR v
)
943 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
945 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
947 return IHTMLInputElement_put_value(&This
->IHTMLInputElement_iface
, v
);
950 static HRESULT WINAPI
HTMLInputTextElement_get_value(IHTMLInputTextElement
*iface
, BSTR
*p
)
952 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
954 TRACE("(%p)->(%p)\n", This
, p
);
956 return IHTMLInputElement_get_value(&This
->IHTMLInputElement_iface
, p
);
959 static HRESULT WINAPI
HTMLInputTextElement_put_name(IHTMLInputTextElement
*iface
, BSTR v
)
961 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
963 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
965 return IHTMLInputElement_put_name(&This
->IHTMLInputElement_iface
, v
);
968 static HRESULT WINAPI
HTMLInputTextElement_get_name(IHTMLInputTextElement
*iface
, BSTR
*p
)
970 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
972 TRACE("(%p)->(%p)\n", This
, p
);
974 return IHTMLInputElement_get_name(&This
->IHTMLInputElement_iface
, p
);
977 static HRESULT WINAPI
HTMLInputTextElement_put_status(IHTMLInputTextElement
*iface
, VARIANT v
)
979 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
980 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
984 static HRESULT WINAPI
HTMLInputTextElement_get_status(IHTMLInputTextElement
*iface
, VARIANT
*p
)
986 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
987 TRACE("(%p)->(%p)\n", This
, p
);
991 static HRESULT WINAPI
HTMLInputTextElement_put_disabled(IHTMLInputTextElement
*iface
, VARIANT_BOOL v
)
993 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
995 TRACE("(%p)->(%x)\n", This
, v
);
997 return IHTMLInputElement_put_disabled(&This
->IHTMLInputElement_iface
, v
);
1000 static HRESULT WINAPI
HTMLInputTextElement_get_disabled(IHTMLInputTextElement
*iface
, VARIANT_BOOL
*p
)
1002 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1004 TRACE("(%p)->(%p)\n", This
, p
);
1006 return IHTMLInputElement_get_disabled(&This
->IHTMLInputElement_iface
, p
);
1009 static HRESULT WINAPI
HTMLInputTextElement_get_form(IHTMLInputTextElement
*iface
, IHTMLFormElement
**p
)
1011 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1013 TRACE("(%p)->(%p)\n", This
, p
);
1015 return IHTMLInputElement_get_form(&This
->IHTMLInputElement_iface
, p
);
1018 static HRESULT WINAPI
HTMLInputTextElement_put_defaultValue(IHTMLInputTextElement
*iface
, BSTR v
)
1020 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1022 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
1024 return IHTMLInputElement_put_defaultValue(&This
->IHTMLInputElement_iface
, v
);
1027 static HRESULT WINAPI
HTMLInputTextElement_get_defaultValue(IHTMLInputTextElement
*iface
, BSTR
*p
)
1029 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1031 TRACE("(%p)->(%p)\n", This
, p
);
1033 return IHTMLInputElement_get_defaultValue(&This
->IHTMLInputElement_iface
, p
);
1036 static HRESULT WINAPI
HTMLInputTextElement_put_size(IHTMLInputTextElement
*iface
, LONG v
)
1038 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1040 TRACE("(%p)->(%d)\n", This
, v
);
1042 return IHTMLInputElement_put_size(&This
->IHTMLInputElement_iface
, v
);
1045 static HRESULT WINAPI
HTMLInputTextElement_get_size(IHTMLInputTextElement
*iface
, LONG
*p
)
1047 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1049 TRACE("(%p)->(%p)\n", This
, p
);
1051 return IHTMLInputElement_get_size(&This
->IHTMLInputElement_iface
, p
);
1054 static HRESULT WINAPI
HTMLInputTextElement_put_maxLength(IHTMLInputTextElement
*iface
, LONG v
)
1056 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1058 TRACE("(%p)->(%d)\n", This
, v
);
1060 return IHTMLInputElement_put_maxLength(&This
->IHTMLInputElement_iface
, v
);
1063 static HRESULT WINAPI
HTMLInputTextElement_get_maxLength(IHTMLInputTextElement
*iface
, LONG
*p
)
1065 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1067 TRACE("(%p)->(%p)\n", This
, p
);
1069 return IHTMLInputElement_get_maxLength(&This
->IHTMLInputElement_iface
, p
);
1072 static HRESULT WINAPI
HTMLInputTextElement_select(IHTMLInputTextElement
*iface
)
1074 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1076 TRACE("(%p)\n", This
);
1078 return IHTMLInputElement_select(&This
->IHTMLInputElement_iface
);
1081 static HRESULT WINAPI
HTMLInputTextElement_put_onchange(IHTMLInputTextElement
*iface
, VARIANT v
)
1083 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1085 TRACE("(%p)->()\n", This
);
1087 return IHTMLInputElement_put_onchange(&This
->IHTMLInputElement_iface
, v
);
1090 static HRESULT WINAPI
HTMLInputTextElement_get_onchange(IHTMLInputTextElement
*iface
, VARIANT
*p
)
1092 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1094 TRACE("(%p)->(%p)\n", This
, p
);
1096 return IHTMLInputElement_get_onchange(&This
->IHTMLInputElement_iface
, p
);
1099 static HRESULT WINAPI
HTMLInputTextElement_put_onselect(IHTMLInputTextElement
*iface
, VARIANT v
)
1101 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1103 TRACE("(%p)->()\n", This
);
1105 return IHTMLInputElement_put_onselect(&This
->IHTMLInputElement_iface
, v
);
1108 static HRESULT WINAPI
HTMLInputTextElement_get_onselect(IHTMLInputTextElement
*iface
, VARIANT
*p
)
1110 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1112 TRACE("(%p)->(%p)\n", This
, p
);
1114 return IHTMLInputElement_get_onselect(&This
->IHTMLInputElement_iface
, p
);
1117 static HRESULT WINAPI
HTMLInputTextElement_put_readOnly(IHTMLInputTextElement
*iface
, VARIANT_BOOL v
)
1119 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1121 TRACE("(%p)->(%x)\n", This
, v
);
1123 return IHTMLInputElement_put_readOnly(&This
->IHTMLInputElement_iface
, v
);
1126 static HRESULT WINAPI
HTMLInputTextElement_get_readOnly(IHTMLInputTextElement
*iface
, VARIANT_BOOL
*p
)
1128 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1130 TRACE("(%p)->(%p)\n", This
, p
);
1132 return IHTMLInputElement_get_readOnly(&This
->IHTMLInputElement_iface
, p
);
1135 static HRESULT WINAPI
HTMLInputTextElement_createTextRange(IHTMLInputTextElement
*iface
, IHTMLTxtRange
**range
)
1137 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement(iface
);
1139 TRACE("(%p)->(%p)\n", This
, range
);
1141 return IHTMLInputElement_createTextRange(&This
->IHTMLInputElement_iface
, range
);
1144 static const IHTMLInputTextElementVtbl HTMLInputTextElementVtbl
= {
1145 HTMLInputTextElement_QueryInterface
,
1146 HTMLInputTextElement_AddRef
,
1147 HTMLInputTextElement_Release
,
1148 HTMLInputTextElement_GetTypeInfoCount
,
1149 HTMLInputTextElement_GetTypeInfo
,
1150 HTMLInputTextElement_GetIDsOfNames
,
1151 HTMLInputTextElement_Invoke
,
1152 HTMLInputTextElement_get_type
,
1153 HTMLInputTextElement_put_value
,
1154 HTMLInputTextElement_get_value
,
1155 HTMLInputTextElement_put_name
,
1156 HTMLInputTextElement_get_name
,
1157 HTMLInputTextElement_put_status
,
1158 HTMLInputTextElement_get_status
,
1159 HTMLInputTextElement_put_disabled
,
1160 HTMLInputTextElement_get_disabled
,
1161 HTMLInputTextElement_get_form
,
1162 HTMLInputTextElement_put_defaultValue
,
1163 HTMLInputTextElement_get_defaultValue
,
1164 HTMLInputTextElement_put_size
,
1165 HTMLInputTextElement_get_size
,
1166 HTMLInputTextElement_put_maxLength
,
1167 HTMLInputTextElement_get_maxLength
,
1168 HTMLInputTextElement_select
,
1169 HTMLInputTextElement_put_onchange
,
1170 HTMLInputTextElement_get_onchange
,
1171 HTMLInputTextElement_put_onselect
,
1172 HTMLInputTextElement_get_onselect
,
1173 HTMLInputTextElement_put_readOnly
,
1174 HTMLInputTextElement_get_readOnly
,
1175 HTMLInputTextElement_createTextRange
1178 static inline HTMLInputElement
*impl_from_IHTMLInputTextElement2(IHTMLInputTextElement2
*iface
)
1180 return CONTAINING_RECORD(iface
, HTMLInputElement
, IHTMLInputTextElement2_iface
);
1183 static HRESULT WINAPI
HTMLInputTextElement2_QueryInterface(IHTMLInputTextElement2
*iface
, REFIID riid
, void **ppv
)
1185 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1186 return IHTMLDOMNode_QueryInterface(&This
->element
.node
.IHTMLDOMNode_iface
, riid
, ppv
);
1189 static ULONG WINAPI
HTMLInputTextElement2_AddRef(IHTMLInputTextElement2
*iface
)
1191 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1192 return IHTMLDOMNode_AddRef(&This
->element
.node
.IHTMLDOMNode_iface
);
1195 static ULONG WINAPI
HTMLInputTextElement2_Release(IHTMLInputTextElement2
*iface
)
1197 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1198 return IHTMLDOMNode_Release(&This
->element
.node
.IHTMLDOMNode_iface
);
1201 static HRESULT WINAPI
HTMLInputTextElement2_GetTypeInfoCount(IHTMLInputTextElement2
*iface
, UINT
*pctinfo
)
1203 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1204 return IDispatchEx_GetTypeInfoCount(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, pctinfo
);
1207 static HRESULT WINAPI
HTMLInputTextElement2_GetTypeInfo(IHTMLInputTextElement2
*iface
, UINT iTInfo
,
1208 LCID lcid
, ITypeInfo
**ppTInfo
)
1210 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1211 return IDispatchEx_GetTypeInfo(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, iTInfo
, lcid
, ppTInfo
);
1214 static HRESULT WINAPI
HTMLInputTextElement2_GetIDsOfNames(IHTMLInputTextElement2
*iface
, REFIID riid
,
1215 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
1217 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1218 return IDispatchEx_GetIDsOfNames(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, riid
, rgszNames
,
1219 cNames
, lcid
, rgDispId
);
1222 static HRESULT WINAPI
HTMLInputTextElement2_Invoke(IHTMLInputTextElement2
*iface
, DISPID dispIdMember
,
1223 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
1224 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
1226 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1227 return IDispatchEx_Invoke(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, dispIdMember
, riid
,
1228 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
1231 static HRESULT WINAPI
HTMLInputTextElement2_put_selectionStart(IHTMLInputTextElement2
*iface
, LONG v
)
1233 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1236 TRACE("(%p)->(%d)\n", This
, v
);
1238 nsres
= nsIDOMHTMLInputElement_SetSelectionStart(This
->nsinput
, v
);
1239 if(NS_FAILED(nsres
)) {
1240 ERR("SetSelectionStart failed: %08x\n", nsres
);
1246 static HRESULT WINAPI
HTMLInputTextElement2_get_selectionStart(IHTMLInputTextElement2
*iface
, LONG
*p
)
1248 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1249 INT32 selection_start
;
1252 TRACE("(%p)->(%p)\n", This
, p
);
1254 nsres
= nsIDOMHTMLInputElement_GetSelectionStart(This
->nsinput
, &selection_start
);
1255 if(NS_FAILED(nsres
)) {
1256 ERR("GetSelectionStart failed: %08x\n", nsres
);
1260 *p
= selection_start
;
1264 static HRESULT WINAPI
HTMLInputTextElement2_put_selectionEnd(IHTMLInputTextElement2
*iface
, LONG v
)
1266 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1269 TRACE("(%p)->(%d)\n", This
, v
);
1271 nsres
= nsIDOMHTMLInputElement_SetSelectionEnd(This
->nsinput
, v
);
1272 if(NS_FAILED(nsres
)) {
1273 ERR("SetSelectionEnd failed: %08x\n", nsres
);
1279 static HRESULT WINAPI
HTMLInputTextElement2_get_selectionEnd(IHTMLInputTextElement2
*iface
, LONG
*p
)
1281 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1282 INT32 selection_end
;
1285 TRACE("(%p)->(%p)\n", This
, p
);
1287 nsres
= nsIDOMHTMLInputElement_GetSelectionEnd(This
->nsinput
, &selection_end
);
1288 if(NS_FAILED(nsres
)) {
1289 ERR("GetSelectionEnd failed: %08x\n", nsres
);
1297 static HRESULT WINAPI
HTMLInputTextElement2_setSelectionRange(IHTMLInputTextElement2
*iface
, LONG start
, LONG end
)
1299 HTMLInputElement
*This
= impl_from_IHTMLInputTextElement2(iface
);
1303 TRACE("(%p)->(%d %d)\n", This
, start
, end
);
1305 nsAString_InitDepend(&none_str
, L
"none");
1306 nsres
= nsIDOMHTMLInputElement_SetSelectionRange(This
->nsinput
, start
, end
, &none_str
);
1307 nsAString_Finish(&none_str
);
1308 if(NS_FAILED(nsres
)) {
1309 ERR("SetSelectionRange failed: %08x\n", nsres
);
1315 static const IHTMLInputTextElement2Vtbl HTMLInputTextElement2Vtbl
= {
1316 HTMLInputTextElement2_QueryInterface
,
1317 HTMLInputTextElement2_AddRef
,
1318 HTMLInputTextElement2_Release
,
1319 HTMLInputTextElement2_GetTypeInfoCount
,
1320 HTMLInputTextElement2_GetTypeInfo
,
1321 HTMLInputTextElement2_GetIDsOfNames
,
1322 HTMLInputTextElement2_Invoke
,
1323 HTMLInputTextElement2_put_selectionStart
,
1324 HTMLInputTextElement2_get_selectionStart
,
1325 HTMLInputTextElement2_put_selectionEnd
,
1326 HTMLInputTextElement2_get_selectionEnd
,
1327 HTMLInputTextElement2_setSelectionRange
1330 static inline HTMLInputElement
*impl_from_HTMLDOMNode(HTMLDOMNode
*iface
)
1332 return CONTAINING_RECORD(iface
, HTMLInputElement
, element
.node
);
1335 static HRESULT
HTMLInputElement_QI(HTMLDOMNode
*iface
, REFIID riid
, void **ppv
)
1337 HTMLInputElement
*This
= impl_from_HTMLDOMNode(iface
);
1341 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
1342 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
1343 *ppv
= &This
->IHTMLInputElement_iface
;
1344 }else if(IsEqualGUID(&IID_IDispatch
, riid
)) {
1345 TRACE("(%p)->(IID_IDispatch %p)\n", This
, ppv
);
1346 *ppv
= &This
->IHTMLInputElement_iface
;
1347 }else if(IsEqualGUID(&IID_IHTMLInputElement
, riid
)) {
1348 TRACE("(%p)->(IID_IHTMLInputElement %p)\n", This
, ppv
);
1349 *ppv
= &This
->IHTMLInputElement_iface
;
1350 }else if(IsEqualGUID(&IID_IHTMLInputTextElement
, riid
)) {
1351 TRACE("(%p)->(IID_IHTMLInputTextElement %p)\n", This
, ppv
);
1352 *ppv
= &This
->IHTMLInputTextElement_iface
;
1353 }else if(IsEqualGUID(&IID_IHTMLInputTextElement2
, riid
)) {
1354 TRACE("(%p)->(IID_IHTMLInputTextElement2 %p)\n", This
, ppv
);
1355 *ppv
= &This
->IHTMLInputTextElement2_iface
;
1359 IUnknown_AddRef((IUnknown
*)*ppv
);
1363 return HTMLElement_QI(&This
->element
.node
, riid
, ppv
);
1366 static HRESULT
HTMLInputElementImpl_put_disabled(HTMLDOMNode
*iface
, VARIANT_BOOL v
)
1368 HTMLInputElement
*This
= impl_from_HTMLDOMNode(iface
);
1369 return IHTMLInputElement_put_disabled(&This
->IHTMLInputElement_iface
, v
);
1372 static HRESULT
HTMLInputElementImpl_get_disabled(HTMLDOMNode
*iface
, VARIANT_BOOL
*p
)
1374 HTMLInputElement
*This
= impl_from_HTMLDOMNode(iface
);
1375 return IHTMLInputElement_get_disabled(&This
->IHTMLInputElement_iface
, p
);
1378 static BOOL
HTMLInputElement_is_text_edit(HTMLDOMNode
*iface
)
1380 HTMLInputElement
*This
= impl_from_HTMLDOMNode(iface
);
1381 const PRUnichar
*type
;
1386 nsAString_Init(&nsstr
, NULL
);
1387 nsres
= nsIDOMHTMLInputElement_GetType(This
->nsinput
, &nsstr
);
1388 if(NS_SUCCEEDED(nsres
)) {
1389 nsAString_GetData(&nsstr
, &type
);
1390 ret
= !wcscmp(type
, L
"button") || !wcscmp(type
, L
"hidden") || !wcscmp(type
, L
"password")
1391 || !wcscmp(type
, L
"reset") || !wcscmp(type
, L
"submit") || !wcscmp(type
, L
"text");
1393 nsAString_Finish(&nsstr
);
1397 static void HTMLInputElement_traverse(HTMLDOMNode
*iface
, nsCycleCollectionTraversalCallback
*cb
)
1399 HTMLInputElement
*This
= impl_from_HTMLDOMNode(iface
);
1402 note_cc_edge((nsISupports
*)This
->nsinput
, "This->nsinput", cb
);
1405 static void HTMLInputElement_unlink(HTMLDOMNode
*iface
)
1407 HTMLInputElement
*This
= impl_from_HTMLDOMNode(iface
);
1410 nsIDOMHTMLInputElement
*nsinput
= This
->nsinput
;
1412 This
->nsinput
= NULL
;
1413 nsIDOMHTMLInputElement_Release(nsinput
);
1417 static const NodeImplVtbl HTMLInputElementImplVtbl
= {
1418 &CLSID_HTMLInputElement
,
1419 HTMLInputElement_QI
,
1420 HTMLElement_destructor
,
1423 HTMLElement_handle_event
,
1424 HTMLElement_get_attr_col
,
1426 HTMLInputElementImpl_put_disabled
,
1427 HTMLInputElementImpl_get_disabled
,
1433 HTMLInputElement_traverse
,
1434 HTMLInputElement_unlink
,
1435 HTMLInputElement_is_text_edit
1438 static const tid_t HTMLInputElement_iface_tids
[] = {
1440 IHTMLInputElement_tid
,
1441 IHTMLInputTextElement2_tid
,
1444 static dispex_static_data_t HTMLInputElement_dispex
= {
1446 DispHTMLInputElement_tid
,
1447 HTMLInputElement_iface_tids
,
1448 HTMLElement_init_dispex_info
1451 HRESULT
HTMLInputElement_Create(HTMLDocumentNode
*doc
, nsIDOMElement
*nselem
, HTMLElement
**elem
)
1453 HTMLInputElement
*ret
;
1456 ret
= heap_alloc_zero(sizeof(HTMLInputElement
));
1458 return E_OUTOFMEMORY
;
1460 ret
->IHTMLInputElement_iface
.lpVtbl
= &HTMLInputElementVtbl
;
1461 ret
->IHTMLInputTextElement_iface
.lpVtbl
= &HTMLInputTextElementVtbl
;
1462 ret
->IHTMLInputTextElement2_iface
.lpVtbl
= &HTMLInputTextElement2Vtbl
;
1463 ret
->element
.node
.vtbl
= &HTMLInputElementImplVtbl
;
1465 HTMLElement_Init(&ret
->element
, doc
, nselem
, &HTMLInputElement_dispex
);
1467 nsres
= nsIDOMElement_QueryInterface(nselem
, &IID_nsIDOMHTMLInputElement
, (void**)&ret
->nsinput
);
1468 assert(nsres
== NS_OK
);
1470 *elem
= &ret
->element
;
1474 struct HTMLLabelElement
{
1475 HTMLElement element
;
1477 IHTMLLabelElement IHTMLLabelElement_iface
;
1480 static inline HTMLLabelElement
*impl_from_IHTMLLabelElement(IHTMLLabelElement
*iface
)
1482 return CONTAINING_RECORD(iface
, HTMLLabelElement
, IHTMLLabelElement_iface
);
1485 static HRESULT WINAPI
HTMLLabelElement_QueryInterface(IHTMLLabelElement
*iface
,
1486 REFIID riid
, void **ppv
)
1488 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1490 return IHTMLDOMNode_QueryInterface(&This
->element
.node
.IHTMLDOMNode_iface
, riid
, ppv
);
1493 static ULONG WINAPI
HTMLLabelElement_AddRef(IHTMLLabelElement
*iface
)
1495 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1497 return IHTMLDOMNode_AddRef(&This
->element
.node
.IHTMLDOMNode_iface
);
1500 static ULONG WINAPI
HTMLLabelElement_Release(IHTMLLabelElement
*iface
)
1502 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1504 return IHTMLDOMNode_Release(&This
->element
.node
.IHTMLDOMNode_iface
);
1507 static HRESULT WINAPI
HTMLLabelElement_GetTypeInfoCount(IHTMLLabelElement
*iface
, UINT
*pctinfo
)
1509 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1511 return IDispatchEx_GetTypeInfoCount(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, pctinfo
);
1514 static HRESULT WINAPI
HTMLLabelElement_GetTypeInfo(IHTMLLabelElement
*iface
, UINT iTInfo
,
1515 LCID lcid
, ITypeInfo
**ppTInfo
)
1517 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1519 return IDispatchEx_GetTypeInfo(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, iTInfo
, lcid
, ppTInfo
);
1522 static HRESULT WINAPI
HTMLLabelElement_GetIDsOfNames(IHTMLLabelElement
*iface
, REFIID riid
,
1523 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
1525 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1527 return IDispatchEx_GetIDsOfNames(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, riid
, rgszNames
,
1528 cNames
, lcid
, rgDispId
);
1531 static HRESULT WINAPI
HTMLLabelElement_Invoke(IHTMLLabelElement
*iface
, DISPID dispIdMember
,
1532 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
1533 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
1535 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1537 return IDispatchEx_Invoke(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, dispIdMember
, riid
,
1538 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
1541 static HRESULT WINAPI
HTMLLabelElement_put_htmlFor(IHTMLLabelElement
*iface
, BSTR v
)
1543 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1544 nsAString for_str
, val_str
;
1547 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
1549 nsAString_InitDepend(&for_str
, L
"for");
1550 nsAString_InitDepend(&val_str
, v
);
1551 nsres
= nsIDOMElement_SetAttribute(This
->element
.dom_element
, &for_str
, &val_str
);
1552 nsAString_Finish(&for_str
);
1553 nsAString_Finish(&val_str
);
1554 if(NS_FAILED(nsres
)) {
1555 ERR("SetAttribute failed: %08x\n", nsres
);
1562 static HRESULT WINAPI
HTMLLabelElement_get_htmlFor(IHTMLLabelElement
*iface
, BSTR
*p
)
1564 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1566 TRACE("(%p)->(%p)\n", This
, p
);
1568 return elem_string_attr_getter(&This
->element
, L
"for", FALSE
, p
);
1571 static HRESULT WINAPI
HTMLLabelElement_put_accessKey(IHTMLLabelElement
*iface
, BSTR v
)
1573 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1574 FIXME("(%p)->(%s)\n", This
, debugstr_w(v
));
1578 static HRESULT WINAPI
HTMLLabelElement_get_accessKey(IHTMLLabelElement
*iface
, BSTR
*p
)
1580 HTMLLabelElement
*This
= impl_from_IHTMLLabelElement(iface
);
1581 FIXME("(%p)->(%p)\n", This
, p
);
1585 static const IHTMLLabelElementVtbl HTMLLabelElementVtbl
= {
1586 HTMLLabelElement_QueryInterface
,
1587 HTMLLabelElement_AddRef
,
1588 HTMLLabelElement_Release
,
1589 HTMLLabelElement_GetTypeInfoCount
,
1590 HTMLLabelElement_GetTypeInfo
,
1591 HTMLLabelElement_GetIDsOfNames
,
1592 HTMLLabelElement_Invoke
,
1593 HTMLLabelElement_put_htmlFor
,
1594 HTMLLabelElement_get_htmlFor
,
1595 HTMLLabelElement_put_accessKey
,
1596 HTMLLabelElement_get_accessKey
1599 static inline HTMLLabelElement
*label_from_HTMLDOMNode(HTMLDOMNode
*iface
)
1601 return CONTAINING_RECORD(iface
, HTMLLabelElement
, element
.node
);
1604 static HRESULT
HTMLLabelElement_QI(HTMLDOMNode
*iface
, REFIID riid
, void **ppv
)
1606 HTMLLabelElement
*This
= label_from_HTMLDOMNode(iface
);
1610 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
1611 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
1612 *ppv
= &This
->IHTMLLabelElement_iface
;
1613 }else if(IsEqualGUID(&IID_IHTMLLabelElement
, riid
)) {
1614 TRACE("(%p)->(IID_IHTMLLabelElement %p)\n", This
, ppv
);
1615 *ppv
= &This
->IHTMLLabelElement_iface
;
1617 return HTMLElement_QI(&This
->element
.node
, riid
, ppv
);
1620 IUnknown_AddRef((IUnknown
*)*ppv
);
1624 static const NodeImplVtbl HTMLLabelElementImplVtbl
= {
1625 &CLSID_HTMLLabelElement
,
1626 HTMLLabelElement_QI
,
1627 HTMLElement_destructor
,
1630 HTMLElement_handle_event
,
1631 HTMLElement_get_attr_col
,
1634 static const tid_t HTMLLabelElement_iface_tids
[] = {
1636 IHTMLLabelElement_tid
,
1640 static dispex_static_data_t HTMLLabelElement_dispex
= {
1642 DispHTMLLabelElement_tid
,
1643 HTMLLabelElement_iface_tids
,
1644 HTMLElement_init_dispex_info
1647 HRESULT
HTMLLabelElement_Create(HTMLDocumentNode
*doc
, nsIDOMElement
*nselem
, HTMLElement
**elem
)
1649 HTMLLabelElement
*ret
;
1651 ret
= heap_alloc_zero(sizeof(*ret
));
1653 return E_OUTOFMEMORY
;
1655 ret
->IHTMLLabelElement_iface
.lpVtbl
= &HTMLLabelElementVtbl
;
1656 ret
->element
.node
.vtbl
= &HTMLLabelElementImplVtbl
;
1658 HTMLElement_Init(&ret
->element
, doc
, nselem
, &HTMLLabelElement_dispex
);
1659 *elem
= &ret
->element
;
1663 struct HTMLButtonElement
{
1664 HTMLElement element
;
1666 IHTMLButtonElement IHTMLButtonElement_iface
;
1668 nsIDOMHTMLButtonElement
*nsbutton
;
1671 static inline HTMLButtonElement
*impl_from_IHTMLButtonElement(IHTMLButtonElement
*iface
)
1673 return CONTAINING_RECORD(iface
, HTMLButtonElement
, IHTMLButtonElement_iface
);
1676 static HRESULT WINAPI
HTMLButtonElement_QueryInterface(IHTMLButtonElement
*iface
,
1677 REFIID riid
, void **ppv
)
1679 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1681 return IHTMLDOMNode_QueryInterface(&This
->element
.node
.IHTMLDOMNode_iface
, riid
, ppv
);
1684 static ULONG WINAPI
HTMLButtonElement_AddRef(IHTMLButtonElement
*iface
)
1686 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1688 return IHTMLDOMNode_AddRef(&This
->element
.node
.IHTMLDOMNode_iface
);
1691 static ULONG WINAPI
HTMLButtonElement_Release(IHTMLButtonElement
*iface
)
1693 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1695 return IHTMLDOMNode_Release(&This
->element
.node
.IHTMLDOMNode_iface
);
1698 static HRESULT WINAPI
HTMLButtonElement_GetTypeInfoCount(IHTMLButtonElement
*iface
, UINT
*pctinfo
)
1700 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1702 return IDispatchEx_GetTypeInfoCount(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, pctinfo
);
1705 static HRESULT WINAPI
HTMLButtonElement_GetTypeInfo(IHTMLButtonElement
*iface
, UINT iTInfo
,
1706 LCID lcid
, ITypeInfo
**ppTInfo
)
1708 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1710 return IDispatchEx_GetTypeInfo(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, iTInfo
, lcid
, ppTInfo
);
1713 static HRESULT WINAPI
HTMLButtonElement_GetIDsOfNames(IHTMLButtonElement
*iface
, REFIID riid
,
1714 LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
1716 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1718 return IDispatchEx_GetIDsOfNames(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, riid
, rgszNames
,
1719 cNames
, lcid
, rgDispId
);
1722 static HRESULT WINAPI
HTMLButtonElement_Invoke(IHTMLButtonElement
*iface
, DISPID dispIdMember
,
1723 REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
,
1724 VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
1726 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1728 return IDispatchEx_Invoke(&This
->element
.node
.event_target
.dispex
.IDispatchEx_iface
, dispIdMember
, riid
,
1729 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
1732 static HRESULT WINAPI
HTMLButtonElement_get_type(IHTMLButtonElement
*iface
, BSTR
*p
)
1734 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1738 TRACE("(%p)->(%p)\n", This
, p
);
1740 nsAString_Init(&type_str
, NULL
);
1741 nsres
= nsIDOMHTMLButtonElement_GetType(This
->nsbutton
, &type_str
);
1742 return return_nsstr(nsres
, &type_str
, p
);
1745 static HRESULT WINAPI
HTMLButtonElement_put_value(IHTMLButtonElement
*iface
, BSTR v
)
1747 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1751 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
1753 nsAString_InitDepend(&nsstr
, v
);
1754 nsres
= nsIDOMHTMLButtonElement_SetValue(This
->nsbutton
, &nsstr
);
1755 nsAString_Finish(&nsstr
);
1756 if(NS_FAILED(nsres
)) {
1757 ERR("SetValue failed: %08x\n", nsres
);
1764 static HRESULT WINAPI
HTMLButtonElement_get_value(IHTMLButtonElement
*iface
, BSTR
*p
)
1766 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1767 nsAString value_str
;
1770 TRACE("(%p)->(%p)\n", This
, p
);
1772 nsAString_Init(&value_str
, NULL
);
1773 nsres
= nsIDOMHTMLButtonElement_GetValue(This
->nsbutton
, &value_str
);
1774 return return_nsstr(nsres
, &value_str
, p
);
1777 static HRESULT WINAPI
HTMLButtonElement_put_name(IHTMLButtonElement
*iface
, BSTR v
)
1779 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1783 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
1785 nsAString_InitDepend(&name_str
, v
);
1786 nsres
= nsIDOMHTMLButtonElement_SetName(This
->nsbutton
, &name_str
);
1787 nsAString_Finish(&name_str
);
1788 if(NS_FAILED(nsres
)) {
1789 ERR("SetName failed: %08x\n", nsres
);
1796 static HRESULT WINAPI
HTMLButtonElement_get_name(IHTMLButtonElement
*iface
, BSTR
*p
)
1798 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1802 TRACE("(%p)->(%p)\n", This
, p
);
1804 nsAString_Init(&name_str
, NULL
);
1805 nsres
= nsIDOMHTMLButtonElement_GetName(This
->nsbutton
, &name_str
);
1806 return return_nsstr(nsres
, &name_str
, p
);
1809 static HRESULT WINAPI
HTMLButtonElement_put_status(IHTMLButtonElement
*iface
, VARIANT v
)
1811 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1812 FIXME("(%p)->(%s)\n", This
, debugstr_variant(&v
));
1816 static HRESULT WINAPI
HTMLButtonElement_get_status(IHTMLButtonElement
*iface
, VARIANT
*p
)
1818 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1819 FIXME("(%p)->(%p)\n", This
, p
);
1823 static HRESULT WINAPI
HTMLButtonElement_put_disabled(IHTMLButtonElement
*iface
, VARIANT_BOOL v
)
1825 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1828 TRACE("(%p)->(%x)\n", This
, v
);
1830 nsres
= nsIDOMHTMLButtonElement_SetDisabled(This
->nsbutton
, !!v
);
1831 if(NS_FAILED(nsres
)) {
1832 ERR("SetDisabled failed: %08x\n", nsres
);
1839 static HRESULT WINAPI
HTMLButtonElement_get_disabled(IHTMLButtonElement
*iface
, VARIANT_BOOL
*p
)
1841 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1845 TRACE("(%p)->(%p)\n", This
, p
);
1847 nsres
= nsIDOMHTMLButtonElement_GetDisabled(This
->nsbutton
, &disabled
);
1848 if(NS_FAILED(nsres
)) {
1849 ERR("GetDisabled failed: %08x\n", nsres
);
1853 *p
= variant_bool(disabled
);
1857 static HRESULT WINAPI
HTMLButtonElement_get_form(IHTMLButtonElement
*iface
, IHTMLFormElement
**p
)
1859 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1860 nsIDOMHTMLFormElement
*nsform
;
1863 TRACE("(%p)->(%p)\n", This
, p
);
1865 nsres
= nsIDOMHTMLButtonElement_GetForm(This
->nsbutton
, &nsform
);
1866 return return_nsform(nsres
, nsform
, p
);
1869 static HRESULT WINAPI
HTMLButtonElement_createTextRange(IHTMLButtonElement
*iface
, IHTMLTxtRange
**range
)
1871 HTMLButtonElement
*This
= impl_from_IHTMLButtonElement(iface
);
1872 FIXME("(%p)->(%p)\n", This
, range
);
1876 static const IHTMLButtonElementVtbl HTMLButtonElementVtbl
= {
1877 HTMLButtonElement_QueryInterface
,
1878 HTMLButtonElement_AddRef
,
1879 HTMLButtonElement_Release
,
1880 HTMLButtonElement_GetTypeInfoCount
,
1881 HTMLButtonElement_GetTypeInfo
,
1882 HTMLButtonElement_GetIDsOfNames
,
1883 HTMLButtonElement_Invoke
,
1884 HTMLButtonElement_get_type
,
1885 HTMLButtonElement_put_value
,
1886 HTMLButtonElement_get_value
,
1887 HTMLButtonElement_put_name
,
1888 HTMLButtonElement_get_name
,
1889 HTMLButtonElement_put_status
,
1890 HTMLButtonElement_get_status
,
1891 HTMLButtonElement_put_disabled
,
1892 HTMLButtonElement_get_disabled
,
1893 HTMLButtonElement_get_form
,
1894 HTMLButtonElement_createTextRange
1897 static inline HTMLButtonElement
*button_from_HTMLDOMNode(HTMLDOMNode
*iface
)
1899 return CONTAINING_RECORD(iface
, HTMLButtonElement
, element
.node
);
1902 static HRESULT
HTMLButtonElement_QI(HTMLDOMNode
*iface
, REFIID riid
, void **ppv
)
1904 HTMLButtonElement
*This
= button_from_HTMLDOMNode(iface
);
1908 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
1909 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
1910 *ppv
= &This
->IHTMLButtonElement_iface
;
1911 }else if(IsEqualGUID(&IID_IHTMLButtonElement
, riid
)) {
1912 TRACE("(%p)->(IID_IHTMLButtonElement %p)\n", This
, ppv
);
1913 *ppv
= &This
->IHTMLButtonElement_iface
;
1915 return HTMLElement_QI(&This
->element
.node
, riid
, ppv
);
1918 IUnknown_AddRef((IUnknown
*)*ppv
);
1922 static HRESULT
HTMLButtonElementImpl_put_disabled(HTMLDOMNode
*iface
, VARIANT_BOOL v
)
1924 HTMLButtonElement
*This
= button_from_HTMLDOMNode(iface
);
1925 return IHTMLButtonElement_put_disabled(&This
->IHTMLButtonElement_iface
, v
);
1928 static HRESULT
HTMLButtonElementImpl_get_disabled(HTMLDOMNode
*iface
, VARIANT_BOOL
*p
)
1930 HTMLButtonElement
*This
= button_from_HTMLDOMNode(iface
);
1931 return IHTMLButtonElement_get_disabled(&This
->IHTMLButtonElement_iface
, p
);
1934 static BOOL
HTMLButtonElement_is_text_edit(HTMLDOMNode
*iface
)
1939 static void HTMLButtonElement_traverse(HTMLDOMNode
*iface
, nsCycleCollectionTraversalCallback
*cb
)
1941 HTMLButtonElement
*This
= button_from_HTMLDOMNode(iface
);
1944 note_cc_edge((nsISupports
*)This
->nsbutton
, "This->nsbutton", cb
);
1947 static void HTMLButtonElement_unlink(HTMLDOMNode
*iface
)
1949 HTMLButtonElement
*This
= button_from_HTMLDOMNode(iface
);
1951 if(This
->nsbutton
) {
1952 nsIDOMHTMLButtonElement
*nsbutton
= This
->nsbutton
;
1954 This
->nsbutton
= NULL
;
1955 nsIDOMHTMLButtonElement_Release(nsbutton
);
1959 static const NodeImplVtbl HTMLButtonElementImplVtbl
= {
1960 &CLSID_HTMLButtonElement
,
1961 HTMLButtonElement_QI
,
1962 HTMLElement_destructor
,
1965 HTMLElement_handle_event
,
1966 HTMLElement_get_attr_col
,
1968 HTMLButtonElementImpl_put_disabled
,
1969 HTMLButtonElementImpl_get_disabled
,
1975 HTMLButtonElement_traverse
,
1976 HTMLButtonElement_unlink
,
1977 HTMLButtonElement_is_text_edit
1980 static const tid_t HTMLButtonElement_iface_tids
[] = {
1982 IHTMLButtonElement_tid
,
1986 static dispex_static_data_t HTMLButtonElement_dispex
= {
1988 DispHTMLButtonElement_tid
,
1989 HTMLButtonElement_iface_tids
,
1990 HTMLElement_init_dispex_info
1993 HRESULT
HTMLButtonElement_Create(HTMLDocumentNode
*doc
, nsIDOMElement
*nselem
, HTMLElement
**elem
)
1995 HTMLButtonElement
*ret
;
1998 ret
= heap_alloc_zero(sizeof(*ret
));
2000 return E_OUTOFMEMORY
;
2002 ret
->IHTMLButtonElement_iface
.lpVtbl
= &HTMLButtonElementVtbl
;
2003 ret
->element
.node
.vtbl
= &HTMLButtonElementImplVtbl
;
2005 HTMLElement_Init(&ret
->element
, doc
, nselem
, &HTMLButtonElement_dispex
);
2007 nsres
= nsIDOMElement_QueryInterface(nselem
, &IID_nsIDOMHTMLButtonElement
, (void**)&ret
->nsbutton
);
2008 assert(nsres
== NS_OK
);
2010 *elem
= &ret
->element
;