So Something like: NS_IMETHODIMP WebBrowserChrome::OnLocationChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsIURI *location, uint32_t aFlags) { PRBool isSubFrameLoad = PR_FALSE; // Is this a subframe load if (aWebProgress) { nsCOMPtr<nsIDOMWindow> domWindow; nsCOMPtr<nsPIDOMWindow> topDomWindow; aWebProgress->GetDOMWindow(getter_AddRefs(domWindow)); if (domWindow) { // Get root domWindow topDomWindow = do_QueryInterface(domWindow); topDomWindow->GetTop(); } if (domWindow != topDomWindow) isSubFrameLoad = PR_TRUE; } if (!isSubFrameLoad) CWebBrowserChromeUI::UpdateCurrentURI(this); return NS_OK; }
On Wed, Feb 10, 2016 at 8:37 PM, Kyle Huey <m...@kylehuey.com> wrote: > You get the nsIDOMWindow, and then QueryInterface to nsPIDOMWindow to call > GetTop on it. > > - Kyle > > On Wed, Feb 10, 2016 at 5:35 PM, Devan Shah <devan.sha...@gmail.com> > wrote: > >> In the below code i use aWebProgress to and then GetDOMWindow on that, >> however GetDOMWindow only allows nsIDOMWindow, would the QueryInterface >> accommodate for this for this >> >> NS_IMETHODIMP WebBrowserChrome::OnLocationChange(nsIWebProgress* >> aWebProgress, >> nsIRequest* aRequest, >> nsIURI *location, >> uint32_t aFlags) >> { >> PRBool isSubFrameLoad = PR_FALSE; // Is this a subframe load >> if (aWebProgress) { >> nsCOMPtr<nsIDOMWindow> domWindow; >> nsCOMPtr<nsIDOMWindow> topDomWindow; >> aWebProgress->GetDOMWindow(getter_AddRefs(domWindow)); >> if (domWindow) { // Get root domWindow >> domWindow->GetTop(getter_AddRefs(topDomWindow)); >> } >> if (domWindow != topDomWindow) >> isSubFrameLoad = PR_TRUE; >> } >> if (!isSubFrameLoad) >> CWebBrowserChromeUI::UpdateCurrentURI(this); >> return NS_OK; >> } >> >> On Wed, Feb 10, 2016 at 8:30 PM, Kyle Huey <m...@kylehuey.com> wrote: >> >>> Yes, SizeToContent is only accessible to JS now. >>> >>> - Kyle >>> >>> On Wed, Feb 10, 2016 at 5:28 PM, Devan Shah <devan.sha...@gmail.com> >>> wrote: >>> >>>> yep >>>> >>>> This is how I was using nsIDOMWindow before: >>>> >>>> NS_IMETHODIMP WebBrowserChrome::OnLocationChange(nsIWebProgress* >>>> aWebProgress, >>>> nsIRequest* aRequest, >>>> nsIURI *location, >>>> uint32_t aFlags) >>>> { >>>> PRBool isSubFrameLoad = PR_FALSE; // Is this a subframe load >>>> if (aWebProgress) { >>>> nsCOMPtr<nsIDOMWindow> domWindow; >>>> nsCOMPtr<nsIDOMWindow> topDomWindow; >>>> aWebProgress->GetDOMWindow(getter_AddRefs(domWindow)); >>>> if (domWindow) { // Get root domWindow >>>> domWindow->GetTop(getter_AddRefs(topDomWindow)); >>>> } >>>> if (domWindow != topDomWindow) >>>> isSubFrameLoad = PR_TRUE; >>>> } >>>> if (!isSubFrameLoad) >>>> CWebBrowserChromeUI::UpdateCurrentURI(this); >>>> return NS_OK; >>>> } >>>> >>>> So here just changing nsCOMPtr<nsIDOMWindow> to nsCOMPtr<nsPIDOMWindow> >>>> and using QueryInterface should do the trick right? >>>> >>>> Also I am using a function called SizeToContent() from nsIDOMWindow >>>> which I do not see exists any more in nsPIDOMWindow either was this one >>>> removed completly. >>>> >>>> On Wed, Feb 10, 2016 at 8:24 PM, Kyle Huey <m...@kylehuey.com> wrote: >>>> >>>>> Right, that will work, although you could nsCOMPtr to make it a lot >>>>> prettier: >>>>> >>>>> void test(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow) >>>>> { >>>>> nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow); >>>>> nsCOMPtr<nsIDocShell> docShell; >>>>> if (window) >>>>> window->GetDocShell(getter_AddRefs(docShell)); >>>>> nsIWebShell* rootWebShell = 0; >>>>> NS_IF_RELEASE(rootWebShell); >>>>> // return status; >>>>> } >>>>> >>>>> - Kyle >>>>> >>>>> On Wed, Feb 10, 2016 at 5:22 PM, Devan Shah <devan.sha...@gmail.com> >>>>> wrote: >>>>> >>>>>> Do you happen to have a QueryInterface example, >>>>>> >>>>>> Would something like the following work: >>>>>> >>>>>> void test(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow) >>>>>> { >>>>>> nsPIDOMWindow* window = 0; >>>>>> nsresult status = >>>>>> aDOMWindow->QueryInterface(NS_GET_IID(nsPIDOMWindow), (void**)&window); >>>>>> nsIDocShell* docShell = 0; >>>>>> if (window) >>>>>> window->GetDocShell(&docShell); >>>>>> nsIWebShell* rootWebShell = 0; >>>>>> NS_IF_RELEASE(rootWebShell); >>>>>> NS_IF_RELEASE(docShell); >>>>>> NS_IF_RELEASE(window); >>>>>> // return status; >>>>>> } >>>>>> >>>>>> On Wed, Feb 10, 2016 at 8:16 PM, Kyle Huey <m...@kylehuey.com> wrote: >>>>>> >>>>>>> Alright, just QueryInterface between nsIDOMWindow and nsPIDOMWindow >>>>>>> when you have one and need the other and you should be fine. >>>>>>> >>>>>>> - Kyle >>>>>>> >>>>>>> On Wed, Feb 10, 2016 at 5:15 PM, Devan Shah <devan.sha...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Currently I just want to get it up and running again on FF 45 >>>>>>>> again, with out making too much changes because we plan to deprecate >>>>>>>> this >>>>>>>> feature mid this year or so. >>>>>>>> >>>>>>>> Just need to get it working on Firefox 45, currently works >>>>>>>> perfectly on Firefox 38. >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform