jscript: Fixed Object.toLocaleString implementation.
This commit is contained in:
parent
9f0969fbcb
commit
5323a454c8
@ -844,6 +844,23 @@ HRESULT jsdisp_call(DispatchEx *disp, DISPID id, LCID lcid, WORD flags, DISPPARA
|
|||||||
return invoke_prop_func(disp, disp, prop, lcid, flags, dp, retv, ei, caller);
|
return invoke_prop_func(disp, disp, prop, lcid, flags, dp, retv, ei, caller);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT jsdisp_call_name(DispatchEx *disp, const WCHAR *name, LCID lcid, WORD flags, DISPPARAMS *dp, VARIANT *retv,
|
||||||
|
jsexcept_t *ei, IServiceProvider *caller)
|
||||||
|
{
|
||||||
|
dispex_prop_t *prop;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
hres = find_prop_name_prot(disp, name, TRUE, &prop);
|
||||||
|
if(FAILED(hres))
|
||||||
|
return hres;
|
||||||
|
|
||||||
|
memset(ei, 0, sizeof(*ei));
|
||||||
|
if(retv)
|
||||||
|
V_VT(retv) = VT_EMPTY;
|
||||||
|
|
||||||
|
return invoke_prop_func(disp, disp, prop, lcid, flags, dp, retv, ei, caller);
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT disp_call(IDispatch *disp, DISPID id, LCID lcid, WORD flags, DISPPARAMS *dp, VARIANT *retv,
|
HRESULT disp_call(IDispatch *disp, DISPID id, LCID lcid, WORD flags, DISPPARAMS *dp, VARIANT *retv,
|
||||||
jsexcept_t *ei, IServiceProvider *caller)
|
jsexcept_t *ei, IServiceProvider *caller)
|
||||||
{
|
{
|
||||||
|
@ -131,6 +131,7 @@ DispatchEx *iface_to_jsdisp(IUnknown*);
|
|||||||
HRESULT disp_call(IDispatch*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
HRESULT disp_call(IDispatch*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
HRESULT jsdisp_call_value(DispatchEx*,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
HRESULT jsdisp_call_value(DispatchEx*,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
HRESULT jsdisp_call(DispatchEx*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
HRESULT jsdisp_call(DispatchEx*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
|
HRESULT jsdisp_call_name(DispatchEx*,const WCHAR*,LCID,WORD,DISPPARAMS*,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
HRESULT disp_propget(IDispatch*,DISPID,LCID,VARIANT*,jsexcept_t*,IServiceProvider*);
|
HRESULT disp_propget(IDispatch*,DISPID,LCID,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
HRESULT disp_propput(IDispatch*,DISPID,LCID,VARIANT*,jsexcept_t*,IServiceProvider*);
|
HRESULT disp_propput(IDispatch*,DISPID,LCID,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
HRESULT jsdisp_propget(DispatchEx*,DISPID,LCID,VARIANT*,jsexcept_t*,IServiceProvider*);
|
HRESULT jsdisp_propget(DispatchEx*,DISPID,LCID,VARIANT*,jsexcept_t*,IServiceProvider*);
|
||||||
|
@ -74,8 +74,11 @@ static HRESULT Object_toString(DispatchEx *dispex, LCID lcid, WORD flags, DISPPA
|
|||||||
static HRESULT Object_toLocaleString(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp,
|
static HRESULT Object_toLocaleString(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp,
|
||||||
VARIANT *retv, jsexcept_t *ei, IServiceProvider *sp)
|
VARIANT *retv, jsexcept_t *ei, IServiceProvider *sp)
|
||||||
{
|
{
|
||||||
|
DISPPARAMS params = {NULL, NULL, 0, 0};
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
return Object_toString(dispex, lcid, flags, dp, retv, ei, sp);
|
|
||||||
|
return jsdisp_call_name(dispex, toStringW, lcid, DISPATCH_METHOD, ¶ms, retv, ei, sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT Object_valueOf(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp,
|
static HRESULT Object_valueOf(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp,
|
||||||
|
@ -77,6 +77,14 @@ ok(tmp.f() === "[object RegExp]", "tmp.f() = " + tmp.f());
|
|||||||
(tmp = new String).f = Object.prototype.toString;
|
(tmp = new String).f = Object.prototype.toString;
|
||||||
ok(tmp.f() === "[object String]", "tmp.f() = " + tmp.f());
|
ok(tmp.f() === "[object String]", "tmp.f() = " + tmp.f());
|
||||||
|
|
||||||
|
var obj = new Object();
|
||||||
|
obj.toString = function (x) {
|
||||||
|
ok(arguments.length === 0, "arguments.length = " + arguments.length);
|
||||||
|
return "test";
|
||||||
|
};
|
||||||
|
ok((tmp = obj.toLocaleString()) === "test", "obj.toLocaleString() = " + tmp);
|
||||||
|
ok((tmp = obj.toLocaleString(1)) === "test", "obj.toLocaleString(1) = " + tmp);
|
||||||
|
|
||||||
ok("".length === 0, "\"\".length = " + "".length);
|
ok("".length === 0, "\"\".length = " + "".length);
|
||||||
ok(getVT("".length) == "VT_I4", "\"\".length = " + "".length);
|
ok(getVT("".length) == "VT_I4", "\"\".length = " + "".length);
|
||||||
ok("abc".length === 3, "\"abc\".length = " + "abc".length);
|
ok("abc".length === 3, "\"abc\".length = " + "abc".length);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user