diff --git a/dlls/mshtml/tests/activex.c b/dlls/mshtml/tests/activex.c index 02b9d013895..ebd20572330 100644 --- a/dlls/mshtml/tests/activex.c +++ b/dlls/mshtml/tests/activex.c @@ -90,6 +90,7 @@ DEFINE_EXPECT(QI_ITestActiveX); DEFINE_EXPECT(wrapped_AddRef); DEFINE_EXPECT(wrapped_Release); DEFINE_EXPECT(wrapped_func); +DEFINE_EXPECT(OnAmbientPropertyChange_UNKNOWN); #define DISPID_SCRIPTPROP 1000 @@ -305,8 +306,15 @@ static HRESULT WINAPI OleControl_OnMnemonic(IOleControl *iface, MSG *mMsg) static HRESULT WINAPI OleControl_OnAmbientPropertyChange(IOleControl *iface, DISPID dispID) { - ok(0, "unexpected call\n"); - return E_NOTIMPL; + switch(dispID) { + case DISPID_UNKNOWN: + CHECK_EXPECT(OnAmbientPropertyChange_UNKNOWN); + break; + default: + ok(0, "unexpected call %d\n", dispID); + } + + return S_OK; } static HRESULT WINAPI OleControl_FreezeEvents(IOleControl *iface, BOOL bFreeze) @@ -1389,6 +1397,7 @@ static void test_object_elem(IHTMLDocument2 *doc) IDispatchEx *dispex; IHTMLElement *elem; IDispatch *disp; + VARIANT v; BSTR str; HRESULT hres; @@ -1420,6 +1429,48 @@ static void test_object_elem(IHTMLDocument2 *doc) test_iface_wrapping(objelem); + hres = IHTMLObjectElement_get_width(objelem, &v); + ok(hres == S_OK, "get_width failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(width) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "300"), "V_BSTR(width) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + hres = IHTMLObjectElement_get_height(objelem, &v); + ok(hres == S_OK, "get_height failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(height) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "200"), "V_BSTR(height) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_I4; + V_I4(&v) = 400; + SET_EXPECT(OnAmbientPropertyChange_UNKNOWN); + SET_EXPECT(Invoke_ENABLED); + hres = IHTMLObjectElement_put_width(objelem, v); + ok(hres == S_OK, "put_width failed: %08x\n", hres); + CHECK_CALLED(OnAmbientPropertyChange_UNKNOWN); + CHECK_CALLED(Invoke_ENABLED); + + hres = IHTMLObjectElement_get_width(objelem, &v); + ok(hres == S_OK, "get_width failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(width) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "400"), "V_BSTR(width) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_I4; + V_I4(&v) = 250; + SET_EXPECT(OnAmbientPropertyChange_UNKNOWN); + SET_EXPECT(Invoke_ENABLED); + hres = IHTMLObjectElement_put_height(objelem, v); + ok(hres == S_OK, "put_height failed: %08x\n", hres); + CHECK_CALLED(OnAmbientPropertyChange_UNKNOWN); + CHECK_CALLED(Invoke_ENABLED); + + hres = IHTMLObjectElement_get_height(objelem, &v); + ok(hres == S_OK, "get_height failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(height) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "250"), "V_BSTR(height) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + IHTMLObjectElement_Release(objelem); }