aboutsummaryrefslogtreecommitdiffstats
path: root/embed/xulrunner/components/MozRegisterComponents.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'embed/xulrunner/components/MozRegisterComponents.cpp')
-rw-r--r--embed/xulrunner/components/MozRegisterComponents.cpp330
1 files changed, 330 insertions, 0 deletions
diff --git a/embed/xulrunner/components/MozRegisterComponents.cpp b/embed/xulrunner/components/MozRegisterComponents.cpp
new file mode 100644
index 000000000..0ff0014d7
--- /dev/null
+++ b/embed/xulrunner/components/MozRegisterComponents.cpp
@@ -0,0 +1,330 @@
+/*
+ * Copyright © 2001,2002,2003 Philip Langdale
+ * Copyright © 2003 Marco Pesenti Gritti
+ * Copyright © 2004, 2005, 2006, 2007 Christian Persch
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $Id$
+ */
+
+#include <xpcom-config.h>
+#include "config.h"
+
+#include <glib/gmessages.h>
+
+#include <nsStringGlue.h>
+
+#include <nsComponentManagerUtils.h>
+#include <nsCOMPtr.h>
+#include <nsCURILoader.h>
+#include <nsDocShellCID.h>
+#include <nsICategoryManager.h>
+#include <nsIClassInfoImpl.h>
+#include <nsIComponentManager.h>
+#include <nsIComponentRegistrar.h>
+#include <nsIGenericFactory.h>
+#include <nsILocalFile.h>
+#include <nsIScriptNameSpaceManager.h>
+#include <nsIServiceManager.h>
+#include <nsMemory.h>
+#include <nsNetCID.h>
+#include <nsServiceManagerUtils.h>
+
+#define HAVE_MOZILLA_PSM
+
+#ifdef HAVE_MOZILLA_PSM
+#include <nsISecureBrowserUI.h>
+#endif
+
+#include "ContentHandler.h"
+#include "EphyAboutModule.h"
+#include "EphyContentPolicy.h"
+#include "EphySidebar.h"
+#include "GeckoCookiePromptService.h"
+#include "GeckoPrintService.h"
+#include "GeckoPrintSession.h"
+#include "GeckoPromptService.h"
+#include "GlobalHistory.h"
+#include "MozDownload.h"
+
+#ifdef ENABLE_FILEPICKER
+#include "FilePicker.h"
+#endif
+
+#ifdef ENABLE_SPELLCHECKER
+#include "GeckoSpellCheckEngine.h"
+#endif
+
+#ifdef HAVE_MOZILLA_PSM
+#include "GtkNSSClientAuthDialogs.h"
+#include "GtkNSSDialogs.h"
+#include "GtkNSSKeyPairDialogs.h"
+#include "GtkNSSSecurityWarningDialogs.h"
+#include "GeckoFormSigningDialog.h"
+#endif
+
+NS_GENERIC_FACTORY_CONSTRUCTOR(EphyAboutModule)
+NS_GENERIC_FACTORY_CONSTRUCTOR(EphyContentPolicy)
+NS_GENERIC_FACTORY_CONSTRUCTOR(EphySidebar)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GContentHandler)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GeckoCookiePromptService)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GeckoPrintService)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GeckoPrintSession)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GeckoPromptService)
+NS_GENERIC_FACTORY_CONSTRUCTOR(MozDownload)
+NS_GENERIC_FACTORY_CONSTRUCTOR(MozGlobalHistory)
+
+#ifdef ENABLE_FILEPICKER
+NS_GENERIC_FACTORY_CONSTRUCTOR(GFilePicker)
+#endif
+
+#ifdef ENABLE_SPELLCHECKER
+NS_GENERIC_FACTORY_CONSTRUCTOR(GeckoSpellCheckEngine)
+#endif
+
+#ifdef HAVE_MOZILLA_PSM
+NS_GENERIC_FACTORY_CONSTRUCTOR(GtkNSSClientAuthDialogs)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GtkNSSDialogs)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GtkNSSKeyPairDialogs)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GtkNSSSecurityWarningDialogs)
+NS_GENERIC_FACTORY_CONSTRUCTOR(GeckoFormSigningDialog)
+#endif
+
+#define XPINSTALL_CONTRACTID NS_CONTENT_HANDLER_CONTRACTID_PREFIX "application/x-xpinstall"
+
+/* class information */
+NS_DECL_CLASSINFO(EphySidebar)
+
+/* FIXME: uninstall XPI handler */
+
+static const nsModuleComponentInfo sAppComps[] = {
+ {
+ MOZ_DOWNLOAD_CLASSNAME,
+ MOZ_DOWNLOAD_CID,
+#ifdef NS_TRANSFER_CONTRACTID
+ NS_TRANSFER_CONTRACTID,
+#else
+ NS_DOWNLOAD_CONTRACTID,
+#endif
+ MozDownloadConstructor
+ },
+#ifdef ENABLE_FILEPICKER
+ {
+ G_FILEPICKER_CLASSNAME,
+ G_FILEPICKER_CID,
+ G_FILEPICKER_CONTRACTID,
+ GFilePickerConstructor
+ },
+#endif
+#ifdef HAVE_MOZILLA_PSM
+ {
+ GTK_NSSCLIENTAUTHDIALOGS_CLASSNAME,
+ GTK_NSSCLIENTAUTHDIALOGS_CID,
+ NS_CLIENTAUTHDIALOGS_CONTRACTID,
+ GtkNSSClientAuthDialogsConstructor
+ },
+ {
+ GTK_NSSDIALOGS_CLASSNAME,
+ GTK_NSSDIALOGS_CID,
+ NS_BADCERTLISTENER_CONTRACTID,
+ GtkNSSDialogsConstructor
+ },
+ {
+ GTK_NSSDIALOGS_CLASSNAME,
+ GTK_NSSDIALOGS_CID,
+ NS_CERTIFICATEDIALOGS_CONTRACTID,
+ GtkNSSDialogsConstructor
+ },
+ {
+ GTK_NSSDIALOGS_CLASSNAME,
+ GTK_NSSDIALOGS_CID,
+ NS_DOMCRYPTODIALOGS_CONTRACTID,
+ GtkNSSDialogsConstructor
+ },
+ {
+ GTK_NSSDIALOGS_CLASSNAME,
+ GTK_NSSDIALOGS_CID,
+ NS_TOKENDIALOGS_CONTRACTID,
+ GtkNSSDialogsConstructor
+ },
+ {
+ GTK_NSSDIALOGS_CLASSNAME,
+ GTK_NSSDIALOGS_CID,
+ NS_TOKENPASSWORDSDIALOG_CONTRACTID,
+ GtkNSSDialogsConstructor
+ },
+ {
+ GTK_NSSKEYPAIRDIALOGS_CLASSNAME,
+ GTK_NSSKEYPAIRDIALOGS_CID,
+ NS_GENERATINGKEYPAIRINFODIALOGS_CONTRACTID,
+ GtkNSSKeyPairDialogsConstructor
+ },
+ {
+ GTK_NSSSECURITYWARNINGDIALOGS_CLASSNAME,
+ GTK_NSSSECURITYWARNINGDIALOGS_CID,
+ NS_SECURITYWARNINGDIALOGS_CONTRACTID,
+ GtkNSSSecurityWarningDialogsConstructor
+ },
+ {
+ GECKO_FORMSIGNINGDIALOGS_CLASSNAME,
+ GECKO_FORMSIGNINGDIALOGS_CID,
+ NS_FORMSIGNINGDIALOG_CONTRACTID,
+ GeckoFormSigningDialogConstructor
+ },
+#endif /* HAVE_MOZILLA_PSM */
+ {
+ NS_IHELPERAPPLAUNCHERDLG_CLASSNAME,
+ G_CONTENTHANDLER_CID,
+ NS_IHELPERAPPLAUNCHERDLG_CONTRACTID,
+ GContentHandlerConstructor
+ },
+ {
+ EPHY_GLOBALHISTORY_CLASSNAME,
+ EPHY_GLOBALHISTORY_CID,
+ NS_GLOBALHISTORY2_CONTRACTID,
+ MozGlobalHistoryConstructor
+ },
+ {
+ GECKO_PRINT_SERVICE_CLASSNAME,
+ GECKO_PRINT_SERVICE_IID,
+ "@mozilla.org/embedcomp/printingprompt-service;1",
+ GeckoPrintServiceConstructor
+ },
+ {
+ GECKO_PRINT_SESSION_CLASSNAME,
+ GECKO_PRINT_SESSION_IID,
+ "@mozilla.org/gfx/printsession;1",
+ GeckoPrintSessionConstructor
+ },
+ {
+ EPHY_CONTENT_POLICY_CLASSNAME,
+ EPHY_CONTENT_POLICY_CID,
+ EPHY_CONTENT_POLICY_CONTRACTID,
+ EphyContentPolicyConstructor,
+ EphyContentPolicy::Register,
+ EphyContentPolicy::Unregister
+ },
+ {
+ EPHY_SIDEBAR_CLASSNAME,
+ EPHY_SIDEBAR_CID,
+ NS_SIDEBAR_CONTRACTID,
+ EphySidebarConstructor,
+ EphySidebar::Register,
+ EphySidebar::Unregister,
+ nsnull /* no factory destructor */,
+ NS_CI_INTERFACE_GETTER_NAME(EphySidebar),
+ nsnull /* no language helper */,
+ &NS_CLASSINFO_NAME(EphySidebar),
+ nsIClassInfo::DOM_OBJECT
+ },
+ {
+ EPHY_ABOUT_EPIPHANY_CLASSNAME,
+ EPHY_ABOUT_MODULE_CID,
+ EPHY_ABOUT_EPIPHANY_CONTRACTID,
+ EphyAboutModuleConstructor
+ },
+ {
+ EPHY_ABOUT_RECOVER_CLASSNAME,
+ EPHY_ABOUT_MODULE_CID,
+ EPHY_ABOUT_RECOVER_CONTRACTID,
+ EphyAboutModuleConstructor
+ },
+ {
+ EPHY_ABOUT_NETERROR_CLASSNAME,
+ EPHY_ABOUT_MODULE_CID,
+ EPHY_ABOUT_NETERROR_CONTRACTID,
+ EphyAboutModuleConstructor
+ },
+ {
+ GECKO_PROMPT_SERVICE_CLASSNAME,
+ GECKO_PROMPT_SERVICE_CID,
+ "@mozilla.org/embedcomp/prompt-service;1",
+ GeckoPromptServiceConstructor
+ },
+ {
+ GECKO_PROMPT_SERVICE_CLASSNAME,
+ GECKO_PROMPT_SERVICE_CID,
+ "@mozilla.org/embedcomp/nbalert-service;1",
+ GeckoPromptServiceConstructor
+ },
+#ifdef ENABLE_SPELLCHECKER
+ {
+ GECKO_SPELL_CHECK_ENGINE_CLASSNAME,
+ GECKO_SPELL_CHECK_ENGINE_IID,
+ GECKO_SPELL_CHECK_ENGINE_CONTRACTID,
+ GeckoSpellCheckEngineConstructor
+ },
+#endif /* ENABLE_SPELLCHECK */
+ {
+ EPHY_COOKIEPROMPTSERVICE_CLASSNAME,
+ EPHY_COOKIEPROMPTSERVICE_CID,
+ EPHY_COOKIEPROMPTSERVICE_CONTRACTID,
+ GeckoCookiePromptServiceConstructor
+ }
+};
+
+gboolean
+mozilla_register_components (void)
+{
+ gboolean ret = TRUE;
+ nsresult rv;
+
+ nsCOMPtr<nsIComponentRegistrar> cr;
+ NS_GetComponentRegistrar(getter_AddRefs(cr));
+ NS_ENSURE_TRUE (cr, FALSE);
+
+ nsCOMPtr<nsIComponentManager> cm;
+ NS_GetComponentManager (getter_AddRefs (cm));
+ NS_ENSURE_TRUE (cm, FALSE);
+
+ for (guint i = 0; i < G_N_ELEMENTS (sAppComps); i++)
+ {
+ nsCOMPtr<nsIGenericFactory> componentFactory;
+ rv = NS_NewGenericFactory(getter_AddRefs(componentFactory),
+ &(sAppComps[i]));
+ if (NS_FAILED(rv) || !componentFactory)
+ {
+ g_warning ("Failed to make a factory for %s\n", sAppComps[i].mDescription);
+
+ ret = FALSE;
+ continue; // don't abort registering other components
+ }
+
+ rv = cr->RegisterFactory(sAppComps[i].mCID,
+ sAppComps[i].mDescription,
+ sAppComps[i].mContractID,
+ componentFactory);
+ if (NS_FAILED(rv))
+ {
+ g_warning ("Failed to register %s\n", sAppComps[i].mDescription);
+
+ ret = FALSE;
+ }
+
+ if (sAppComps[i].mRegisterSelfProc)
+ {
+ rv = sAppComps[i].mRegisterSelfProc (cm, nsnull, nsnull, nsnull, &sAppComps[i]);
+
+ if (NS_FAILED (rv))
+ {
+ g_warning ("Failed to register-self for %s\n", sAppComps[i].mDescription);
+ ret = FALSE;
+ }
+ }
+ }
+
+ return ret;
+}