[PATCH] ieframe: WebBrowser shouldn't support COM aggregation
Damjan Jovanovic
damjan.jov at gmail.com
Sun Dec 1 04:00:36 CST 2019
COM objects should either fully support aggregation or cleanly fail.
Our ieframe's WebBrowser completely ignores it. Fail with
CLASS_E_NOAGGREGATION like Windows does instead.
Signed-off-by: Damjan Jovanovic <damjan.jov at gmail.com>
---
dlls/ieframe/tests/webbrowser.c | 3 +++
dlls/ieframe/webbrowser.c | 3 +++
2 files changed, 6 insertions(+)
-------------- next part --------------
diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c
index db47fdf616..5984ba3f89 100644
--- a/dlls/ieframe/tests/webbrowser.c
+++ b/dlls/ieframe/tests/webbrowser.c
@@ -251,6 +251,9 @@ static IWebBrowser2 *_create_webbrowser(unsigned line)
hres = CoCreateInstance(&CLSID_WebBrowser, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
&IID_IWebBrowser2, (void**)&ret);
ok_(__FILE__,line)(hres == S_OK, "Creating WebBrowser object failed: %08x\n", hres);
+ hres = CoCreateInstance(&CLSID_WebBrowser, (IUnknown*)ret, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+ &IID_IWebBrowser2, (void**)&ret);
+ ok_(__FILE__,line)(hres == CLASS_E_NOAGGREGATION, "WebBrowser aggregation didn't fail as expected, %08x\n", hres);
return ret;
}
diff --git a/dlls/ieframe/webbrowser.c b/dlls/ieframe/webbrowser.c
index 03acf38869..e997a90022 100644
--- a/dlls/ieframe/webbrowser.c
+++ b/dlls/ieframe/webbrowser.c
@@ -1231,6 +1231,9 @@ static HRESULT create_webbrowser(int version, IUnknown *outer, REFIID riid, void
TRACE("(%p %s %p) version=%d\n", outer, debugstr_guid(riid), ppv, version);
+ if (outer)
+ return CLASS_E_NOAGGREGATION;
+
ret = heap_alloc_zero(sizeof(WebBrowser));
ret->IWebBrowser2_iface.lpVtbl = &WebBrowser2Vtbl;
More information about the wine-devel
mailing list