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

Reply via email to