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