Re: How to get nsIWebBrowser interface from a component?

"Jacob Wong" <[email protected]>
Newsgroups gmane.comp.mozilla.devel.xpcom
Organization Another Netscape Collabra Server User
Message-ID <[email protected]>
I have tried the following but it still does not work.  However, the return
value of LoadURI is 0;
    nsCOMPtr<nsIWebNavigation>
spIWebNavigation1(do_QueryInterface(mRootDocShell));
    if (spIWebNavigation1)
    {
  nsCOMPtr<nsIURI> newUri;
  res = NS_NewURI(getter_AddRefs(newUri), sUrl);
      res = spIWebNavigation1->LoadURI(sUrl.get(),
nsIWebNavigation::LOAD_FLAGS_NONE);
//  res = spIWebNavigation1->GoBack();
    }

I got the mRoorDocShell from the following
    nsCOMPtr<nsIWindowMediator> windowMediator =
do_GetService(kWindowMediatorCID, &rv);
    if ( NS_SUCCEEDED( rv ) )
    {
        PRBool hasParentWindow = PR_FALSE;
        nsCOMPtr<nsISimpleEnumerator> windowEnumerator;
        nsCOMPtr<nsIDOMWindow> content;
        nsCOMPtr<nsIXULWindow> xulWindow;
        if ( NS_SUCCEEDED(windowMediator->GetXULWindowEnumerator(nsnull,
getter_AddRefs(windowEnumerator))) )
        {
            // Get Each Dom window
            PRBool more;
            windowEnumerator->HasMoreElements(&more);
            while(more)
            {
                nsCOMPtr<nsISupports> nextWindow = nsnull;

                rv = windowEnumerator->GetNext(getter_AddRefs(nextWindow));
                if ( NS_SUCCEEDED( rv ) && nextWindow )
                {
                    xulWindow = do_QueryInterface(nextWindow);
                    if (xulWindow)
                    {
                        mXulWindow = xulWindow;
                        nsCOMPtr<nsIDocShellTreeItem> shellAsTreeItem;
                        nsCOMPtr<nsIDOMDocument> document;
                        nsCOMPtr<nsIDOMWindow> domWin;
                        nsCOMPtr<nsIWebBrowser> webBrowser;


xulWindow->GetPrimaryContentShell(getter_AddRefs(mShellAsTreeItem));

                        if (mShellAsTreeItem != nsnull)
                        {
                            nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
                            nsCOMPtr<nsIWidget> widget;
                            nsCOMPtr<nsIDocShell> rootDocShell
(do_QueryInterface(mShellAsTreeItem));
                            mRootDocShell = rootDocShell;

                            domWin = do_GetInterface(mShellAsTreeItem);

                            m_DomWin = domWin;
                            if (m_fIsDialog)
                            {
                                nsIScriptGlobalObject *pScript;
                                nsIDocShell *pDocShell;
                                m_TopDomWin->QueryInterface
(NS_GET_IID(nsIScriptGlobalObject), (void**) &pScript);
                                pScript->GetDocShell (&pDocShell);
                                mRootDocShell = pDocShell;
                            }

                            rv = DOMWindowToWidget(domWin,
getter_AddRefs(widget));
                            if ( NS_SUCCEEDED( rv ) && widget )
                            {
                                m_hWndCurrentDoc =
(HWND)widget->GetNativeData(NS_NATIVE_WINDOW);
                            }

                            rv =
domWin->GetDocument(getter_AddRefs(mDocument));
                        }

                        hasParentWindow = PR_TRUE;
                        break;
                    } // xulWindow
                }//next window
                windowEnumerator->HasMoreElements(&more);
            } // while
        }

"Pete Collins" <[email protected]> wrote in message
news:[email protected]...
> Doug Turner wrote:
> > Jacob Wong wrote:
> >
> >> I have tried to get the nsIWebBrowser using the following code
> >> nsCOMPtr<nsIWebBrowser>
> >>
pBrowser2(do_GetService("@mozilla.org/embedding/browser/nsWebBrowser;1"));
> >>
> >> nsCOMPtr<nsIWebNavigation> spIWebNavigation1 =
> >> do_QueryInterface(pBrowser2);
> >> nsCOMPtr<nsIURI> newUri;
> >> res = NS_NewURI(getter_AddRefs(newUri), sUrl);
> >> res = spIWebNavigation1->LoadURI(sUrl.get(),
> >> nsIWebNavigation::LOAD_FLAGS_NONE);
> >>
> >> However, Netscape 6.2.x does not load the new url.  the return value is
> >> 0x8000ffff.  That is unexpected error.  I also try to use
> >>
> >> res = spIWebNavigation1->GoBack();
> >>
> >> Netscape 6.2.x  does not go back to the previous page.
> >>
> >> Any idea what I have done wrong here?
> >>
> >
> > At what point do you make this call?  In your registerSelf callback?
> >
>
> It seems he wants his component to load a URI into a preloaded window in
> Netscape 6.2.
> So he would need to QI off an existing nsIDocShell or
> nsIDocShellTreeItem to do the load.
>
> --pete
>
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.