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