From 37b1a456d706b32be02117d40f6dd4edc8cb3bb9 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 9 Dec 2005 11:23:58 +0100 Subject: [PATCH] mshtml: Added nsIEmbeddingSiteWindow implementation. --- dlls/mshtml/mshtml_private.h | 2 + dlls/mshtml/nsembed.c | 109 +++++++++++++++++++++++++++++++++++ dlls/mshtml/nsiface.idl | 16 +++++ 3 files changed, 127 insertions(+) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index d3b42e61930..457d5cf0d00 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -80,6 +80,7 @@ struct NSContainer { const nsIWebBrowserChromeVtbl *lpWebBrowserChromeVtbl; const nsIContextMenuListenerVtbl *lpContextMenuListenerVtbl; const nsIURIContentListenerVtbl *lpURIContentListenerVtbl; + const nsIEmbeddingSiteWindowVtbl *lpEmbeddingSiteWindowVtbl; nsIWebBrowser *webbrowser; nsIWebNavigation *navigation; @@ -117,6 +118,7 @@ struct NSContainer { #define NSWBCHROME(x) ((nsIWebBrowserChrome*) &(x)->lpWebBrowserChromeVtbl) #define NSCML(x) ((nsIContextMenuListener*) &(x)->lpContextMenuListenerVtbl) #define NSURICL(x) ((nsIURIContentListener*) &(x)->lpURIContentListenerVtbl) +#define NSEMBWNDS(x) ((nsIEmbeddingSiteWindow*) &(x)->lpEmbeddingSiteWindowVtbl) #define DEFINE_THIS(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,lp ## ifc ## Vtbl))) diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 6380c4823f7..3e7a04f2733 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -395,6 +395,9 @@ static nsresult NSAPI nsWebBrowserChrome_QueryInterface(nsIWebBrowserChrome *ifa }else if(IsEqualGUID(&IID_nsIContextMenuListener, riid)) { TRACE("(%p)->(IID_nsIContextMenuListener, %p)\n", This, result); *result = NSCML(This); + }else if(IsEqualGUID(&IID_nsIEmbeddingSiteWindow, riid)) { + TRACE("(%p)->(IIS_nsIEmbeddingSiteWindow %p)\n", This, result); + *result = NSEMBWNDS(This); } if(*result) @@ -749,6 +752,111 @@ static const nsIURIContentListenerVtbl nsURIContentListenerVtbl = { nsURIContentListener_SetParentContentListener }; +/********************************************************** + * nsIEmbeddinSiteWindow interface + */ + +#define NSEMBWNDS_THIS(iface) DEFINE_THIS(NSContainer, EmbeddingSiteWindow, iface) + +static nsresult NSAPI nsEmbeddingSiteWindow_QueryInterface(nsIEmbeddingSiteWindow *iface, + nsIIDRef riid, nsQIResult result) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + return nsIWebBrowserChrome_QueryInterface(NSWBCHROME(This), riid, result); +} + +static nsrefcnt NSAPI nsEmbeddingSiteWindow_AddRef(nsIEmbeddingSiteWindow *iface) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + return nsIWebBrowserChrome_AddRef(NSWBCHROME(This)); +} + +static nsrefcnt NSAPI nsEmbeddingSiteWindow_Release(nsIEmbeddingSiteWindow *iface) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + return nsIWebBrowserChrome_Release(NSWBCHROME(This)); +} + +static nsresult NSAPI nsEmbeddingSiteWindow_SetDimensions(nsIEmbeddingSiteWindow *iface, + PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)->(%08lx %ld %ld %ld %ld)\n", This, flags, x, y, cx, cy); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_GetDimensions(nsIEmbeddingSiteWindow *iface, + PRUint32 flags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)->(%08lx %p %p %p %p)\n", This, flags, x, y, cx, cy); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_SetFocus(nsIEmbeddingSiteWindow *iface) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)\n", This); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_GetVisibility(nsIEmbeddingSiteWindow *iface, + PRBool *aVisibility) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)->(%p)\n", This, aVisibility); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_SetVisibility(nsIEmbeddingSiteWindow *iface, + PRBool aVisibility) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)->(%x)\n", This, aVisibility); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_GetTitle(nsIEmbeddingSiteWindow *iface, + PRUnichar **aTitle) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)->(%p)\n", This, aTitle); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_SetTitle(nsIEmbeddingSiteWindow *iface, + const PRUnichar *aTitle) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + WARN("(%p)->(%s)\n", This, debugstr_w(aTitle)); + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsEmbeddingSiteWindow_GetSiteWindow(nsIEmbeddingSiteWindow *iface, + void **aSiteWindow) +{ + NSContainer *This = NSEMBWNDS_THIS(iface); + + TRACE("(%p)->(%p)\n", This, aSiteWindow); + + *aSiteWindow = This->hwnd; + return NS_OK; +} + +static const nsIEmbeddingSiteWindowVtbl nsEmbeddingSiteWindowVtbl = { + nsEmbeddingSiteWindow_QueryInterface, + nsEmbeddingSiteWindow_AddRef, + nsEmbeddingSiteWindow_Release, + nsEmbeddingSiteWindow_SetDimensions, + nsEmbeddingSiteWindow_GetDimensions, + nsEmbeddingSiteWindow_SetFocus, + nsEmbeddingSiteWindow_GetVisibility, + nsEmbeddingSiteWindow_SetVisibility, + nsEmbeddingSiteWindow_GetTitle, + nsEmbeddingSiteWindow_SetTitle, + nsEmbeddingSiteWindow_GetSiteWindow +}; + void HTMLDocument_NSContainer_Init(HTMLDocument *This) { nsIWebBrowserSetup *wbsetup; @@ -764,6 +872,7 @@ void HTMLDocument_NSContainer_Init(HTMLDocument *This) This->nscontainer->lpWebBrowserChromeVtbl = &nsWebBrowserChromeVtbl; This->nscontainer->lpContextMenuListenerVtbl = &nsContextMenuListenerVtbl; This->nscontainer->lpURIContentListenerVtbl = &nsURIContentListenerVtbl; + This->nscontainer->lpEmbeddingSiteWindowVtbl = &nsEmbeddingSiteWindowVtbl; This->nscontainer->doc = This; diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl index 1517ae658a1..dfdf4eee5db 100644 --- a/dlls/mshtml/nsiface.idl +++ b/dlls/mshtml/nsiface.idl @@ -433,3 +433,19 @@ interface nsIDOMMouseEvent : nsIDOMUIEvent PRBool shiftKeyArg, PRBool metaKeyArg, PRUint16 buttonArg, nsIDOMEventTarget *relatedTargetArg); } + +[ + object, + uuid(3e5432cd-9568-4bd1-8cbe-d50aba110743) +] +interface nsIEmbeddingSiteWindow : nsISupports +{ + nsresult SetDimensions(PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy); + nsresult GetDimensions(PRUint32 flags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy); + nsresult SetFocus(); + nsresult GetVisibility(PRBool *aVisibility); + nsresult SetVisibility(PRBool aVisibility); + nsresult GetTitle(PRUnichar **aTitle); + nsresult SetTitle(const PRUnichar *aTitle); + nsresult GetSiteWindow(void **aSiteWindow); +}