Jacek Caban : mshtml: Added test of IHlinkFrame service.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Feb 10 08:54:48 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 4a34d8e6424a5174ab52c657fc9ab5d8c8995465
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=4a34d8e6424a5174ab52c657fc9ab5d8c8995465
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Feb 10 14:49:48 2006 +0100
mshtml: Added test of IHlinkFrame service.
---
dlls/mshtml/tests/htmldoc.c | 180 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 172 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 45e9530..e4c638b 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -43,17 +43,23 @@ DEFINE_GUID(CGID_MSHTML, 0xDE4BA900,0x59
expect_ ## func = TRUE
#define CHECK_EXPECT(func) \
- ok(expect_ ##func, "unexpected call\n"); \
- expect_ ## func = FALSE; \
- called_ ## func = TRUE
+ do { \
+ ok(expect_ ##func, "unexpected call " #func "\n"); \
+ expect_ ## func = FALSE; \
+ called_ ## func = TRUE; \
+ }while(0)
#define CHECK_EXPECT2(func) \
- ok(expect_ ##func, "unexpected call\n"); \
- called_ ## func = TRUE
+ do { \
+ ok(expect_ ##func, "unexpected call " #func "\n"); \
+ called_ ## func = TRUE; \
+ }while(0)
#define CHECK_CALLED(func) \
- ok(called_ ## func, "expected " #func "\n"); \
- expect_ ## func = called_ ## func = FALSE
+ do { \
+ ok(called_ ## func, "expected " #func "\n"); \
+ expect_ ## func = called_ ## func = FALSE; \
+ }while(0)
static IOleDocumentView *view = NULL;
static HWND container_hwnd = NULL, hwnd = NULL, last_hwnd = NULL;
@@ -95,6 +101,7 @@ DEFINE_EXPECT(Invoke_AMBIENT_USERAGENT);
DEFINE_EXPECT(Invoke_AMBIENT_PALETTE);
DEFINE_EXPECT(GetDropTarget);
DEFINE_EXPECT(UpdateUI);
+DEFINE_EXPECT(Navigate);
static BOOL expect_LockContainer_fLock;
static BOOL expect_SetActiveObject_active;
@@ -110,6 +117,100 @@ static LPCOLESTR expect_status_text = NU
static HRESULT QueryInterface(REFIID riid, void **ppv);
+static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface,
+ IHlinkBrowseContext *pihlbc)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface,
+ IHlinkBrowseContext **ppihlbc)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc,
+ IBindStatusCallback *pibsc, IHlink *pihlNavigate)
+{
+ HRESULT hres;
+
+ CHECK_EXPECT(Navigate);
+
+ ok(grfHLNF == 0, "grfHLNF=%ld, expected 0\n", grfHLNF);
+ ok(pbc != NULL, "pbc == NULL\n");
+ ok(pibsc != NULL, "pubsc == NULL\n");
+ ok(pihlNavigate != NULL, "puhlNavigate == NULL\n");
+
+ if(pihlNavigate) {
+ LPWSTR frame_name = (LPWSTR)0xdeadbeef;
+ LPWSTR location = (LPWSTR)0xdeadbeef;
+ IHlinkSite *site;
+ IMoniker *mon = NULL;
+ DWORD site_data = 0xdeadbeef;
+
+ hres = IHlink_GetTargetFrameName(pihlNavigate, &frame_name);
+ ok(hres == S_FALSE, "GetTargetFrameName failed: %08lx\n", hres);
+ ok(frame_name == NULL, "frame_name = %p\n", frame_name);
+
+ hres = IHlink_GetMonikerReference(pihlNavigate, 1, &mon, &location);
+ ok(hres == S_OK, "GetMonikerReference failed: %08lx\n", hres);
+ ok(location == NULL, "location = %p\n", location);
+ ok(mon != NULL, "mon == NULL\n");
+
+ hres = IHlink_GetHlinkSite(pihlNavigate, &site, &site_data);
+ ok(hres == S_OK, "GetHlinkSite failed: %08lx\n", hres);
+ ok(site == NULL, "site = %p\n, expected NULL", site);
+ ok(site_data == 0xdeadbeef, "site_data = %lx\n", site_data);
+ }
+
+ return S_OK;
+}
+
+static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF,
+ IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID,
+ IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static const IHlinkFrameVtbl HlinkFrameVtbl = {
+ HlinkFrame_QueryInterface,
+ HlinkFrame_AddRef,
+ HlinkFrame_Release,
+ HlinkFrame_SetBrowseContext,
+ HlinkFrame_GetBrowseContext,
+ HlinkFrame_Navigate,
+ HlinkFrame_OnNavigate,
+ HlinkFrame_UpdateHlink
+};
+
+static IHlinkFrame HlinkFrame = { &HlinkFrameVtbl };
+
static HRESULT WINAPI OleContainer_QueryInterface(IOleContainer *iface, REFIID riid, void **ppv)
{
return QueryInterface(riid, ppv);
@@ -1053,6 +1154,68 @@ static IDispatchVtbl DispatchVtbl = {
static IDispatch Dispatch = { &DispatchVtbl };
+static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface,
+ REFIID riid, void **ppv)
+{
+ return QueryInterface(riid, ppv);
+}
+
+static ULONG WINAPI ServiceProvider_AddRef(IServiceProvider *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI ServiceProvider_Release(IServiceProvider *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService,
+ REFIID riid, void **ppv)
+{
+ /*
+ * Services used by HTMLDocument:
+ *
+ * IOleUndoManager
+ * IInternetSecurityManager
+ * ITargetFrame
+ * {D5F78C80-5252-11CF-90FA-00AA0042106E}
+ * HTMLFrameBase
+ * IShellObject
+ * {3050F312-98B5-11CF-BB82-00AA00BDCE0B}
+ * {53A2D5B1-D2FC-11D0-84E0-006097C9987D}
+ * {AD7F6C62-F6BD-11D2-959B-006097C553C8}
+ * DefView (?)
+ * {6D12FE80-7911-11CF-9534-0000C05BAE0B}
+ * IElementBehaviorFactory
+ * {3050F429-98B5-11CF-BB82-00AA00BDCE0B}
+ * STopLevelBrowser
+ * IHTMLWindow2
+ * IInternetProtocol
+ * IWebBrowserApp
+ * UrlHostory
+ * IHTMLEditHost
+ * IHlinkFrame
+ */
+
+ if(IsEqualGUID(&IID_IHlinkFrame, guidService)) {
+ ok(IsEqualGUID(&IID_IHlinkFrame, riid), "unexpected riid\n");
+ *ppv = &HlinkFrame;
+ return S_OK;
+ }
+
+ return E_NOINTERFACE;
+}
+
+static const IServiceProviderVtbl ServiceProviderVtbl = {
+ ServiceProvider_QueryInterface,
+ ServiceProvider_AddRef,
+ ServiceProvider_Release,
+ ServiceProvider_QueryService
+};
+
+static IServiceProvider ServiceProvider = { &ServiceProviderVtbl };
+
static HRESULT QueryInterface(REFIID riid, void **ppv)
{
*ppv = NULL;
@@ -1073,9 +1236,10 @@ static HRESULT QueryInterface(REFIID rii
*ppv = &OleCommandTarget;
else if(IsEqualGUID(&IID_IDispatch, riid))
*ppv = &Dispatch;
+ else if(IsEqualGUID(&IID_IServiceProvider, riid))
+ *ppv = &ServiceProvider;
/* TODO:
- * IServiceProvider
* IOleInPlaceSiteEx
* {D48A6EC6-6A4A-11CF-94A7-444553540000}
* {7BB0B520-B1A7-11D2-BB23-00C04F79ABCD}
More information about the wine-cvs
mailing list