static HWND container_hwnd, plugin_hwnd;
static int plugin_behavior;
static BOOL no_quickact;
+static LONG activex_refcnt;
#define TESTACTIVEX_CLSID "{178fc163-f585-4e24-9c13-4bb7f6680746}"
NULL
};
-static const char *debugstr_guid(REFIID riid)
-{
- static char buf[50];
-
- sprintf(buf, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
- riid->Data1, riid->Data2, riid->Data3, riid->Data4[0],
- riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4],
- riid->Data4[5], riid->Data4[6], riid->Data4[7]);
-
- return buf;
-}
-
static BOOL iface_cmp(IUnknown *iface1, IUnknown *iface2)
{
IUnknown *unk1, *unk2;
for(piid = iids; *piid; piid++) {
hres = IUnknown_QueryInterface(iface, *piid, (void**)&unk);
- ok_(__FILE__,line) (hres == S_OK, "Could not get %s interface: %08x\n", debugstr_guid(*piid), hres);
+ ok_(__FILE__,line) (hres == S_OK, "Could not get %s interface: %08x\n", wine_dbgstr_guid(*piid), hres);
if(SUCCEEDED(hres))
IUnknown_Release(unk);
}
}
}
- return DefWindowProc(hwnd, msg, wParam, lParam);
+ return DefWindowProcW(hwnd, msg, wParam, lParam);
}
static void create_plugin_window(HWND parent, const RECT *rect)
static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface, REFIID riid, void **ppv)
{
- ok(0, "unexpected QI call %s\n", debugstr_guid(riid));
+ ok(0, "unexpected QI call %s\n", wine_dbgstr_guid(riid));
return E_NOINTERFACE;
}
static ULONG WINAPI OleControl_AddRef(IOleControl *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI OleControl_Release(IOleControl *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI OleControl_GetControlInfo(IOleControl *iface, CONTROLINFO *pCI)
static ULONG WINAPI QuickActivate_AddRef(IQuickActivate *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI QuickActivate_Release(IQuickActivate *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI QuickActivate_QuickActivate(IQuickActivate *iface, QACONTAINER *container, QACONTROL *control)
static ULONG WINAPI PersistPropertyBag_AddRef(IPersistPropertyBag *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI PersistPropertyBag_Release(IPersistPropertyBag *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI PersistPropertyBag_GetClassID(IPersistPropertyBag *face, CLSID *pClassID)
static ULONG WINAPI Dispatch_AddRef(IDispatch *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI Dispatch_Release(IDispatch *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI Dispatch_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo)
static HRESULT WINAPI Dispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames,
UINT cNames, LCID lcid, DISPID *rgDispId)
{
- ok(IsEqualGUID(riid, &IID_NULL), "riid = %s\n", debugstr_guid(riid));
+ ok(IsEqualGUID(riid, &IID_NULL), "riid = %s\n", wine_dbgstr_guid(riid));
ok(cNames == 1, "cNames = %d\n", cNames);
ok(rgszNames != NULL, "rgszNames == NULL\n");
ok(rgDispId != NULL, "rgDispId == NULL\n");
LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
- ok(IsEqualGUID(riid, &IID_NULL), "riid = %s\n", debugstr_guid(riid));
+ ok(IsEqualGUID(riid, &IID_NULL), "riid = %s\n", wine_dbgstr_guid(riid));
ok(pDispParams != NULL, "pDispParams == NULL\n");
ok(!pDispParams->cNamedArgs, "pDispParams->cNamedArgs = %d\n", pDispParams->cNamedArgs);
ok(!pDispParams->rgdispidNamedArgs, "pDispParams->rgdispidNamedArgs != NULL\n");
static ULONG WINAPI ProvideClassInfo_AddRef(IProvideClassInfo *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI ProvideClassInfo_Release(IProvideClassInfo *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideClassInfo *iface, ITypeInfo **ppTI)
static ULONG WINAPI ConnectionPointContainer_AddRef(IConnectionPointContainer *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI ConnectionPointContainer_Release(IConnectionPointContainer *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI ConnectionPointContainer_EnumConnectionPoints(IConnectionPointContainer *iface,
}
CHECK_EXPECT(FindConnectionPoint);
- ok(IsEqualGUID(riid, &DIID_DispActiveXTest), "riid = %s\n", debugstr_guid(riid));
+ ok(IsEqualGUID(riid, &DIID_DispActiveXTest), "riid = %s\n", wine_dbgstr_guid(riid));
+ IConnectionPoint_AddRef(&ConnectionPoint);
*ppCP = &ConnectionPoint;
return S_OK;
}
static ULONG WINAPI ViewObjectEx_AddRef(IViewObjectEx *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI ViewObjectEx_Release(IViewObjectEx *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI ViewObjectEx_Draw(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd,
static HRESULT WINAPI ViewObjectEx_QueryHitPoint(IViewObjectEx *iface, DWORD dwAspect, LPCRECT pRectBounds, POINT ptlLoc,
LONG lCloseHint, DWORD *pHitResult)
{
- ok(0, "unexpected call\n");
+ trace("QueryHitPoint call ignored\n");
return E_NOTIMPL;
}
static ULONG WINAPI OleObject_AddRef(IOleObject *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI OleObject_Release(IOleObject *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
static ULONG WINAPI OleInPlaceObject_AddRef(IOleInPlaceObjectWindowless *iface)
{
- return 2;
+ return ++activex_refcnt;
}
static ULONG WINAPI OleInPlaceObject_Release(IOleInPlaceObjectWindowless *iface)
{
- return 1;
+ return --activex_refcnt;
}
static HRESULT WINAPI OleInPlaceObject_GetWindow(IOleInPlaceObjectWindowless *iface,
static HRESULT WINAPI OleInPlaceObject_SetObjectRects(IOleInPlaceObjectWindowless *iface,
LPCRECT lprcPosRect, LPCRECT lprcClipRect)
{
- CHECK_EXPECT(SetObjectRects);
+ CHECK_EXPECT2(SetObjectRects);
return S_OK;
}
}else if(IsEqualGUID(riid, &IID_ITestActiveX)) {
CHECK_EXPECT(QI_ITestActiveX);
*ppv = &wrapped_iface;
+ return S_OK;
}else if(IsEqualGUID(riid, &IID_IOleWindow) || IsEqualGUID(riid, &IID_IOleInPlaceObject)
|| IsEqualGUID(&IID_IOleInPlaceObjectWindowless, riid)) {
*ppv = plugin_behavior == TEST_DISPONLY ? NULL : &OleInPlaceObjectWindowless;
}else {
- trace("QI %s\n", debugstr_guid(riid));
+ trace("QI %s\n", wine_dbgstr_guid(riid));
*ppv = NULL;
}
- return *ppv ? S_OK : E_NOINTERFACE;
+ if(!*ppv)
+ return E_NOINTERFACE;
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
}
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
if(IsEqualGUID(&IID_IClassFactoryEx, riid))
return E_NOINTERFACE; /* TODO */
- ok(0, "unexpected riid %s\n", debugstr_guid(riid));
+ ok(0, "unexpected riid %s\n", wine_dbgstr_guid(riid));
return E_NOTIMPL;
}
CHECK_EXPECT(CreateInstance);
ok(!outer, "outer = %p\n", outer);
- ok(IsEqualGUID(riid, &IID_IUnknown), "riid = %s\n", debugstr_guid(riid));
+ ok(IsEqualGUID(riid, &IID_IUnknown), "riid = %s\n", wine_dbgstr_guid(riid));
+ activex_refcnt++;
*ppv = &OleControl;
return S_OK;
}
hres = IHTMLObjectElement_put_width(objelem, v);
ok(hres == S_OK, "put_width failed: %08x\n", hres);
CHECK_CALLED(OnAmbientPropertyChange_UNKNOWN);
- CHECK_CALLED(Invoke_ENABLED);
+ CLEAR_CALLED(Invoke_ENABLED); /* Not called on IE10 */
hres = IHTMLObjectElement_get_width(objelem, &v);
ok(hres == S_OK, "get_width failed: %08x\n", hres);
hres = IHTMLObjectElement_put_height(objelem, v);
ok(hres == S_OK, "put_height failed: %08x\n", hres);
CHECK_CALLED(OnAmbientPropertyChange_UNKNOWN);
- CHECK_CALLED(Invoke_ENABLED);
+ CLEAR_CALLED(Invoke_ENABLED); /* Not called on IE10 */
hres = IHTMLObjectElement_get_height(objelem, &v);
ok(hres == S_OK, "get_height failed: %08x\n", hres);
ok(hres == S_OK, "QueryService(CLSID_TestActiveX) failed: %08x\n", hres);
ok(unk == (IUnknown*)&OleObject, "unexpected unk %p\n", unk);
CHECK_CALLED(QueryService_TestActiveX);
+ IUnknown_Release(unk);
IServiceProvider_Release(serv_prov);
SET_EXPECT(Invoke_ENABLED);
hres = IOleInPlaceSite_OnUIActivate(ip_site);
ok(hres == S_OK, "OnUIActivate failed: %08x\n", hres);
- CHECK_CALLED(Invoke_ENABLED);
+ CLEAR_CALLED(Invoke_ENABLED); /* Not called on IE10 */
IOleInPlaceSite_Release(ip_site);
}
static const GUID undocumented_frame_iid = {0xfbece6c9,0x48d7,0x4a37,{0x8f,0xe3,0x6a,0xd4,0x27,0x2f,0xdd,0xac}};
if(!IsEqualGUID(&undocumented_frame_iid, riid))
- ok(0, "unexpected riid %s\n", debugstr_guid(riid));
+ ok(0, "unexpected riid %s\n", wine_dbgstr_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
{
if(IsEqualGUID(&CLSID_TestActiveX, guidService)) {
CHECK_EXPECT(QueryService_TestActiveX);
- ok(IsEqualGUID(&IID_IUnknown, riid), "unexpected riid %s\n", debugstr_guid(riid));
+ ok(IsEqualGUID(&IID_IUnknown, riid), "unexpected riid %s\n", wine_dbgstr_guid(riid));
*ppv = &OleObject;
return S_OK;
}
doc_load_string(doc, str);
do_advise((IUnknown*)doc, &IID_IPropertyNotifySink, (IUnknown*)&PropertyNotifySink);
- while(!doc_complete && GetMessage(&msg, NULL, 0, 0)) {
+ while(!doc_complete && GetMessageW(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
- DispatchMessage(&msg);
+ DispatchMessageW(&msg);
}
return doc;
DestroyWindow(plugin_hwnd);
plugin_hwnd = NULL;
}
+
+ ok(!activex_refcnt, "activex_refcnt = %d\n", activex_refcnt);
}
static void init_test(int behavior)
{
plugin_behavior = behavior;
+ activex_refcnt = 0;
no_quickact = behavior == TEST_NOQUICKACT || behavior == TEST_DISPONLY;
}
static void test_flash_ax(void)
{
IHTMLDocument2 *doc;
+ IOleClientSite *cs;
init_test(TEST_FLASH);
skip("Skipping test_object_elem(notif_doc). ROSTESTS-114.\n");
}
+ IOleClientSite_AddRef(client_site);
+ cs = client_site;
+
SET_EXPECT(UIDeactivate);
SET_EXPECT(Invoke_ENABLED);
SET_EXPECT(Invoke_VALID);
SET_EXPECT(SetClientSite_NULL);
release_doc(doc);
CHECK_CALLED(UIDeactivate);
- todo_wine
- CHECK_CALLED(Invoke_ENABLED);
+ CLEAR_CALLED(Invoke_ENABLED); /* Not called on IE10 */
todo_wine
CHECK_CALLED(Invoke_VALID);
CHECK_CALLED(InPlaceDeactivate);
CHECK_CALLED(Close);
CHECK_CALLED(SetClientSite_NULL);
+
+ IOleClientSite_Release(cs);
}
static void test_noquickact_ax(void)
static LRESULT WINAPI wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- return DefWindowProc(hwnd, msg, wParam, lParam);
+ return DefWindowProcW(hwnd, msg, wParam, lParam);
}
static HWND create_container_window(void)
DWORD res;
if(!init) {
- RegDeleteKey(HKEY_CLASSES_ROOT, key_name);
+ RegDeleteKeyA(HKEY_CLASSES_ROOT, key_name);
return TRUE;
}