Module: wine Branch: master Commit: 4a9eea3516f750f5f99790d3b9cec160974fa847 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4a9eea3516f750f5f99790d3b9...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Mar 26 11:41:56 2012 +0200
jscript: Added beginning support for JScriptEncode object.
---
dlls/jscript/jscript.c | 16 +++++----------- dlls/jscript/jscript.h | 2 +- dlls/jscript/jscript_main.c | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 12 deletions(-)
diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c index 5bd5db4..4674ffc 100644 --- a/dlls/jscript/jscript.c +++ b/dlls/jscript/jscript.c @@ -55,6 +55,7 @@ typedef struct { LONG thread_id; LCID lcid; DWORD version; + BOOL is_encode;
IActiveScriptSite *site;
@@ -1029,25 +1030,17 @@ static const IVariantChangeTypeVtbl VariantChangeTypeVtbl = { VariantChangeType_ChangeType };
-HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, - REFIID riid, void **ppv) +HRESULT create_jscript_object(BOOL is_encode, REFIID riid, void **ppv) { JScript *ret; HRESULT hres;
- TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv); - - if(pUnkOuter) { - *ppv = NULL; - return CLASS_E_NOAGGREGATION; - } - - lock_module(); - ret = heap_alloc_zero(sizeof(*ret)); if(!ret) return E_OUTOFMEMORY;
+ lock_module(); + ret->IActiveScript_iface.lpVtbl = &JScriptVtbl; ret->IActiveScriptParse_iface.lpVtbl = &JScriptParseVtbl; ret->IActiveScriptParseProcedure2_iface.lpVtbl = &JScriptParseProcedureVtbl; @@ -1056,6 +1049,7 @@ HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUn ret->IVariantChangeType_iface.lpVtbl = &VariantChangeTypeVtbl; ret->ref = 1; ret->safeopt = INTERFACE_USES_DISPEX; + ret->is_encode = is_encode;
hres = IActiveScript_QueryInterface(&ret->IActiveScript_iface, riid, ppv); IActiveScript_Release(&ret->IActiveScript_iface); diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h index 41085f1..a64de90 100644 --- a/dlls/jscript/jscript.h +++ b/dlls/jscript/jscript.h @@ -505,7 +505,7 @@ static inline BOOL is_jscript_error(HRESULT hres)
const char *debugstr_variant(const VARIANT*) DECLSPEC_HIDDEN;
-HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; +HRESULT create_jscript_object(BOOL,REFIID,void**) DECLSPEC_HIDDEN;
extern LONG module_ref DECLSPEC_HIDDEN;
diff --git a/dlls/jscript/jscript_main.c b/dlls/jscript/jscript_main.c index b97e258..c7419fc 100644 --- a/dlls/jscript/jscript_main.c +++ b/dlls/jscript/jscript_main.c @@ -83,6 +83,19 @@ static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock) return S_OK; }
+static HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, + REFIID riid, void **ppv) +{ + TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv); + + if(outer) { + *ppv = NULL; + return CLASS_E_NOAGGREGATION; + } + + return create_jscript_object(FALSE, riid, ppv); +} + static const IClassFactoryVtbl JScriptFactoryVtbl = { ClassFactory_QueryInterface, ClassFactory_AddRef, @@ -93,6 +106,29 @@ static const IClassFactoryVtbl JScriptFactoryVtbl = {
static IClassFactory JScriptFactory = { &JScriptFactoryVtbl };
+static HRESULT WINAPI JScriptEncodeFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, + REFIID riid, void **ppv) +{ + TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv); + + if(outer) { + *ppv = NULL; + return CLASS_E_NOAGGREGATION; + } + + return create_jscript_object(TRUE, riid, ppv); +} + +static const IClassFactoryVtbl JScriptEncodeFactoryVtbl = { + ClassFactory_QueryInterface, + ClassFactory_AddRef, + ClassFactory_Release, + JScriptEncodeFactory_CreateInstance, + ClassFactory_LockServer +}; + +static IClassFactory JScriptEncodeFactory = { &JScriptEncodeFactoryVtbl }; + /****************************************************************** * DllMain (jscript.@) */ @@ -123,6 +159,11 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) return IClassFactory_QueryInterface(&JScriptFactory, riid, ppv); }
+ if(IsEqualGUID(&CLSID_JScriptEncode, rclsid)) { + TRACE("(CLSID_JScriptEncode %s %p)\n", debugstr_guid(riid), ppv); + return IClassFactory_QueryInterface(&JScriptEncodeFactory, riid, ppv); + } + FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; }