Module: wine Branch: master Commit: 21043e5acf479c2a0fde96e415ed5dd21bca15e2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=21043e5acf479c2a0fde96e415...
Author: Zhenbo Li litimetal@gmail.com Date: Wed Jul 22 23:34:05 2015 +0800
mshtml: Add IHTMLXMLHttpRequest::status property implementation.
---
dlls/mshtml/tests/xmlhttprequest.c | 18 +++++++++--------- dlls/mshtml/xmlhttprequest.c | 19 +++++++++++++++++-- 2 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/dlls/mshtml/tests/xmlhttprequest.c b/dlls/mshtml/tests/xmlhttprequest.c index db6aca4..713dedf 100644 --- a/dlls/mshtml/tests/xmlhttprequest.c +++ b/dlls/mshtml/tests/xmlhttprequest.c @@ -449,12 +449,12 @@ static void test_sync_xhr(IHTMLDocument2 *doc, const char *xml_url) ok(val == 0, "Expect UNSENT, got %d\n", val);
hres = IHTMLXMLHttpRequest_get_status(xhr, NULL); - todo_wine ok(hres == E_POINTER, "Expect E_POINTER, got %08x\n", hres); + ok(hres == E_POINTER, "Expect E_POINTER, got %08x\n", hres);
val = 0xdeadbeef; hres = IHTMLXMLHttpRequest_get_status(xhr, &val); - todo_wine ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); - todo_wine ok(val == 0, "Expect 0, got %d\n", val); + ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); + ok(val == 0, "Expect 0, got %d\n", val);
hres = IHTMLXMLHttpRequest_get_statusText(xhr, NULL); todo_wine ok(hres == E_POINTER, "Expect E_POINTER, got %08x\n", hres); @@ -561,8 +561,8 @@ static void test_async_xhr(IHTMLDocument2 *doc, const char *xml_url)
val = 0xdeadbeef; hres = IHTMLXMLHttpRequest_get_status(xhr, &val); - todo_wine ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); - todo_wine ok(val == 0, "Expect 0, got %d\n", val); + ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); + ok(val == 0, "Expect 0, got %d\n", val);
text = (BSTR)0xdeadbeef; hres = IHTMLXMLHttpRequest_get_statusText(xhr, &text); @@ -596,8 +596,8 @@ static void test_async_xhr(IHTMLDocument2 *doc, const char *xml_url)
val = 0xdeadbeef; hres = IHTMLXMLHttpRequest_get_status(xhr, &val); - todo_wine ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); - todo_wine ok(val == 0, "Expect 0, got %d\n", val); + ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); + ok(val == 0, "Expect 0, got %d\n", val);
hres = IHTMLXMLHttpRequest_get_statusText(xhr, &text); todo_wine ok(hres == E_FAIL, "Expect E_FAIL, got: %08x\n", hres); @@ -630,8 +630,8 @@ static void test_async_xhr(IHTMLDocument2 *doc, const char *xml_url)
val = 0xdeadbeef; hres = IHTMLXMLHttpRequest_get_status(xhr, &val); - todo_wine ok(hres == S_OK, "get_status failed: %08x\n", hres); - todo_wine ok(val == 200, "Expect 200, got %d\n", val); + ok(hres == S_OK, "get_status failed: %08x\n", hres); + ok(val == 200, "Expect 200, got %d\n", val);
text = NULL; hres = IHTMLXMLHttpRequest_get_statusText(xhr, &text); diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c index f680b17..5b5cf87 100644 --- a/dlls/mshtml/xmlhttprequest.c +++ b/dlls/mshtml/xmlhttprequest.c @@ -312,8 +312,23 @@ static HRESULT WINAPI HTMLXMLHttpRequest_get_responseXML(IHTMLXMLHttpRequest *if static HRESULT WINAPI HTMLXMLHttpRequest_get_status(IHTMLXMLHttpRequest *iface, LONG *p) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + DWORD val; + nsresult nsres; + TRACE("(%p)->(%p)\n", This, p); + + if(!p) + return E_POINTER; + + nsres = nsIXMLHttpRequest_GetStatus(This->nsxhr, &val); + if(NS_FAILED(nsres)) { + ERR("nsIXMLHttpRequest_GetStatus failed: %08x\n", nsres); + return E_FAIL; + } + *p = val; + if(val == 0) + return E_FAIL; /* WinAPI thinks this is an error */ + + return S_OK; }
static HRESULT WINAPI HTMLXMLHttpRequest_get_statusText(IHTMLXMLHttpRequest *iface, BSTR *p)