This is the code of the application: #define XPCOM_GLUE 1 #include <stdlib.h> #include <stdio.h> #include <limits.h> #include <gtk/gtk.h> #include "xpcom-config.h" #include "nsXPCOMGlue.h" #include "nsDebug.h" #include "nsCOMPtr.h" #include "widget/nsIBaseWindow.h" #include "nsILocalFile.h" #include "nsIWebBrowser.h" #include "nsIWebBrowserSetup.h" #include "docshell/nsIWebNavigation.h" #include "nsEmbedCID.h" #include "nsEmbedString.h" #include "xulapp/nsXULAppAPI.h" #include "nsComponentManagerUtils.h"
#include "nsIPrefService.h" XRE_InitEmbeddingType XRE_InitEmbedding; XRE_TermEmbeddingType XRE_TermEmbedding; static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit(); return FALSE; } int main(int argc, char** argv) { GtkWidget *window; nsCOMPtr<nsIBaseWindow> baseWindow; nsCOMPtr<nsIWebBrowser> webBrowser; nsCOMPtr<nsILocalFile> libxul; nsCOMPtr<nsIWebNavigation> webNavigation; nsCOMPtr<nsIWebBrowserSetup> browserSetup; 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/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"), 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("Error XRE_InitEmbedding %d\n",rv); return -1; } webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv); if (NS_FAILED(rv)) { printf("do_CreateInstance webBrowser\n"); } browserSetup = do_QueryInterface(webBrowser,&rv); if (NS_FAILED(rv)) { printf("do_QueryInterface browserSetup\n"); } browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_ALLOW_PLUGINS,PR_TRUE); browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_ALLOW_JAVASCRIPT,PR_TRUE); browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_ALLOW_IMAGES,PR_TRUE); browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_ALLOW_META_REDIRECTS,PR_TRUE); browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_ALLOW_SUBFRAMES,PR_TRUE); browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER,PR_FALSE); //browserSetup->SetProperty (nsIWebBrowserSetup::SETUP_ALLOW_IMAGES,PR_TRUE); baseWindow = do_QueryInterface(webBrowser); rv = baseWindow->InitWindow(window, 0, 0, 0, 1300, 700); 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"); } webNavigation = do_QueryInterface(webBrowser); //rv = webNavigation->LoadURI(NS_ConvertASCIItoUTF16("http:// www.google.com").get(),nsIWebNavigation::LOAD_FLAGS_MASK , 0, 0, 0); rv = webNavigation->LoadURI(NS_ConvertASCIItoUTF16(argv[1]).get (),nsIWebNavigation::LOAD_FLAGS_NONE , 0, 0, 0); if (NS_FAILED(rv)) { printf("LoadURI\n"); } g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK (delete_event), 0); gtk_main(); XRE_TermEmbedding(); XPCOMGlueShutdown(); exit(0); } _______________________________________________ dev-embedding mailing list dev-embedding@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-embedding