Jacek Caban : mshtml: Added IHTMLElement2::get_tabIndex implementation.
Module: wine Branch: master Commit: 807f5c78849318497163cb471d5e18898d1e811d URL: http://source.winehq.org/git/wine.git/?a=commit;h=807f5c78849318497163cb471d... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Jun 23 20:02:03 2008 -0500 mshtml: Added IHTMLElement2::get_tabIndex implementation. --- dlls/mshtml/htmlelem2.c | 23 +++++++++++++++++++++-- dlls/mshtml/tests/dom.c | 17 ++++++++++++++++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/dlls/mshtml/htmlelem2.c b/dlls/mshtml/htmlelem2.c index fa4457a..572841c 100644 --- a/dlls/mshtml/htmlelem2.c +++ b/dlls/mshtml/htmlelem2.c @@ -390,8 +390,27 @@ static HRESULT WINAPI HTMLElement2_put_tabIndex(IHTMLElement2 *iface, short v) static HRESULT WINAPI HTMLElement2_get_tabIndex(IHTMLElement2 *iface, short *p) { HTMLElement *This = HTMLELEM2_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + nsIDOMNSHTMLElement *nselem; + PRInt32 index = 0; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); + if(NS_FAILED(nsres)) { + ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres); + return E_FAIL; + } + + nsres = nsIDOMNSHTMLElement_GetTabIndex(nselem, &index); + nsIDOMNSHTMLElement_Release(nselem); + if(NS_FAILED(nsres)) { + ERR("GetTabIndex failed: %08x\n", nsres); + return E_FAIL; + } + + *p = index; + return S_OK; } static HRESULT WINAPI HTMLElement2_focus(IHTMLElement2 *iface) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 6ff4201..65e9de6 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -42,7 +42,7 @@ static const char elem_test_str[] = "<html><head><title>test</title><style>.body { margin-right: 0px; }</style>" "<body>text test<!-- a comment -->" "<a href=\"http://test\" name=\"x\">link</a>" - "<input id=\"in\" class=\"testclass\"/>" + "<input id=\"in\" class=\"testclass\" tabIndex=\"2\" />" "<select id=\"s\"><option id=\"x\">opt1</option><option id=\"y\">opt2</option></select>" "<textarea id=\"X\">text text</textarea>" "<table><tbody></tbody></table>" @@ -952,6 +952,19 @@ static void _test_elem_class(unsigned line, IUnknown *unk, const char *exclass) SysFreeString(class); } +#define test_elem_tabindex(u,i) _test_elem_tabindex(__LINE__,u,i) +static void _test_elem_tabindex(unsigned line, IUnknown *unk, short exindex) +{ + IHTMLElement2 *elem2 = _get_elem2_iface(line, unk); + short index = -3; + HRESULT hres; + + hres = IHTMLElement2_get_tabIndex(elem2, &index); + IHTMLElement2_Release(elem2); + ok_(__FILE__,line) (hres == S_OK, "get_tabIndex failed: %08x\n", hres); + ok_(__FILE__,line) (index == exindex, "unexpected index %d\n", index); +} + #define test_elem_set_class(u,c) _test_elem_set_class(__LINE__,u,c) static void _test_elem_set_class(unsigned line, IUnknown *unk, const char *class) { @@ -1840,6 +1853,7 @@ static void test_elems(IHTMLDocument2 *doc) test_elem_class((IUnknown*)elem, NULL); test_elem_set_class((IUnknown*)elem, "cl"); test_elem_set_class((IUnknown*)elem, NULL); + test_elem_tabindex((IUnknown*)elem, 0); IHTMLElement_Release(elem); } @@ -1901,6 +1915,7 @@ static void test_elems(IHTMLDocument2 *doc) test_input_put_value((IUnknown*)elem, "test"); test_input_value((IUnknown*)elem, NULL); test_elem_class((IUnknown*)elem, "testclass"); + test_elem_tabindex((IUnknown*)elem, 2); IHTMLInputElement_Release(input); IHTMLElement_Release(elem);
participants (1)
-
Alexandre Julliard