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

Reply via email to