Jacek Caban : jscript: Query created ActiveXObject for IObjectWithSite interface.

Alexandre Julliard julliard at winehq.org
Mon Oct 5 09:54:27 CDT 2009


Module: wine
Branch: master
Commit: 4462fb356d7aa60d927e3a88faa8ac5d00872db7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4462fb356d7aa60d927e3a88faa8ac5d00872db7

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Oct  4 22:01:27 2009 +0200

jscript: Query created ActiveXObject for IObjectWithSite interface.

---

 dlls/jscript/activex.c       |    7 +++++++
 dlls/jscript/tests/activex.c |   14 ++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/dlls/jscript/activex.c b/dlls/jscript/activex.c
index e37abd2..027a2e2 100644
--- a/dlls/jscript/activex.c
+++ b/dlls/jscript/activex.c
@@ -59,6 +59,7 @@ static IInternetHostSecurityManager *get_sec_mgr(script_ctx_t *ctx)
 static IUnknown *create_activex_object(script_ctx_t *ctx, const WCHAR *progid)
 {
     IInternetHostSecurityManager *secmgr;
+    IObjectWithSite *obj_site;
     struct CONFIRMSAFETY cs;
     IClassFactoryEx *cfex;
     IClassFactory *cf;
@@ -114,6 +115,12 @@ static IUnknown *create_activex_object(script_ctx_t *ctx, const WCHAR *progid)
         return NULL;
     }
 
+    hres = IUnknown_QueryInterface(obj, &IID_IObjectWithSite, (void**)&obj_site);
+    if(SUCCEEDED(hres)) {
+        FIXME("Set object site\n");
+        IObjectWithSite_Release(obj_site);
+    }
+
     return obj;
 }
 
diff --git a/dlls/jscript/tests/activex.c b/dlls/jscript/tests/activex.c
index aabf8f5..cd7b5a0 100644
--- a/dlls/jscript/tests/activex.c
+++ b/dlls/jscript/tests/activex.c
@@ -66,6 +66,7 @@ DEFINE_EXPECT(QueryCustomPolicy);
 DEFINE_EXPECT(reportSuccess);
 DEFINE_EXPECT(Host_QS_SecMgr);
 DEFINE_EXPECT(Caller_QS_SecMgr);
+DEFINE_EXPECT(QI_IObjectWithSite);
 
 static const WCHAR testW[] = {'t','e','s','t',0};
 
@@ -132,6 +133,9 @@ static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid,
         if(FAILED(QI_IDispatch_hres))
             return QI_IDispatch_hres;
         *ppv = iface;
+    }else if(IsEqualGUID(&IID_IObjectWithSite, riid)) {
+        CHECK_EXPECT(QI_IObjectWithSite);
+        return E_NOINTERFACE;
     }else {
         return E_NOINTERFACE;
     }
@@ -747,12 +751,14 @@ static void test_ActiveXObject(void)
     SET_EXPECT(ProcessUrlAction);
     SET_EXPECT(CreateInstance);
     SET_EXPECT(QueryCustomPolicy);
+    SET_EXPECT(QI_IObjectWithSite);
     SET_EXPECT(reportSuccess);
     parse_script_a(parser, "(new ActiveXObject('Wine.Test')).reportSuccess();");
     CHECK_CALLED(Host_QS_SecMgr);
     CHECK_CALLED(ProcessUrlAction);
     CHECK_CALLED(CreateInstance);
     CHECK_CALLED(QueryCustomPolicy);
+    CHECK_CALLED(QI_IObjectWithSite);
     CHECK_CALLED(reportSuccess);
 
     proc = parse_procedure_a(parser, "(new ActiveXObject('Wine.Test')).reportSuccess();");
@@ -760,21 +766,25 @@ static void test_ActiveXObject(void)
     SET_EXPECT(ProcessUrlAction);
     SET_EXPECT(CreateInstance);
     SET_EXPECT(QueryCustomPolicy);
+    SET_EXPECT(QI_IObjectWithSite);
     SET_EXPECT(reportSuccess);
     call_procedure(proc, NULL);
     CHECK_CALLED(ProcessUrlAction);
     CHECK_CALLED(CreateInstance);
     CHECK_CALLED(QueryCustomPolicy);
+    CHECK_CALLED(QI_IObjectWithSite);
     CHECK_CALLED(reportSuccess);
 
     SET_EXPECT(ProcessUrlAction);
     SET_EXPECT(CreateInstance);
     SET_EXPECT(QueryCustomPolicy);
+    SET_EXPECT(QI_IObjectWithSite);
     SET_EXPECT(reportSuccess);
     call_procedure(proc, &caller_sp);
     CHECK_CALLED(ProcessUrlAction);
     CHECK_CALLED(CreateInstance);
     CHECK_CALLED(QueryCustomPolicy);
+    CHECK_CALLED(QI_IObjectWithSite);
     CHECK_CALLED(reportSuccess);
 
     IDispatchEx_Release(proc);
@@ -787,12 +797,14 @@ static void test_ActiveXObject(void)
     SET_EXPECT(ProcessUrlAction);
     SET_EXPECT(CreateInstance);
     SET_EXPECT(QueryCustomPolicy);
+    SET_EXPECT(QI_IObjectWithSite);
     SET_EXPECT(reportSuccess);
     call_procedure(proc, &caller_sp);
     CHECK_CALLED(Host_QS_SecMgr);
     CHECK_CALLED(ProcessUrlAction);
     CHECK_CALLED(CreateInstance);
     CHECK_CALLED(QueryCustomPolicy);
+    CHECK_CALLED(QI_IObjectWithSite);
     CHECK_CALLED(reportSuccess);
 
     parse_script_a(parser, "testException(function() { new ActiveXObject('Wine.TestABC'); }, 'Error', -2146827859);");
@@ -866,12 +878,14 @@ static void test_ActiveXObject(void)
     SET_EXPECT(ProcessUrlAction);
     SET_EXPECT(CreateInstance);
     SET_EXPECT(QueryCustomPolicy);
+    SET_EXPECT(QI_IObjectWithSite);
     SET_EXPECT(reportSuccess);
     parse_script_a(parser, "(new ActiveXObject('Wine.Test')).reportSuccess();");
     CHECK_CALLED(Host_QS_SecMgr);
     CHECK_CALLED(ProcessUrlAction);
     CHECK_CALLED(CreateInstance);
     CHECK_CALLED(QueryCustomPolicy);
+    CHECK_CALLED(QI_IObjectWithSite);
     CHECK_CALLED(reportSuccess);
 
     IUnknown_Release(parser);




More information about the wine-cvs mailing list