Module: wine Branch: master Commit: 9881ec35eba98a4f8515fffadadf00eeeb682e38 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9881ec35eba98a4f8515fffada...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Nov 30 17:58:59 2009 +0100
mshtml: Added IHTMLElement2::get_readyState implementation.
---
dlls/mshtml/htmlelem2.c | 23 +++++++++++++++++++++-- dlls/mshtml/htmliframe.c | 10 +++++++++- dlls/mshtml/htmlimg.c | 17 +++++++++++++++-- dlls/mshtml/htmlscript.c | 17 +++++++++++++++-- dlls/mshtml/mshtml_private.h | 1 + 5 files changed, 61 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlelem2.c b/dlls/mshtml/htmlelem2.c index d001eaa..a42b73a 100644 --- a/dlls/mshtml/htmlelem2.c +++ b/dlls/mshtml/htmlelem2.c @@ -662,8 +662,27 @@ static HRESULT WINAPI HTMLElement2_detachEvent(IHTMLElement2 *iface, BSTR event, static HRESULT WINAPI HTMLElement2_get_readyState(IHTMLElement2 *iface, VARIANT *p) { HTMLElement *This = HTMLELEM2_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + BSTR str; + + TRACE("(%p)->(%p)\n", This, p); + + if(This->node.vtbl->get_readystate) { + HRESULT hres; + + hres = This->node.vtbl->get_readystate(&This->node, &str); + if(FAILED(hres)) + return hres; + }else { + static const WCHAR completeW[] = {'c','o','m','p','l','e','t','e',0}; + + str = SysAllocString(completeW); + if(!str) + return E_OUTOFMEMORY; + } + + V_VT(p) = VT_BSTR; + V_BSTR(p) = str; + return S_OK; }
static HRESULT WINAPI HTMLElement2_put_onreadystatechange(IHTMLElement2 *iface, VARIANT v) diff --git a/dlls/mshtml/htmliframe.c b/dlls/mshtml/htmliframe.c index 8c3c520..382e049 100644 --- a/dlls/mshtml/htmliframe.c +++ b/dlls/mshtml/htmliframe.c @@ -72,6 +72,13 @@ static HRESULT HTMLIFrame_get_document(HTMLDOMNode *iface, IDispatch **p) return S_OK; }
+static HRESULT HTMLIFrame_get_readystate(HTMLDOMNode *iface, BSTR *p) +{ + HTMLIFrame *This = HTMLIFRAME_NODE_THIS(iface); + + return IHTMLFrameBase2_get_readyState(HTMLFRAMEBASE2(&This->framebase), p); +} + #undef HTMLIFRAME_NODE_THIS
static const NodeImplVtbl HTMLIFrameImplVtbl = { @@ -81,7 +88,8 @@ static const NodeImplVtbl HTMLIFrameImplVtbl = { NULL, NULL, NULL, - HTMLIFrame_get_document + HTMLIFrame_get_document, + HTMLIFrame_get_readystate };
static const tid_t HTMLIFrame_iface_tids[] = { diff --git a/dlls/mshtml/htmlimg.c b/dlls/mshtml/htmlimg.c index bfccdd5..60333c6 100644 --- a/dlls/mshtml/htmlimg.c +++ b/dlls/mshtml/htmlimg.c @@ -39,7 +39,7 @@ typedef struct { nsIDOMHTMLImageElement *nsimg; } HTMLImgElement;
-#define HTMLIMG(x) (&(x)->lpHTMLImgElementVtbl) +#define HTMLIMG(x) ((IHTMLImgElement*) &(x)->lpHTMLImgElementVtbl)
#define HTMLIMG_THIS(iface) DEFINE_THIS(HTMLImgElement, HTMLImgElement, iface)
@@ -572,11 +572,24 @@ static void HTMLImgElement_destructor(HTMLDOMNode *iface) HTMLElement_destructor(&This->element.node); }
+static HRESULT HTMLImgElement_get_readystate(HTMLDOMNode *iface, BSTR *p) +{ + HTMLImgElement *This = HTMLIMG_NODE_THIS(iface); + + return IHTMLImgElement_get_readyState(HTMLIMG(This), p); +} + #undef HTMLIMG_NODE_THIS
static const NodeImplVtbl HTMLImgElementImplVtbl = { HTMLImgElement_QI, - HTMLImgElement_destructor + HTMLImgElement_destructor, + NULL, + NULL, + NULL, + NULL, + NULL, + HTMLImgElement_get_readystate };
static const tid_t HTMLImgElement_iface_tids[] = { diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c index a038c55..d86f398 100644 --- a/dlls/mshtml/htmlscript.c +++ b/dlls/mshtml/htmlscript.c @@ -39,7 +39,7 @@ typedef struct { nsIDOMHTMLScriptElement *nsscript; } HTMLScriptElement;
-#define HTMLSCRIPT(x) (&(x)->lpHTMLScriptElementVtbl) +#define HTMLSCRIPT(x) ((IHTMLScriptElement*) &(x)->lpHTMLScriptElementVtbl)
#define HTMLSCRIPT_THIS(iface) DEFINE_THIS(HTMLScriptElement, HTMLScriptElement, iface)
@@ -299,11 +299,24 @@ static void HTMLScriptElement_destructor(HTMLDOMNode *iface) HTMLElement_destructor(&This->element.node); }
+static HRESULT HTMLScriptElement_get_readystate(HTMLDOMNode *iface, BSTR *p) +{ + HTMLScriptElement *This = HTMLSCRIPT_NODE_THIS(iface); + + return IHTMLScriptElement_get_readyState(HTMLSCRIPT(This), p); +} + #undef HTMLSCRIPT_NODE_THIS
static const NodeImplVtbl HTMLScriptElementImplVtbl = { HTMLScriptElement_QI, - HTMLScriptElement_destructor + HTMLScriptElement_destructor, + NULL, + NULL, + NULL, + NULL, + NULL, + HTMLScriptElement_get_readystate };
HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index d99fb54..cee256e 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -449,6 +449,7 @@ typedef struct { HRESULT (*put_disabled)(HTMLDOMNode*,VARIANT_BOOL); HRESULT (*get_disabled)(HTMLDOMNode*,VARIANT_BOOL*); HRESULT (*get_document)(HTMLDOMNode*,IDispatch**); + HRESULT (*get_readystate)(HTMLDOMNode*,BSTR*); } NodeImplVtbl;
struct HTMLDOMNode {