Module: wine Branch: master Commit: 4462fb356d7aa60d927e3a88faa8ac5d00872db7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4462fb356d7aa60d927e3a88fa...
Author: Jacek Caban jacek@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);