Jacek Caban : mshtml: Added IHTMLElement2::get_tabIndex implementation.
Alexandre Julliard
julliard at winehq.org
Tue Jun 24 06:45:05 CDT 2008
Module: wine
Branch: master
Commit: 807f5c78849318497163cb471d5e18898d1e811d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=807f5c78849318497163cb471d5e18898d1e811d
Author: Jacek Caban <jacek at 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);
More information about the wine-cvs
mailing list