Commit 24601ed1 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

mshtml: Added Advise handling to OleObject_Close.

parent 91dd9bbb
...@@ -250,6 +250,9 @@ static HRESULT WINAPI OleObject_Close(IOleObject *iface, DWORD dwSaveOption) ...@@ -250,6 +250,9 @@ static HRESULT WINAPI OleObject_Close(IOleObject *iface, DWORD dwSaveOption)
IOleInPlaceObjectWindowless_InPlaceDeactivate(INPLACEWIN(This)); IOleInPlaceObjectWindowless_InPlaceDeactivate(INPLACEWIN(This));
HTMLDocument_LockContainer(This->doc_obj, FALSE); HTMLDocument_LockContainer(This->doc_obj, FALSE);
if(This->advise_holder)
IOleAdviseHolder_SendOnClose(This->advise_holder);
return S_OK; return S_OK;
} }
......
...@@ -150,6 +150,7 @@ DEFINE_EXPECT(Frame_EnableModeless_TRUE); ...@@ -150,6 +150,7 @@ DEFINE_EXPECT(Frame_EnableModeless_TRUE);
DEFINE_EXPECT(Frame_EnableModeless_FALSE); DEFINE_EXPECT(Frame_EnableModeless_FALSE);
DEFINE_EXPECT(Frame_GetWindow); DEFINE_EXPECT(Frame_GetWindow);
DEFINE_EXPECT(TranslateUrl); DEFINE_EXPECT(TranslateUrl);
DEFINE_EXPECT(Advise_Close);
static IUnknown *doc_unk; static IUnknown *doc_unk;
static IMoniker *doc_mon; static IMoniker *doc_mon;
...@@ -2589,7 +2590,7 @@ static void WINAPI AdviseSink_OnSave(IAdviseSink *iface) ...@@ -2589,7 +2590,7 @@ static void WINAPI AdviseSink_OnSave(IAdviseSink *iface)
static void WINAPI AdviseSink_OnClose(IAdviseSink *iface) static void WINAPI AdviseSink_OnClose(IAdviseSink *iface)
{ {
ok(0, "unexpected call\n"); CHECK_EXPECT(Advise_Close);
} }
static const IAdviseSinkVtbl AdviseSinkVtbl = { static const IAdviseSinkVtbl AdviseSinkVtbl = {
...@@ -4395,6 +4396,7 @@ static void test_HTMLDocument_StreamLoad(void) ...@@ -4395,6 +4396,7 @@ static void test_HTMLDocument_StreamLoad(void)
{ {
IOleObject *oleobj; IOleObject *oleobj;
IUnknown *unk; IUnknown *unk;
DWORD conn;
HRESULT hres; HRESULT hres;
ULONG ref; ULONG ref;
...@@ -4411,6 +4413,9 @@ static void test_HTMLDocument_StreamLoad(void) ...@@ -4411,6 +4413,9 @@ static void test_HTMLDocument_StreamLoad(void)
hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj); hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres); ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
ok(hres == S_OK, "Advise failed: %08x\n", hres);
test_readyState(unk); test_readyState(unk);
test_IsDirty(unk, S_FALSE); test_IsDirty(unk, S_FALSE);
test_ConnectionPointContainer(unk); test_ConnectionPointContainer(unk);
...@@ -4427,7 +4432,9 @@ static void test_HTMLDocument_StreamLoad(void) ...@@ -4427,7 +4432,9 @@ static void test_HTMLDocument_StreamLoad(void)
test_UIDeactivate(); test_UIDeactivate();
test_InPlaceDeactivate(unk, TRUE); test_InPlaceDeactivate(unk, TRUE);
SET_EXPECT(Advise_Close);
test_Close(unk, FALSE); test_Close(unk, FALSE);
CHECK_CALLED(Advise_Close);
test_IsDirty(unk, S_FALSE); test_IsDirty(unk, S_FALSE);
if(view) { if(view) {
...@@ -4444,6 +4451,7 @@ static void test_HTMLDocument_StreamInitNew(void) ...@@ -4444,6 +4451,7 @@ static void test_HTMLDocument_StreamInitNew(void)
{ {
IOleObject *oleobj; IOleObject *oleobj;
IUnknown *unk; IUnknown *unk;
DWORD conn;
HRESULT hres; HRESULT hres;
ULONG ref; ULONG ref;
...@@ -4460,6 +4468,9 @@ static void test_HTMLDocument_StreamInitNew(void) ...@@ -4460,6 +4468,9 @@ static void test_HTMLDocument_StreamInitNew(void)
hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj); hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres); ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
ok(hres == S_OK, "Advise failed: %08x\n", hres);
test_readyState(unk); test_readyState(unk);
test_IsDirty(unk, S_FALSE); test_IsDirty(unk, S_FALSE);
test_ConnectionPointContainer(unk); test_ConnectionPointContainer(unk);
...@@ -4476,7 +4487,9 @@ static void test_HTMLDocument_StreamInitNew(void) ...@@ -4476,7 +4487,9 @@ static void test_HTMLDocument_StreamInitNew(void)
test_UIDeactivate(); test_UIDeactivate();
test_InPlaceDeactivate(unk, TRUE); test_InPlaceDeactivate(unk, TRUE);
SET_EXPECT(Advise_Close);
test_Close(unk, FALSE); test_Close(unk, FALSE);
CHECK_CALLED(Advise_Close);
test_IsDirty(unk, S_FALSE); test_IsDirty(unk, S_FALSE);
if(view) { if(view) {
...@@ -4520,6 +4533,7 @@ static void test_editing_mode(BOOL do_load) ...@@ -4520,6 +4533,7 @@ static void test_editing_mode(BOOL do_load)
{ {
IUnknown *unk; IUnknown *unk;
IOleObject *oleobj; IOleObject *oleobj;
DWORD conn;
HRESULT hres; HRESULT hres;
ULONG ref; ULONG ref;
...@@ -4536,6 +4550,9 @@ static void test_editing_mode(BOOL do_load) ...@@ -4536,6 +4550,9 @@ static void test_editing_mode(BOOL do_load)
hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj); hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres); ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
ok(hres == S_OK, "Advise failed: %08x\n", hres);
test_readyState(unk); test_readyState(unk);
test_ConnectionPointContainer(unk); test_ConnectionPointContainer(unk);
test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH); test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
...@@ -4586,7 +4603,9 @@ static void test_editing_mode(BOOL do_load) ...@@ -4586,7 +4603,9 @@ static void test_editing_mode(BOOL do_load)
test_UIDeactivate(); test_UIDeactivate();
test_InPlaceDeactivate(unk, TRUE); test_InPlaceDeactivate(unk, TRUE);
SET_EXPECT(Advise_Close);
test_Close(unk, FALSE); test_Close(unk, FALSE);
CHECK_CALLED(Advise_Close);
if(view) { if(view) {
IOleDocumentView_Release(view); IOleDocumentView_Release(view);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment