Hi Damjan,

Most of the patch looks good, with a few comments bellow.

On 12/2/19 3:44 AM, Damjan Jovanovic wrote:

diff --git a/dlls/ieframe/ieframe.h b/dlls/ieframe/ieframe.h
index 2b4861d79b..290bc8fee4 100644
--- a/dlls/ieframe/ieframe.h
+++ b/dlls/ieframe/ieframe.h
@@ -170,6 +170,8 @@ struct DocHost {
 };
 
 struct WebBrowser {
+    IUnknown                 IUnknown_inner;
+    IUnknown                *outer_unk;


We already have outer inside HlinkFrame, maybe we could just use that instead?


+static void test_Aggregation(void)
+{
+    HRESULT hr;
+    IUnknown *pUnknown = NULL;
+
+    hr = CoCreateInstance(&CLSID_WebBrowser, &unknown, CLSCTX_ALL, &IID_IUnknown, (void**)&pUnknown);
+    ok(hr == S_OK, "could not create instance of CLSID_WebBrowser with IID_IUnknown, hr = 0x%x\n", hr);
+    if (pUnknown)
+        IUnknown_Release(pUnknown);
+}


A bit more tests would be nice. See test_com_aggregation() from MSHTML tests for an example.


+static const struct IUnknownVtbl internal_unk_vtbl =
+{
+    Internal_QueryInterface,
+    Internal_AddRef,
+    Internal_Release
+};


Those functions could use a better name at very least to make logs more informative. How about using WebBrowser_* names and rename existing IUnknown implementation of IWebBrowser2 interface to, say, WebBrowser2_*?


Thanks,

Jacek