On Feb 23, 9:35 am, Boris Zbarsky <[email protected]> wrote:
> Ranjitha Kumar wrote:
> > The problem is that when I run this code, abstractView is always NULL.
> > I can't figure out what is causing GetDefaultView to return an
> > invalid nsIDOMAbstractView? This code is being executed in the
> > OnStateChange callback in nsIWebProgressListener, when STATE_STOP and
> > STATE_IS_DOCUMENT (page has been fully loaded).
>
> Is this a document being loaded in a window? Or via some other means?
>
> -Boris
It is being loaded in a window. This is the code that I call in main.
One odd thing is that I was never able to get a valid domDocument from
the webBrowser; when I tried, I got a NO_INTERFACE error; so I had to
get the domDocument from the webNavigation. That's why I store a
webNavigation object in the webProgressListener. I don't really get
what the NO_INTERFACE error means? Thanks!
GtkWidget *window;
nsCOMPtr<nsIBaseWindow> baseWindow;
nsCOMPtr<nsIWebBrowser> webBrowser;
nsCOMPtr<nsILocalFile> libxul;
nsCOMPtr<nsIWebNavigation> webNavigation;
nsDynamicFunctionLoad nsFuncs[] = { {"XRE_InitEmbedding",
(NSFuncPtr*)&XRE_InitEmbedding}, {"XRE_TermEmbedding",(NSFuncPtr*)
&XRE_TermEmbedding},{0, 0}};
nsresult rv;
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
rv = XPCOMGlueStartup("/usr/lib/xulrunner-1.9.0.6/libxpcom.so");
if (NS_FAILED(rv)) printf("XPCOMGlueStartup\n");
rv = XPCOMGlueLoadXULFunctions(nsFuncs);
if (NS_FAILED(rv)) printf("XPCOMGlueLoadXULFunctions\n");
rv = NS_NewNativeLocalFile(nsEmbedCString("/usr/lib/
xulrunner-1.9.0.6/"),PR_FALSE,getter_AddRefs(libxul));
if (NS_FAILED(rv)) printf("NS_NewNativeLocalFile\n");
rv = XRE_InitEmbedding(libxul, 0, 0, 0, 0);
if (NS_FAILED(rv)) printf("XRE_InitEmbedding\n");
webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv);
if (NS_FAILED(rv)) printf("do_CreateInstance webBrowser\n");
baseWindow = do_QueryInterface(webBrowser);
rv = baseWindow->InitWindow(window, 0, 0, 0, 300, 400);
if (NS_FAILED(rv)) printf("InitWindow\n");
rv = baseWindow->Create();
if (NS_FAILED(rv)) printf("Create\n");
rv =baseWindow->SetVisibility(PR_TRUE);
if (NS_FAILED(rv)) printf("SetVisibility\n");
nsWebProgressListener* myWebProgressListener = new
nsWebProgressListener();
nsCOMPtr<nsIWebProgressListener> webProgressListener =
myWebProgressListener;
nsCOMPtr<nsIWeakReference> weakWebProgressListener
(do_GetWeakReference(webProgressListener));
rv = webBrowser->AddWebBrowserListener(weakWebProgressListener,
NS_GET_IID(nsIWebProgressListener));
if (NS_FAILED(rv)) printf("AddWebBroswerListener = %08X\n",rv);
webNavigation = do_QueryInterface(webBrowser);
rv = webNavigation->LoadURI(NS_ConvertASCIItoUTF16("http://
www.google.com").get(),nsIWebNavigation::LOAD_FLAGS_NONE,0,0,0);
if (NS_FAILED(rv)) printf("LoadURI failed rv = %08X\n", rv);
myWebProgressListener->setWebNavigation(webNavigation);
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK
(delete_event), 0);
gtk_main();
printf("exit...\n");
XRE_TermEmbedding();
XPCOMGlueShutdown();
return 0;
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding