Jacek Caban : jscript: Added beginning support for JScriptEncode object.
Alexandre Julliard
julliard at winehq.org
Mon Mar 26 12:29:30 CDT 2012
Module: wine
Branch: master
Commit: 4a9eea3516f750f5f99790d3b9cec160974fa847
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4a9eea3516f750f5f99790d3b9cec160974fa847
Author: Jacek Caban <jacek at 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;
}
More information about the wine-cvs
mailing list