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