On 19.02.2011 3:46, moz_embedder wrote:
I think am able to initialise the browser by QI-ing for nsBaseWindow
and then init and then create. I think it s initialised properly
because the return code on loading a URL through nsIWebNavigation is
OK.
I am not displaying anything since I am trying to run offscreen and I
only have the codes to work with. However, I cannot get to the
nsIDOMWindow (I get null) by doing:
nsCOMPtr<nsIDOMWindow> mDomWin;
mWebBrowser->GetContentDOMWindow(getter_AddRefs(mDomWin));
Any suggestions??
Here is a snippet with all the initialisations going on:
nsCOMPtr<nsIWebBrowser> mWebBrowser =
do_CreateInstance(NS_WEBBROWSER_CONTRACTID,&rv);
if (NS_FAILED(rv)) {
std::cout<< "Couldn't create Web Browser"<< std::endl;
exit(1);
}
nsCOMPtr<nsIWebNavigation> mWebNav =
do_QueryInterface(mWebBrowser,&rv);
if (NS_FAILED(rv)) {
std::cout<< "Couldn't create Web Nav"<< std::endl;
exit(1);
}
nsCOMPtr<nsIBaseWindow> baseWindow =
do_QueryInterface(mWebBrowser,&rv);
if (NS_FAILED(rv)) {
std::cout<< "Couldn't QI base win"<< std::endl;
exit(1);
}
WebBrowserChrome *cw = new WebBrowserChrome();
mWebBrowser->SetContainerWindow(static_cast<nsIWebBrowserChrome*>
(cw));
WebBrowserChromeUI *nw = new WebBrowserChromeUI(); //empty - I
dont want to display stuff
rv = baseWindow->InitWindow(nw, nsnull, 0, 0, 0, 0);
if (NS_FAILED(rv)) {
std::cout<< "Couldn't init base win"<< std::endl;
exit(1);
}
rv = baseWindow->Create();
if (NS_FAILED(rv)) {
std::cout<< "Couldn't create base win"<< std::endl;
exit(1);
}
rv = mWebNav->LoadURI(
NS_ConvertASCIItoUTF16("http://www.google.com/").get(),
nsIWebNavigation::LOAD_FLAGS_NONE,
nsnull,
nsnull,
nsnull);
if (NS_FAILED(rv)) {
std::cout<< "Couldn't load URL: "<< std::endl;
exit(1);
} else {
std::cout<< "Maybe loaded url"<< std::endl; //reaches
here :) :) :)
}
nsCOMPtr<nsIDOMDocument> mDomDoc;
nsCOMPtr<nsIDOMWindow> mDomWin;
rv = mWebBrowser->GetContentDOMWindow(getter_AddRefs(mDomWin));
if(mDomWin) { // mDomWin is NULL here :( :( :(
mDomWin->GetDocument(getter_AddRefs(mDomDoc));
if(!mDomDoc)
std::cout<< "Cannot get DOM doc"<< std::endl;
} else {
std::cout<< "Cannot get dom win "<< std::endl;
}
Hello Peter,
Have you implemented nsIInterfaceRequestor for WebBrowserChrome class?
Best regards,
Denis Lazarev.
_______________________________________________
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding