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 [email protected] https://lists.mozilla.org/listinfo/dev-embedding
