Bug 568691 part B - mechanical changes to in-tree binary modules needed to get them building and registering correctly. After this patch, xpcshell appears to work.
authorBenjamin Smedberg <benjamin@smedbergs.us>
Thu, 10 Jun 2010 14:11:40 -0400
changeset 46998 08410c390aa9dab36ece64f908d391b8bc9cfc6e
parent 46997 1e41bf320ea0cd5fa6a03892b87d59278ee8754c
child 46999 4f284f668535fb22a3fa04c37e8ad4dfefbefba7
child 47004 1b5cdc6d408502cc4721847482b4809f8a3dc427
push idunknown
push userunknown
push dateunknown
bugs568691
milestone1.9.3a6pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 568691 part B - mechanical changes to in-tree binary modules needed to get them building and registering correctly. After this patch, xpcshell appears to work.
accessible/build/nsAccessibilityFactory.cpp
browser/components/about/AboutRedirector.cpp
browser/components/about/AboutRedirector.h
browser/components/build/nsModule.cpp
browser/components/dirprovider/DirectoryProvider.cpp
browser/components/dirprovider/DirectoryProvider.h
browser/components/feeds/src/nsFeedSniffer.cpp
browser/components/feeds/src/nsFeedSniffer.h
caps/src/nsNullPrincipal.cpp
caps/src/nsPrincipal.cpp
caps/src/nsSecurityManagerFactory.cpp
caps/src/nsSystemPrincipal.cpp
chrome/src/nsChromeFactory.cpp
content/xul/document/public/nsIXULPrototypeCache.h
content/xul/document/src/nsXULControllers.cpp
content/xul/document/src/nsXULControllers.h
content/xul/document/src/nsXULPrototypeCache.cpp
content/xul/document/src/nsXULPrototypeCache.h
content/xul/templates/src/nsXULContentBuilder.cpp
content/xul/templates/src/nsXULTreeBuilder.cpp
docshell/base/Makefile.in
docshell/base/nsAboutRedirector.cpp
docshell/base/nsAboutRedirector.h
docshell/base/nsDownloadHistory.cpp
docshell/base/nsDownloadHistory.h
docshell/base/nsGlobalHistory2Adapter.cpp
docshell/base/nsGlobalHistory2Adapter.h
docshell/base/nsGlobalHistoryAdapter.cpp
docshell/base/nsGlobalHistoryAdapter.h
docshell/build/nsDocShellModule.cpp
editor/composer/src/nsComposerRegistration.cpp
editor/txmgr/src/nsTransactionManagerFactory.cpp
embedding/browser/build/nsWebBrowserModule.cpp
embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
embedding/components/build/nsEmbeddingModule.cpp
embedding/components/windowwatcher/src/nsWindowWatcher.cpp
extensions/auth/nsAuthFactory.cpp
extensions/cookie/nsCookieModule.cpp
extensions/permissions/nsModuleFactory.cpp
extensions/pref/autoconfig/src/nsConfigFactory.cpp
extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp
extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp
extensions/spellcheck/hunspell/src/mozHunspellDirProvider.h
extensions/spellcheck/src/mozSpellCheckerFactory.cpp
extensions/universalchardet/src/xpcom/nsUniversalCharDetModule.cpp
gfx/public/nsITheme.h
gfx/src/thebes/nsThebesGfxFactory.cpp
intl/build/nsI18nModule.cpp
intl/chardet/src/nsChardetModule.cpp
intl/locale/idl/nsIScriptableDateFormat.idl
intl/locale/src/nsLocaleConstructors.h
intl/locale/src/nsScriptableDateFormat.cpp
intl/strres/src/nsStringBundle.cpp
intl/uconv/public/nsEncoderDecoderUtils.h
intl/uconv/src/nsCP1252ToUnicode.cpp
intl/uconv/src/nsCP1252ToUnicode.h
intl/uconv/src/nsCharsetConverterManager.cpp
intl/uconv/src/nsCharsetConverterManager.h
intl/uconv/src/nsISO88591ToUnicode.cpp
intl/uconv/src/nsISO88591ToUnicode.h
intl/uconv/src/nsMacRomanToUnicode.cpp
intl/uconv/src/nsMacRomanToUnicode.h
intl/uconv/src/nsScriptableUConv.cpp
intl/uconv/src/nsUConvModule.cpp
intl/uconv/src/nsUnicodeToCP1252.cpp
intl/uconv/src/nsUnicodeToCP1252.h
intl/uconv/src/nsUnicodeToISO88591.cpp
intl/uconv/src/nsUnicodeToISO88591.h
intl/uconv/src/nsUnicodeToMacRoman.cpp
intl/uconv/src/nsUnicodeToMacRoman.h
intl/uconv/ucvibm/nsCP1125ToUnicode.cpp
intl/uconv/ucvibm/nsCP1125ToUnicode.h
intl/uconv/ucvibm/nsCP1131ToUnicode.cpp
intl/uconv/ucvibm/nsCP1131ToUnicode.h
intl/uconv/ucvibm/nsCP850ToUnicode.cpp
intl/uconv/ucvibm/nsCP850ToUnicode.h
intl/uconv/ucvibm/nsCP852ToUnicode.cpp
intl/uconv/ucvibm/nsCP852ToUnicode.h
intl/uconv/ucvibm/nsCP855ToUnicode.cpp
intl/uconv/ucvibm/nsCP855ToUnicode.h
intl/uconv/ucvibm/nsCP857ToUnicode.cpp
intl/uconv/ucvibm/nsCP857ToUnicode.h
intl/uconv/ucvibm/nsCP862ToUnicode.cpp
intl/uconv/ucvibm/nsCP862ToUnicode.h
intl/uconv/ucvibm/nsCP864ToUnicode.cpp
intl/uconv/ucvibm/nsCP864ToUnicode.h
intl/uconv/ucvibm/nsCP864iToUnicode.cpp
intl/uconv/ucvibm/nsCP864iToUnicode.h
intl/uconv/ucvibm/nsCP869ToUnicode.cpp
intl/uconv/ucvibm/nsCP869ToUnicode.h
intl/uconv/ucvibm/nsUnicodeToCP1125.cpp
intl/uconv/ucvibm/nsUnicodeToCP1125.h
intl/uconv/ucvibm/nsUnicodeToCP1131.cpp
intl/uconv/ucvibm/nsUnicodeToCP1131.h
intl/uconv/ucvibm/nsUnicodeToCP850.cpp
intl/uconv/ucvibm/nsUnicodeToCP850.h
intl/uconv/ucvibm/nsUnicodeToCP852.cpp
intl/uconv/ucvibm/nsUnicodeToCP852.h
intl/uconv/ucvibm/nsUnicodeToCP855.cpp
intl/uconv/ucvibm/nsUnicodeToCP855.h
intl/uconv/ucvibm/nsUnicodeToCP857.cpp
intl/uconv/ucvibm/nsUnicodeToCP857.h
intl/uconv/ucvibm/nsUnicodeToCP862.cpp
intl/uconv/ucvibm/nsUnicodeToCP862.h
intl/uconv/ucvibm/nsUnicodeToCP864.cpp
intl/uconv/ucvibm/nsUnicodeToCP864.h
intl/uconv/ucvibm/nsUnicodeToCP864i.cpp
intl/uconv/ucvibm/nsUnicodeToCP864i.h
intl/uconv/ucvibm/nsUnicodeToCP869.cpp
intl/uconv/ucvibm/nsUnicodeToCP869.h
intl/uconv/ucvja/nsUnicodeToEUCJP.cpp
intl/uconv/ucvja/nsUnicodeToEUCJP.h
intl/uconv/ucvja/nsUnicodeToJISx0201.cpp
intl/uconv/ucvja/nsUnicodeToJISx0201.h
intl/uconv/ucvja/nsUnicodeToSJIS.cpp
intl/uconv/ucvja/nsUnicodeToSJIS.h
intl/uconv/ucvko/nsCP949ToUnicode.cpp
intl/uconv/ucvko/nsCP949ToUnicode.h
intl/uconv/ucvko/nsEUCKRToUnicode.cpp
intl/uconv/ucvko/nsEUCKRToUnicode.h
intl/uconv/ucvko/nsJohabToUnicode.cpp
intl/uconv/ucvko/nsJohabToUnicode.h
intl/uconv/ucvko/nsUnicodeToCP949.cpp
intl/uconv/ucvko/nsUnicodeToCP949.h
intl/uconv/ucvko/nsUnicodeToEUCKR.cpp
intl/uconv/ucvko/nsUnicodeToEUCKR.h
intl/uconv/ucvko/nsUnicodeToJohab.cpp
intl/uconv/ucvko/nsUnicodeToJohab.h
intl/uconv/ucvlatin/nsARMSCII8ToUnicode.cpp
intl/uconv/ucvlatin/nsARMSCII8ToUnicode.h
intl/uconv/ucvlatin/nsAsciiToUnicode.cpp
intl/uconv/ucvlatin/nsAsciiToUnicode.h
intl/uconv/ucvlatin/nsCP1250ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1250ToUnicode.h
intl/uconv/ucvlatin/nsCP1251ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1251ToUnicode.h
intl/uconv/ucvlatin/nsCP1253ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1253ToUnicode.h
intl/uconv/ucvlatin/nsCP1254ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1254ToUnicode.h
intl/uconv/ucvlatin/nsCP1255ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1255ToUnicode.h
intl/uconv/ucvlatin/nsCP1256ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1256ToUnicode.h
intl/uconv/ucvlatin/nsCP1257ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1257ToUnicode.h
intl/uconv/ucvlatin/nsCP1258ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1258ToUnicode.h
intl/uconv/ucvlatin/nsCP866ToUnicode.cpp
intl/uconv/ucvlatin/nsCP866ToUnicode.h
intl/uconv/ucvlatin/nsCP874ToUnicode.cpp
intl/uconv/ucvlatin/nsCP874ToUnicode.h
intl/uconv/ucvlatin/nsGEOSTD8ToUnicode.cpp
intl/uconv/ucvlatin/nsGEOSTD8ToUnicode.h
intl/uconv/ucvlatin/nsISO885910ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885910ToUnicode.h
intl/uconv/ucvlatin/nsISO885911ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885911ToUnicode.h
intl/uconv/ucvlatin/nsISO885913ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885913ToUnicode.h
intl/uconv/ucvlatin/nsISO885914ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885914ToUnicode.h
intl/uconv/ucvlatin/nsISO885915ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885915ToUnicode.h
intl/uconv/ucvlatin/nsISO885916ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885916ToUnicode.h
intl/uconv/ucvlatin/nsISO88592ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88592ToUnicode.h
intl/uconv/ucvlatin/nsISO88593ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88593ToUnicode.h
intl/uconv/ucvlatin/nsISO88594ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88594ToUnicode.h
intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88595ToUnicode.h
intl/uconv/ucvlatin/nsISO88596EToUnicode.cpp
intl/uconv/ucvlatin/nsISO88596EToUnicode.h
intl/uconv/ucvlatin/nsISO88596IToUnicode.cpp
intl/uconv/ucvlatin/nsISO88596IToUnicode.h
intl/uconv/ucvlatin/nsISO88596ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88596ToUnicode.h
intl/uconv/ucvlatin/nsISO88597ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88597ToUnicode.h
intl/uconv/ucvlatin/nsISO88598EToUnicode.cpp
intl/uconv/ucvlatin/nsISO88598EToUnicode.h
intl/uconv/ucvlatin/nsISO88598IToUnicode.cpp
intl/uconv/ucvlatin/nsISO88598IToUnicode.h
intl/uconv/ucvlatin/nsISO88598ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88598ToUnicode.h
intl/uconv/ucvlatin/nsISO88599ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88599ToUnicode.h
intl/uconv/ucvlatin/nsISOIR111ToUnicode.cpp
intl/uconv/ucvlatin/nsISOIR111ToUnicode.h
intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp
intl/uconv/ucvlatin/nsKOI8RToUnicode.h
intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp
intl/uconv/ucvlatin/nsKOI8UToUnicode.h
intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp
intl/uconv/ucvlatin/nsMacArabicToUnicode.h
intl/uconv/ucvlatin/nsMacCEToUnicode.cpp
intl/uconv/ucvlatin/nsMacCEToUnicode.h
intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp
intl/uconv/ucvlatin/nsMacCroatianToUnicode.h
intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp
intl/uconv/ucvlatin/nsMacCyrillicToUnicode.h
intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp
intl/uconv/ucvlatin/nsMacDevanagariToUnicode.h
intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp
intl/uconv/ucvlatin/nsMacFarsiToUnicode.h
intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp
intl/uconv/ucvlatin/nsMacGreekToUnicode.h
intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp
intl/uconv/ucvlatin/nsMacGujaratiToUnicode.h
intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp
intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.h
intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp
intl/uconv/ucvlatin/nsMacHebrewToUnicode.h
intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp
intl/uconv/ucvlatin/nsMacIcelandicToUnicode.h
intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp
intl/uconv/ucvlatin/nsMacRomanianToUnicode.h
intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp
intl/uconv/ucvlatin/nsMacTurkishToUnicode.h
intl/uconv/ucvlatin/nsT61ToUnicode.cpp
intl/uconv/ucvlatin/nsT61ToUnicode.h
intl/uconv/ucvlatin/nsTCVN5712ToUnicode.cpp
intl/uconv/ucvlatin/nsTCVN5712ToUnicode.h
intl/uconv/ucvlatin/nsTIS620ToUnicode.cpp
intl/uconv/ucvlatin/nsTIS620ToUnicode.h
intl/uconv/ucvlatin/nsUnicodeToARMSCII8.cpp
intl/uconv/ucvlatin/nsUnicodeToARMSCII8.h
intl/uconv/ucvlatin/nsUnicodeToAdobeEuro.cpp
intl/uconv/ucvlatin/nsUnicodeToAdobeEuro.h
intl/uconv/ucvlatin/nsUnicodeToAscii.cpp
intl/uconv/ucvlatin/nsUnicodeToAscii.h
intl/uconv/ucvlatin/nsUnicodeToCP1250.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1250.h
intl/uconv/ucvlatin/nsUnicodeToCP1251.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1251.h
intl/uconv/ucvlatin/nsUnicodeToCP1253.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1253.h
intl/uconv/ucvlatin/nsUnicodeToCP1254.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1254.h
intl/uconv/ucvlatin/nsUnicodeToCP1255.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1255.h
intl/uconv/ucvlatin/nsUnicodeToCP1256.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1256.h
intl/uconv/ucvlatin/nsUnicodeToCP1257.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1257.h
intl/uconv/ucvlatin/nsUnicodeToCP1258.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1258.h
intl/uconv/ucvlatin/nsUnicodeToCP866.cpp
intl/uconv/ucvlatin/nsUnicodeToCP866.h
intl/uconv/ucvlatin/nsUnicodeToCP874.cpp
intl/uconv/ucvlatin/nsUnicodeToCP874.h
intl/uconv/ucvlatin/nsUnicodeToGEOSTD8.cpp
intl/uconv/ucvlatin/nsUnicodeToGEOSTD8.h
intl/uconv/ucvlatin/nsUnicodeToISO885910.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885910.h
intl/uconv/ucvlatin/nsUnicodeToISO885911.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885911.h
intl/uconv/ucvlatin/nsUnicodeToISO885913.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885913.h
intl/uconv/ucvlatin/nsUnicodeToISO885914.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885914.h
intl/uconv/ucvlatin/nsUnicodeToISO885915.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885915.h
intl/uconv/ucvlatin/nsUnicodeToISO885916.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885916.h
intl/uconv/ucvlatin/nsUnicodeToISO88592.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88592.h
intl/uconv/ucvlatin/nsUnicodeToISO88593.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88593.h
intl/uconv/ucvlatin/nsUnicodeToISO88594.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88594.h
intl/uconv/ucvlatin/nsUnicodeToISO88595.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88595.h
intl/uconv/ucvlatin/nsUnicodeToISO88596.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88596.h
intl/uconv/ucvlatin/nsUnicodeToISO88596E.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88596E.h
intl/uconv/ucvlatin/nsUnicodeToISO88596I.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88596I.h
intl/uconv/ucvlatin/nsUnicodeToISO88597.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88597.h
intl/uconv/ucvlatin/nsUnicodeToISO88598.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88598.h
intl/uconv/ucvlatin/nsUnicodeToISO88598E.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88598E.h
intl/uconv/ucvlatin/nsUnicodeToISO88598I.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88598I.h
intl/uconv/ucvlatin/nsUnicodeToISO88599.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88599.h
intl/uconv/ucvlatin/nsUnicodeToISOIR111.cpp
intl/uconv/ucvlatin/nsUnicodeToISOIR111.h
intl/uconv/ucvlatin/nsUnicodeToKOI8R.cpp
intl/uconv/ucvlatin/nsUnicodeToKOI8R.h
intl/uconv/ucvlatin/nsUnicodeToKOI8U.cpp
intl/uconv/ucvlatin/nsUnicodeToKOI8U.h
intl/uconv/ucvlatin/nsUnicodeToMacArabic.cpp
intl/uconv/ucvlatin/nsUnicodeToMacArabic.h
intl/uconv/ucvlatin/nsUnicodeToMacCE.cpp
intl/uconv/ucvlatin/nsUnicodeToMacCE.h
intl/uconv/ucvlatin/nsUnicodeToMacCroatian.cpp
intl/uconv/ucvlatin/nsUnicodeToMacCroatian.h
intl/uconv/ucvlatin/nsUnicodeToMacCyrillic.cpp
intl/uconv/ucvlatin/nsUnicodeToMacCyrillic.h
intl/uconv/ucvlatin/nsUnicodeToMacDevanagari.cpp
intl/uconv/ucvlatin/nsUnicodeToMacDevanagari.h
intl/uconv/ucvlatin/nsUnicodeToMacFarsi.cpp
intl/uconv/ucvlatin/nsUnicodeToMacFarsi.h
intl/uconv/ucvlatin/nsUnicodeToMacGreek.cpp
intl/uconv/ucvlatin/nsUnicodeToMacGreek.h
intl/uconv/ucvlatin/nsUnicodeToMacGujarati.cpp
intl/uconv/ucvlatin/nsUnicodeToMacGujarati.h
intl/uconv/ucvlatin/nsUnicodeToMacGurmukhi.cpp
intl/uconv/ucvlatin/nsUnicodeToMacGurmukhi.h
intl/uconv/ucvlatin/nsUnicodeToMacHebrew.cpp
intl/uconv/ucvlatin/nsUnicodeToMacHebrew.h
intl/uconv/ucvlatin/nsUnicodeToMacIcelandic.cpp
intl/uconv/ucvlatin/nsUnicodeToMacIcelandic.h
intl/uconv/ucvlatin/nsUnicodeToMacRomanian.cpp
intl/uconv/ucvlatin/nsUnicodeToMacRomanian.h
intl/uconv/ucvlatin/nsUnicodeToMacTurkish.cpp
intl/uconv/ucvlatin/nsUnicodeToMacTurkish.h
intl/uconv/ucvlatin/nsUnicodeToSymbol.cpp
intl/uconv/ucvlatin/nsUnicodeToSymbol.h
intl/uconv/ucvlatin/nsUnicodeToT61.cpp
intl/uconv/ucvlatin/nsUnicodeToT61.h
intl/uconv/ucvlatin/nsUnicodeToTCVN5712.cpp
intl/uconv/ucvlatin/nsUnicodeToTCVN5712.h
intl/uconv/ucvlatin/nsUnicodeToTIS620.cpp
intl/uconv/ucvlatin/nsUnicodeToTIS620.h
intl/uconv/ucvlatin/nsUnicodeToUserDefined.cpp
intl/uconv/ucvlatin/nsUnicodeToUserDefined.h
intl/uconv/ucvlatin/nsUnicodeToVISCII.cpp
intl/uconv/ucvlatin/nsUnicodeToVISCII.h
intl/uconv/ucvlatin/nsUnicodeToVPS.cpp
intl/uconv/ucvlatin/nsUnicodeToVPS.h
intl/uconv/ucvlatin/nsUnicodeToZapfDingbat.cpp
intl/uconv/ucvlatin/nsUnicodeToZapfDingbat.h
intl/uconv/ucvlatin/nsUserDefinedToUnicode.cpp
intl/uconv/ucvlatin/nsUserDefinedToUnicode.h
intl/uconv/ucvlatin/nsVISCIIToUnicode.cpp
intl/uconv/ucvlatin/nsVISCIIToUnicode.h
intl/uconv/ucvlatin/nsVPSToUnicode.cpp
intl/uconv/ucvlatin/nsVPSToUnicode.h
intl/uconv/ucvtw/nsBIG5HKSCSToUnicode.cpp
intl/uconv/ucvtw/nsBIG5HKSCSToUnicode.h
intl/uconv/ucvtw/nsBIG5ToUnicode.cpp
intl/uconv/ucvtw/nsBIG5ToUnicode.h
intl/uconv/ucvtw/nsUnicodeToBIG5.cpp
intl/uconv/ucvtw/nsUnicodeToBIG5.h
intl/uconv/ucvtw/nsUnicodeToBIG5HKSCS.cpp
intl/uconv/ucvtw/nsUnicodeToBIG5HKSCS.h
intl/uconv/ucvtw/nsUnicodeToHKSCS.cpp
intl/uconv/ucvtw/nsUnicodeToHKSCS.h
intl/uconv/ucvtw2/nsEUCTWToUnicode.cpp
intl/uconv/ucvtw2/nsEUCTWToUnicode.h
intl/uconv/ucvtw2/nsUnicodeToEUCTW.cpp
intl/uconv/ucvtw2/nsUnicodeToEUCTW.h
intl/unicharutil/src/nsUcharUtilConstructors.h
js/jsd/idl/jsdIDebuggerService.idl
js/jsd/jsd_xpc.cpp
js/jsd/jsd_xpc.h
modules/libjar/nsJARFactory.cpp
modules/libjar/zipwriter/src/ZipWriterModule.cpp
modules/libpr0n/build/nsImageModule.cpp
modules/libpr0n/decoders/icon/nsIconModule.cpp
modules/libpref/src/nsPrefsFactory.cpp
modules/plugin/base/src/nsPluginHost.cpp
modules/plugin/base/src/nsPluginModule.cpp
netwerk/base/src/nsBufferedStreams.cpp
netwerk/base/src/nsBufferedStreams.h
netwerk/base/src/nsFileStreams.cpp
netwerk/base/src/nsFileStreams.h
netwerk/base/src/nsIncrementalDownload.cpp
netwerk/base/src/nsMIMEInputStream.cpp
netwerk/base/src/nsMIMEInputStream.h
netwerk/base/src/nsProtocolProxyService.cpp
netwerk/base/src/nsStreamLoader.cpp
netwerk/base/src/nsStreamLoader.h
netwerk/base/src/nsUnicharStreamLoader.cpp
netwerk/base/src/nsUnicharStreamLoader.h
netwerk/build/nsNetModule.cpp
netwerk/cache/nsCacheService.cpp
netwerk/cache/nsCacheService.h
netwerk/protocol/about/nsAboutBlank.cpp
netwerk/protocol/about/nsAboutBlank.h
netwerk/protocol/about/nsAboutBloat.cpp
netwerk/protocol/about/nsAboutBloat.h
netwerk/protocol/about/nsAboutCache.cpp
netwerk/protocol/about/nsAboutCache.h
netwerk/protocol/data/nsDataHandler.cpp
netwerk/protocol/data/nsDataHandler.h
netwerk/socket/nsSOCKSSocketProvider.cpp
netwerk/socket/nsSOCKSSocketProvider.h
netwerk/socket/nsSocketProviderService.cpp
netwerk/socket/nsSocketProviderService.h
netwerk/streamconv/converters/nsFTPDirListingConv.cpp
netwerk/streamconv/converters/nsGopherDirListingConv.cpp
netwerk/streamconv/converters/nsIndexedToHTML.cpp
netwerk/streamconv/converters/nsIndexedToHTML.h
netwerk/streamconv/converters/nsUnknownDecoder.cpp
netwerk/streamconv/converters/nsUnknownDecoder.h
netwerk/streamconv/test/Converters.cpp
netwerk/streamconv/test/Converters.h
netwerk/streamconv/test/TestStreamConv.cpp
netwerk/test/PropertiesTest.cpp
netwerk/test/TestBlockingSocket.cpp
netwerk/test/TestPageLoad.cpp
netwerk/test/TestUpload.cpp
netwerk/test/urltest.cpp
netwerk/wifi/nsWifiMonitor.cpp
parser/htmlparser/src/nsParserModule.cpp
rdf/base/src/nsInMemoryDataSource.cpp
rdf/base/src/nsRDFBaseDataSources.h
rdf/base/src/nsRDFService.h
rdf/base/src/nsRDFXMLParser.cpp
rdf/base/src/nsRDFXMLParser.h
rdf/base/src/nsRDFXMLSerializer.cpp
rdf/base/src/nsRDFXMLSerializer.h
rdf/build/nsRDFModule.cpp
rdf/build/nsRDFModule.h
rdf/datasource/public/nsILocalStore.h
rdf/datasource/src/nsFileSystemDataSource.h
rdf/datasource/src/nsLocalStore.cpp
security/manager/boot/src/nsBOOTModule.cpp
security/manager/pki/src/nsPKIModule.cpp
security/manager/ssl/src/nsKeygenHandler.cpp
security/manager/ssl/src/nsKeygenHandler.h
security/manager/ssl/src/nsNSSModule.cpp
storage/build/mozStorageModule.cpp
toolkit/components/autocomplete/src/nsAutoCompleteController.cpp
toolkit/components/build/nsToolkitCompsModule.cpp
toolkit/components/commandlines/src/nsCommandLine.cpp
toolkit/components/ctypes/Module.cpp
toolkit/components/intl/nsCharsetMenu.cpp
toolkit/components/intl/nsCharsetMenu.h
toolkit/components/places/src/nsNavHistory.cpp
toolkit/components/places/src/nsPlacesModule.cpp
toolkit/components/satchel/src/nsFormFillController.cpp
toolkit/components/typeaheadfind/src/nsTypeAheadFind.cpp
uriloader/prefetch/nsPrefetchService.h
widget/src/build/nsWinWidgetFactory.cpp
widget/src/windows/nsNativeThemeWin.cpp
widget/src/xpwidgets/nsAppShellSingleton.h
--- a/accessible/build/nsAccessibilityFactory.cpp
+++ b/accessible/build/nsAccessibilityFactory.cpp
@@ -31,52 +31,56 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsCOMPtr.h"
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 
 #include "nsIServiceManager.h"
 #include "nsIComponentManager.h"
 #include "nsIAccessibilityService.h"
 #include "nsIAccessibleRetrieval.h"
 #include "nscore.h"
 
-static NS_IMETHODIMP
+static nsresult
 NS_ConstructAccessibilityService(nsISupports *aOuter, REFNSIID aIID, void **aResult)
 {
     nsresult rv;
     NS_ASSERTION(aOuter == nsnull, "no aggregation");
     nsIAccessibilityService* accessibility;
     rv = NS_GetAccessibilityService(&accessibility);
     if (NS_FAILED(rv)) {
         NS_ERROR("Unable to construct accessibility service");
         return rv;
     }
     rv = accessibility->QueryInterface(aIID, aResult);
     NS_ASSERTION(NS_SUCCEEDED(rv), "unable to find correct interface");
     NS_RELEASE(accessibility);
     return rv;
 }
 
-// The list of components we register
-static const nsModuleComponentInfo components[] = 
-{
-    { "AccessibilityService", 
-      NS_ACCESSIBILITY_SERVICE_CID,
-      "@mozilla.org/accessibilityService;1", 
-      NS_ConstructAccessibilityService
-    },
-    { "AccessibleRetrieval", 
-      NS_ACCESSIBLE_RETRIEVAL_CID,
-      "@mozilla.org/accessibleRetrieval;1", 
-      NS_ConstructAccessibilityService
-    },
+NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_ACCESSIBLE_RETRIEVAL_CID);
+
+static const mozilla::Module::CIDEntry kA11yCIDs[] = {
+    { &kNS_ACCESSIBILITY_SERVICE_CID, false, NULL, NS_ConstructAccessibilityService },
+    { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsAccessibilityModule, components)
+static const mozilla::Module::ContractIDEntry kA11yContracts[] = {
+    { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID },
+    { "@mozilla.org/accessibleRetrieval;1", &kNS_ACCESSIBILITY_SERVICE_CID },
+    { NULL }
+};
+
+static const mozilla::Module kA11yModule = {
+    mozilla::Module::kVersion,
+    kA11yCIDs,
+    kA11yContracts
+};
+
+NSMODULE_DEFN(nsAccessibilityModule) = &kA11yModule;
 
 
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -172,17 +172,17 @@ AboutRedirector::GetURIFlags(nsIURI *aUR
       *result = kRedirMap[i].flags;
       return NS_OK;
     }
   }
 
   return NS_ERROR_ILLEGAL_VALUE;
 }
 
-NS_METHOD
+nsresult
 AboutRedirector::Create(nsISupports *aOuter, REFNSIID aIID, void **result)
 {
   AboutRedirector* about = new AboutRedirector();
   if (about == nsnull)
     return NS_ERROR_OUT_OF_MEMORY;
   NS_ADDREF(about);
   nsresult rv = about->QueryInterface(aIID, result);
   NS_RELEASE(about);
--- a/browser/components/about/AboutRedirector.h
+++ b/browser/components/about/AboutRedirector.h
@@ -49,17 +49,17 @@ class AboutRedirector : public nsIAboutM
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIABOUTMODULE
  
   AboutRedirector() {}
   virtual ~AboutRedirector() {}
 
-  static NS_METHOD
+  static nsresult
     Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
 
 protected:
 };
 
 } // namespace browser
 } // namespace mozilla
 
--- a/browser/components/build/nsModule.cpp
+++ b/browser/components/build/nsModule.cpp
@@ -31,17 +31,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 
 #include "nsBrowserCompsCID.h"
 #include "DirectoryProvider.h"
 
 #if defined(XP_WIN)
 #include "nsWindowsShellService.h"
 #elif defined(XP_MACOSX)
 #include "nsMacShellService.h"
@@ -115,157 +115,130 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsICabPro
 #endif
 
 #endif
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFeedSniffer)
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrivateBrowsingServiceWrapper, Init)
 
-/////////////////////////////////////////////////////////////////////////////
-
-static const nsModuleComponentInfo components[] =
-{
-  { "Browser Directory Provider",
-    NS_BROWSERDIRECTORYPROVIDER_CID,
-    NS_BROWSERDIRECTORYPROVIDER_CONTRACTID,
-    DirectoryProviderConstructor,
-    DirectoryProvider::Register,
-    DirectoryProvider::Unregister
-  },
-
+NS_DEFINE_NAMED_CID(NS_BROWSERDIRECTORYPROVIDER_CID);
 #if defined(XP_WIN)
-  { "Browser Shell Service",
-    NS_SHELLSERVICE_CID,
-    NS_SHELLSERVICE_CONTRACTID,
-    nsWindowsShellServiceConstructor},
-
+NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
 #elif defined(MOZ_WIDGET_GTK2)
-  { "Browser Shell Service",
-    NS_SHELLSERVICE_CID,
-    NS_SHELLSERVICE_CONTRACTID,
-    nsGNOMEShellServiceConstructor },
-
+NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
 #endif
-
-  { "Feed Sniffer",
-    NS_FEEDSNIFFER_CID,
-    NS_FEEDSNIFFER_CONTRACTID,
-    nsFeedSnifferConstructor,
-    nsFeedSniffer::Register },
-
-#ifdef MOZ_SAFE_BROWSING
-  { "about:blocked",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "blocked",
-    AboutRedirector::Create },
+NS_DEFINE_NAMED_CID(NS_FEEDSNIFFER_CID);
+NS_DEFINE_NAMED_CID(NS_BROWSER_ABOUT_REDIRECTOR_CID);
+#ifndef WINCE
+NS_DEFINE_NAMED_CID(NS_FIREFOX_PROFILEMIGRATOR_CID);
+#if defined(XP_WIN) && !defined(__MINGW32__)
+NS_DEFINE_NAMED_CID(NS_WINIEPROFILEMIGRATOR_CID);
+#elif defined(XP_MACOSX)
+NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_SAFARIPROFILEMIGRATOR_CID);
+NS_DEFINE_NAMED_CID(NS_MACIEPROFILEMIGRATOR_CID);
+NS_DEFINE_NAMED_CID(NS_OMNIWEBPROFILEMIGRATOR_CID);
+NS_DEFINE_NAMED_CID(NS_CAMINOPROFILEMIGRATOR_CID);
+NS_DEFINE_NAMED_CID(NS_ICABPROFILEMIGRATOR_CID);
 #endif
-
-  { "about:certerror",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "certerror",
-    AboutRedirector::Create },
-
-  { "about:feeds",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "feeds",
-    AboutRedirector::Create },
-
-  { "about:privatebrowsing",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "privatebrowsing",
-    AboutRedirector::Create },
-
-  { "about:rights",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "rights",
-    AboutRedirector::Create },
-
-  { "about:robots",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "robots",
-    AboutRedirector::Create },
-
-  { "about:sessionrestore",
-    NS_BROWSER_ABOUT_REDIRECTOR_CID,
-    NS_ABOUT_MODULE_CONTRACTID_PREFIX "sessionrestore",
-    AboutRedirector::Create },
-
-#ifndef WINCE
+#if !defined(XP_OS2)
+NS_DEFINE_NAMED_CID(NS_OPERAPROFILEMIGRATOR_CID);
+#endif
+#if !defined(XP_BEOS)
+NS_DEFINE_NAMED_CID(NS_DOGBERTPROFILEMIGRATOR_CID);
+#endif
+NS_DEFINE_NAMED_CID(NS_PHOENIXPROFILEMIGRATOR_CID);
+NS_DEFINE_NAMED_CID(NS_SEAMONKEYPROFILEMIGRATOR_CID);
+#endif /* WINCE */
+NS_DEFINE_NAMED_CID(NS_PRIVATE_BROWSING_SERVICE_WRAPPER_CID);
 
-  { "Profile Migrator",
-    NS_FIREFOX_PROFILEMIGRATOR_CID,
-    NS_PROFILEMIGRATOR_CONTRACTID,
-    nsProfileMigratorConstructor },
-
+static const mozilla::Module::CIDEntry kBrowserCIDs[] = {
+    { &kNS_BROWSERDIRECTORYPROVIDER_CID, false, NULL, DirectoryProviderConstructor },
+#if defined(XP_WIN)
+    { &kNS_SHELLSERVICE_CID, false, NULL, nsWindowsShellServiceConstructor },
+#elif defined(MOZ_WIDGET_GTK2)
+    { &kNS_SHELLSERVICE_CID, false, NULL, nsGNOMEShellServiceConstructor },
+#endif
+    { &kNS_FEEDSNIFFER_CID, false, NULL, nsFeedSnifferConstructor },
+    { &kNS_BROWSER_ABOUT_REDIRECTOR_CID, false, NULL, AboutRedirector::Create },
+#ifndef WINCE
+    { &kNS_FIREFOX_PROFILEMIGRATOR_CID, false, NULL, nsProfileMigratorConstructor },
 #if defined(XP_WIN) && !defined(__MINGW32__)
-  { "Internet Explorer (Windows) Profile Migrator",
-    NS_WINIEPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "ie",
-    nsIEProfileMigratorConstructor },
-
+    { &kNS_WINIEPROFILEMIGRATOR_CID, false, NULL, nsIEProfileMigratorConstructor },
 #elif defined(XP_MACOSX)
-  { "Browser Shell Service",
-    NS_SHELLSERVICE_CID,
-    NS_SHELLSERVICE_CONTRACTID,
-    nsMacShellServiceConstructor },
-
-  { "Safari Profile Migrator",
-    NS_SAFARIPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "safari",
-    nsSafariProfileMigratorConstructor },
-
-  { "Internet Explorer (Macintosh) Profile Migrator",
-    NS_MACIEPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "macie",
-    nsMacIEProfileMigratorConstructor },
-
-  { "OmniWeb Profile Migrator",
-    NS_OMNIWEBPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "omniweb",
-    nsOmniWebProfileMigratorConstructor },
-
-  { "Camino Profile Migrator",
-    NS_CAMINOPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "camino",
-    nsCaminoProfileMigratorConstructor },
-
-  { "iCab Profile Migrator",
-    NS_ICABPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "icab",
-    nsICabProfileMigratorConstructor },
-
+    { &kNS_SHELLSERVICE_CID, false, NULL, nsMacShellServiceConstructor },
+    { &kNS_SAFARIPROFILEMIGRATOR_CID, false, NULL, nsSafariProfileMigratorConstructor },
+    { &kNS_MACIEPROFILEMIGRATOR_CID, false, NULL, nsMacIEProfileMigratorConstructor },
+    { &kNS_OMNIWEBPROFILEMIGRATOR_CID, false, NULL, nsOmniWebProfileMigratorConstructor },
+    { &kNS_CAMINOPROFILEMIGRATOR_CID, false, NULL, nsCaminoProfileMigratorConstructor },
+    { &kNS_ICABPROFILEMIGRATOR_CID, false, NULL, nsICabProfileMigratorConstructor },
 #endif
-
 #if !defined(XP_OS2)
-  { "Opera Profile Migrator",
-    NS_OPERAPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "opera",
-    nsOperaProfileMigratorConstructor },
+    { &kNS_OPERAPROFILEMIGRATOR_CID, false, NULL, nsOperaProfileMigratorConstructor },
 #endif
-
 #if !defined(XP_BEOS)
-  { "Netscape 4.x Profile Migrator",
-    NS_DOGBERTPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "dogbert",
-    nsDogbertProfileMigratorConstructor },
+    { &kNS_DOGBERTPROFILEMIGRATOR_CID, false, NULL, nsDogbertProfileMigratorConstructor },
 #endif
-
-  { "Phoenix Profile Migrator",
-    NS_PHOENIXPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "phoenix",
-    nsPhoenixProfileMigratorConstructor },
-
-  { "Seamonkey Profile Migrator",
-    NS_SEAMONKEYPROFILEMIGRATOR_CID,
-    NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "seamonkey",
-    nsSeamonkeyProfileMigratorConstructor },
-
+    { &kNS_PHOENIXPROFILEMIGRATOR_CID, false, NULL, nsPhoenixProfileMigratorConstructor },
+    { &kNS_SEAMONKEYPROFILEMIGRATOR_CID, false, NULL, nsSeamonkeyProfileMigratorConstructor },
 #endif /* WINCE */
-
-  { "PrivateBrowsing Service C++ Wrapper",
-    NS_PRIVATE_BROWSING_SERVICE_WRAPPER_CID,
-    NS_PRIVATE_BROWSING_SERVICE_CONTRACTID,
-    nsPrivateBrowsingServiceWrapperConstructor }
+    { &kNS_PRIVATE_BROWSING_SERVICE_WRAPPER_CID, false, NULL, nsPrivateBrowsingServiceWrapperConstructor },
+    { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsBrowserCompsModule, components)
+static const mozilla::Module::ContractIDEntry kBrowserContracts[] = {
+    { NS_BROWSERDIRECTORYPROVIDER_CONTRACTID, &kNS_BROWSERDIRECTORYPROVIDER_CID },
+#if defined(XP_WIN)
+    { NS_SHELLSERVICE_CONTRACTID, &kNS_SHELLSERVICE_CID },
+#elif defined(MOZ_WIDGET_GTK2)
+    { NS_SHELLSERVICE_CONTRACTID, &kNS_SHELLSERVICE_CID },
+#endif
+    { NS_FEEDSNIFFER_CONTRACTID, &kNS_FEEDSNIFFER_CID },
+#ifdef MOZ_SAFE_BROWSING
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "blocked", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+#endif
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "certerror", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "feeds", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "privatebrowsing", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "rights", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "robots", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "sessionrestore", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
+#ifndef WINCE
+    { NS_PROFILEMIGRATOR_CONTRACTID, &kNS_FIREFOX_PROFILEMIGRATOR_CID },
+#if defined(XP_WIN) && !defined(__MINGW32__)
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "ie", &kNS_WINIEPROFILEMIGRATOR_CID },
+#elif defined(XP_MACOSX)
+    { NS_SHELLSERVICE_CONTRACTID, &kNS_SHELLSERVICE_CID },
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "safari", &kNS_SAFARIPROFILEMIGRATOR_CID },
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "macie", &kNS_MACIEPROFILEMIGRATOR_CID },
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "omniweb", &kNS_OMNIWEBPROFILEMIGRATOR_CID },
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "camino", &kNS_CAMINOPROFILEMIGRATOR_CID },
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "icab", &kNS_ICABPROFILEMIGRATOR_CID },
+#endif
+#if !defined(XP_OS2)
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "opera", &kNS_OPERAPROFILEMIGRATOR_CID },
+#endif
+#if !defined(XP_BEOS)
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "dogbert", &kNS_DOGBERTPROFILEMIGRATOR_CID },
+#endif
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "phoenix", &kNS_PHOENIXPROFILEMIGRATOR_CID },
+    { NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX "seamonkey", &kNS_SEAMONKEYPROFILEMIGRATOR_CID },
+#endif /* WINCE */
+    { NS_PRIVATE_BROWSING_SERVICE_CONTRACTID, &kNS_PRIVATE_BROWSING_SERVICE_WRAPPER_CID },
+    { NULL }
+};
 
+static const mozilla::Module::CategoryEntry kBrowserCategories[] = {
+    { XPCOM_DIRECTORY_PROVIDER_CATEGORY, "browser-directory-provider", NS_BROWSERDIRECTORYPROVIDER_CONTRACTID },
+    { NS_CONTENT_SNIFFER_CATEGORY, "Feed Sniffer", NS_FEEDSNIFFER_CONTRACTID },
+    { NULL }
+};
+
+static const mozilla::Module kBrowserModule = {
+    mozilla::Module::kVersion,
+    kBrowserCIDs,
+    kBrowserContracts,
+    kBrowserCategories
+};
+
+NSMODULE_DEFN(nsBrowserCompsModule) = &kBrowserModule;
+
--- a/browser/components/dirprovider/DirectoryProvider.cpp
+++ b/browser/components/dirprovider/DirectoryProvider.cpp
@@ -47,17 +47,17 @@
 #include "nsEnumeratorUtils.h"
 #include "nsBrowserDirectoryServiceDefs.h"
 #include "nsAppDirectoryServiceDefs.h"
 #include "nsDirectoryServiceDefs.h"
 #include "nsCategoryManagerUtils.h"
 #include "nsComponentManagerUtils.h"
 #include "nsCOMArray.h"
 #include "nsDirectoryServiceUtils.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsServiceManagerUtils.h"
 #include "nsStringAPI.h"
 #include "nsXULAppAPI.h"
 
 namespace mozilla {
 namespace browser {
 
 NS_IMPL_ISUPPORTS2(DirectoryProvider,
@@ -271,53 +271,16 @@ DirectoryProvider::GetFiles(const char *
       return NS_ERROR_OUT_OF_MEMORY;
 
     return NS_NewUnionEnumerator(aResult, extEnum, baseEnum);
   }
 
   return NS_ERROR_FAILURE;
 }
 
-NS_METHOD
-DirectoryProvider::Register(nsIComponentManager* aCompMgr, nsIFile* aPath,
-                            const char *aLoaderStr, const char *aType,
-                            const nsModuleComponentInfo *aInfo)
-{
-  nsresult rv;
-
-  nsCOMPtr<nsICategoryManager> catMan
-    (do_GetService(NS_CATEGORYMANAGER_CONTRACTID));
-  if (!catMan)
-    return NS_ERROR_FAILURE;
-
-  rv = catMan->AddCategoryEntry(XPCOM_DIRECTORY_PROVIDER_CATEGORY,
-                                "browser-directory-provider",
-                                NS_BROWSERDIRECTORYPROVIDER_CONTRACTID,
-                                PR_TRUE, PR_TRUE, nsnull);
-  return rv;
-}
-
-
-NS_METHOD
-DirectoryProvider::Unregister(nsIComponentManager* aCompMgr, 
-                              nsIFile* aPath, const char *aLoaderStr,
-                              const nsModuleComponentInfo *aInfo)
-{
-  nsresult rv;
-
-  nsCOMPtr<nsICategoryManager> catMan
-    (do_GetService(NS_CATEGORYMANAGER_CONTRACTID));
-  if (!catMan)
-    return NS_ERROR_FAILURE;
-
-  rv = catMan->DeleteCategoryEntry(XPCOM_DIRECTORY_PROVIDER_CATEGORY,
-                                   "browser-directory-provider", PR_TRUE);
-  return rv;
-}
-
 NS_IMPL_ISUPPORTS1(DirectoryProvider::AppendingEnumerator, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 DirectoryProvider::AppendingEnumerator::HasMoreElements(PRBool *aResult)
 {
   *aResult = mNext ? PR_TRUE : PR_FALSE;
   return NS_OK;
 }
--- a/browser/components/dirprovider/DirectoryProvider.h
+++ b/browser/components/dirprovider/DirectoryProvider.h
@@ -37,40 +37,30 @@
 
 #ifndef DirectoryProvider_h__
 #define DirectoryProvider_h__
 
 #include "nsIDirectoryService.h"
 #include "nsComponentManagerUtils.h"
 #include "nsISimpleEnumerator.h"
 #include "nsIFile.h"
-#include "nsIGenericFactory.h"
 
 #define NS_BROWSERDIRECTORYPROVIDER_CONTRACTID \
   "@mozilla.org/browser/directory-provider;1"
 
 namespace mozilla {
 namespace browser {
 
 class DirectoryProvider : public nsIDirectoryServiceProvider2
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDIRECTORYSERVICEPROVIDER
   NS_DECL_NSIDIRECTORYSERVICEPROVIDER2
 
-  static NS_METHOD Register(nsIComponentManager* aCompMgr,
-                            nsIFile* aPath, const char *aLoaderStr,
-                            const char *aType,
-                            const nsModuleComponentInfo *aInfo);
-
-  static NS_METHOD Unregister(nsIComponentManager* aCompMgr,
-                              nsIFile* aPath, const char *aLoaderStr,
-                              const nsModuleComponentInfo *aInfo);
-
 private:
   class AppendingEnumerator : public nsISimpleEnumerator
   {
   public:
     NS_DECL_ISUPPORTS
     NS_DECL_NSISIMPLEENUMERATOR
 
     AppendingEnumerator(nsISimpleEnumerator* aBase,
--- a/browser/components/feeds/src/nsFeedSniffer.cpp
+++ b/browser/components/feeds/src/nsFeedSniffer.cpp
@@ -418,24 +418,8 @@ nsFeedSniffer::OnDataAvailable(nsIReques
 }
 
 NS_IMETHODIMP
 nsFeedSniffer::OnStopRequest(nsIRequest* request, nsISupports* context, 
                              nsresult status)
 {
   return NS_OK; 
 }
-
-NS_METHOD
-nsFeedSniffer::Register(nsIComponentManager *compMgr, nsIFile *path, 
-                        const char *registryLocation,
-                        const char *componentType, 
-                        const nsModuleComponentInfo *info)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> catman = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-  if (NS_FAILED(rv)) 
-    return rv;
-
-  return catman->AddCategoryEntry(NS_CONTENT_SNIFFER_CATEGORY, "Feed Sniffer", 
-                                  NS_FEEDSNIFFER_CONTRACTID, PR_TRUE, PR_TRUE, 
-                                  nsnull);
-}
--- a/browser/components/feeds/src/nsFeedSniffer.h
+++ b/browser/components/feeds/src/nsFeedSniffer.h
@@ -31,17 +31,16 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 
-#include "nsIGenericFactory.h"
 #include "nsIContentSniffer.h"
 #include "nsIStreamListener.h"
 #include "nsStringAPI.h"
 
 class nsFeedSniffer : public nsIContentSniffer, nsIStreamListener
 {
 public:
   NS_DECL_ISUPPORTS
@@ -51,21 +50,16 @@ public:
 
   static NS_METHOD AppendSegmentToString(nsIInputStream* inputStream,
                                          void* closure,
                                          const char* rawSegment,
                                          PRUint32 toOffset,
                                          PRUint32 count,
                                          PRUint32* writeCount);
 
-  static NS_METHOD Register(nsIComponentManager* compMgr, nsIFile* path, 
-                            const char* registryLocation,
-                            const char* componentType, 
-                            const nsModuleComponentInfo *info);
-
 protected:
   nsresult ConvertEncodedData(nsIRequest* request, const PRUint8* data,
                               PRUint32 length);
 
 private:
   nsCString mDecodedData;
 };
 
--- a/caps/src/nsNullPrincipal.cpp
+++ b/caps/src/nsNullPrincipal.cpp
@@ -48,16 +48,17 @@
 #include "nsIUUIDGenerator.h"
 #include "nsID.h"
 #include "nsNetUtil.h"
 #include "nsIClassInfoImpl.h"
 #include "nsNetCID.h"
 #include "nsDOMError.h"
 #include "nsScriptSecurityManager.h"
 
+NS_IMPL_CLASSINFO(nsNullPrincipal, NULL, nsIClassInfo::MAIN_THREAD_ONLY)
 NS_IMPL_QUERY_INTERFACE2_CI(nsNullPrincipal,
                             nsIPrincipal,
                             nsISerializable)
 NS_IMPL_CI_INTERFACE_GETTER2(nsNullPrincipal,
                              nsIPrincipal,
                              nsISerializable)
 
 NS_IMETHODIMP_(nsrefcnt) 
--- a/caps/src/nsPrincipal.cpp
+++ b/caps/src/nsPrincipal.cpp
@@ -135,16 +135,17 @@ static PRBool URIIsImmutable(nsIURI* aUR
     !isMutable;                               
 }
 
 // Static member variables
 PRInt32 nsPrincipal::sCapabilitiesOrdinal = 0;
 const char nsPrincipal::sInvalid[] = "Invalid";
 
 
+NS_IMPL_CLASSINFO(nsPrincipal, NULL, nsIClassInfo::MAIN_THREAD_ONLY)
 NS_IMPL_QUERY_INTERFACE2_CI(nsPrincipal,
                             nsIPrincipal,
                             nsISerializable)
 NS_IMPL_CI_INTERFACE_GETTER2(nsPrincipal,
                              nsIPrincipal,
                              nsISerializable)
 
 NS_IMETHODIMP_(nsrefcnt)
--- a/caps/src/nsSecurityManagerFactory.cpp
+++ b/caps/src/nsSecurityManagerFactory.cpp
@@ -32,18 +32,16 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 /*Factory for internal browser security resource managers*/
 
 #include "nsCOMPtr.h"
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsScriptSecurityManager.h"
 #include "nsIPrincipal.h"
 #include "nsPrincipal.h"
 #include "nsSystemPrincipal.h"
 #include "nsNullPrincipal.h"
 #include "nsIScriptNameSpaceManager.h"
 #include "nsIScriptContext.h"
--- a/caps/src/nsSystemPrincipal.cpp
+++ b/caps/src/nsSystemPrincipal.cpp
@@ -44,17 +44,18 @@
 #include "nsIURL.h"
 #include "nsCOMPtr.h"
 #include "nsXPIDLString.h"
 #include "nsReadableUtils.h"
 #include "nsCRT.h"
 #include "nsString.h"
 #include "nsIClassInfoImpl.h"
 
-
+NS_IMPL_CLASSINFO(nsSystemPrincipal, NULL,
+                  nsIClassInfo::SINGLETON | nsIClassInfo::MAIN_THREAD_ONLY)
 NS_IMPL_QUERY_INTERFACE2_CI(nsSystemPrincipal,
                             nsIPrincipal,
                             nsISerializable)
 NS_IMPL_CI_INTERFACE_GETTER2(nsSystemPrincipal,
                              nsIPrincipal,
                              nsISerializable)
 
 NS_IMETHODIMP_(nsrefcnt) 
--- a/chrome/src/nsChromeFactory.cpp
+++ b/chrome/src/nsChromeFactory.cpp
@@ -31,39 +31,43 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsCOMPtr.h"
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 
 #include "nsIServiceManager.h"
 #include "nsIComponentManager.h"
 #include "nsIChromeRegistry.h"
 #include "nscore.h"
 #include "nsChromeProtocolHandler.h"
 #include "nsChromeRegistry.h"
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsChromeRegistry, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsChromeProtocolHandler)
 
-// The list of components we register
-static const nsModuleComponentInfo components[] = 
-{
-    { "Chrome Registry", 
-      NS_CHROMEREGISTRY_CID,
-      NS_CHROMEREGISTRY_CONTRACTID, 
-      nsChromeRegistryConstructor
-    },
+NS_DEFINE_NAMED_CID(NS_CHROMEREGISTRY_CID);
+NS_DEFINE_NAMED_CID(NS_CHROMEPROTOCOLHANDLER_CID);
 
-    { "Chrome Protocol Handler", 
-      NS_CHROMEPROTOCOLHANDLER_CID,
-      NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "chrome", 
-      nsChromeProtocolHandlerConstructor
-    }
+static const mozilla::Module::CIDEntry kChromeCIDs[] = {
+    { &kNS_CHROMEREGISTRY_CID, false, NULL, nsChromeRegistryConstructor },
+    { &kNS_CHROMEPROTOCOLHANDLER_CID, false, NULL, nsChromeProtocolHandlerConstructor },
+    { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsChromeModule, components)
+static const mozilla::Module::ContractIDEntry kChromeContracts[] = {
+    { NS_CHROMEREGISTRY_CONTRACTID, &kNS_CHROMEREGISTRY_CID },
+    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "chrome", &kNS_CHROMEPROTOCOLHANDLER_CID },
+    { NULL }
+};
 
+static const mozilla::Module kChromeModule = {
+    mozilla::Module::kVersion,
+    kChromeCIDs,
+    kChromeContracts
+};
+
+NSMODULE_DEFN(nsChromeModule) = &kChromeModule;
+
--- a/content/xul/document/public/nsIXULPrototypeCache.h
+++ b/content/xul/document/public/nsIXULPrototypeCache.h
@@ -67,17 +67,17 @@ public:
     /**
      * Stop the FastLoad process abruptly, removing the FastLoad file.
      */
     virtual void AbortFastLoads() = 0;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsIXULPrototypeCache, NS_IXULPROTOTYPECACHE_IID)
 
-NS_IMETHODIMP
+nsresult
 NS_NewXULPrototypeCache(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 
 
 const char XUL_FASTLOAD_FILE_BASENAME[] = "XUL";
 
 // Increase the subtractor when changing version, say when changing the
 // (opaque to XPCOM FastLoad code) format of XUL-specific XDR serializations.
 // See also JSXDR_BYTECODE_VERSION in jsxdrapi.h, which tracks incompatible JS
--- a/content/xul/document/src/nsXULControllers.cpp
+++ b/content/xul/document/src/nsXULControllers.cpp
@@ -74,17 +74,17 @@ nsXULControllers::DeleteControllers()
     if (controllerData)
       delete controllerData;    // releases the nsIController
   }
   
   mControllers.Clear();
 }
 
 
-NS_IMETHODIMP
+nsresult
 NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult)
 {
   NS_PRECONDITION(aOuter == nsnull, "no aggregation");
   if (aOuter)
     return NS_ERROR_NO_AGGREGATION;
 
   nsXULControllers* controllers = new nsXULControllers();
   if (! controllers)
--- a/content/xul/document/src/nsXULControllers.h
+++ b/content/xul/document/src/nsXULControllers.h
@@ -72,23 +72,23 @@ public:
                               return NS_OK;
                             }
     
     PRUint32                mControllerID;
     nsCOMPtr<nsIController> mController;
 };
 
 
-NS_IMETHODIMP NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult);
+nsresult NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 
 class nsXULControllers : public nsIControllers,
                          public nsISecurityCheckedComponent
 {
 public:
-    friend NS_IMETHODIMP
+    friend nsresult
     NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXULControllers, nsIControllers)
     NS_DECL_NSICONTROLLERS
     NS_DECL_NSISECURITYCHECKEDCOMPONENT
   
 protected:
--- a/content/xul/document/src/nsXULPrototypeCache.cpp
+++ b/content/xul/document/src/nsXULPrototypeCache.cpp
@@ -107,17 +107,17 @@ nsXULPrototypeCache::~nsXULPrototypeCach
 }
 
 
 NS_IMPL_THREADSAFE_ISUPPORTS2(nsXULPrototypeCache,
                               nsIXULPrototypeCache,
                               nsIObserver)
 
 
-NS_IMETHODIMP
+nsresult
 NS_NewXULPrototypeCache(nsISupports* aOuter, REFNSIID aIID, void** aResult)
 {
     NS_PRECONDITION(! aOuter, "no aggregation");
     if (aOuter)
         return NS_ERROR_NO_AGGREGATION;
 
     nsRefPtr<nsXULPrototypeCache> result = new nsXULPrototypeCache();
     if (! result)
--- a/content/xul/document/src/nsXULPrototypeCache.h
+++ b/content/xul/document/src/nsXULPrototypeCache.h
@@ -140,17 +140,17 @@ public:
     static nsIFastLoadService* GetFastLoadService();
 
     static void ReleaseGlobals()
     {
         NS_IF_RELEASE(sInstance);
     }
 
 protected:
-    friend NS_IMETHODIMP
+    friend nsresult
     NS_NewXULPrototypeCache(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 
     nsXULPrototypeCache();
     virtual ~nsXULPrototypeCache();
 
     static nsXULPrototypeCache* sInstance;
 
     void FlushScripts();
--- a/content/xul/templates/src/nsXULContentBuilder.cpp
+++ b/content/xul/templates/src/nsXULContentBuilder.cpp
@@ -112,17 +112,17 @@ public:
     NS_IMETHOD GetResultForContent(nsIDOMElement* aContent,
                                    nsIXULTemplateResult** aResult);
 
     // nsIMutationObserver interface
     NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
     NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED
 
 protected:
-    friend NS_IMETHODIMP
+    friend nsresult
     NS_NewXULContentBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 
     nsXULContentBuilder();
 
     void Traverse(nsCycleCollectionTraversalCallback &cb) const
     {
         mSortState.Traverse(cb);
     }
@@ -365,17 +365,17 @@ protected:
     nsTemplateMap mTemplateMap;
 
     /**
      * Information about the currently active sort
      */
     nsSortState mSortState;
 };
 
-NS_IMETHODIMP
+nsresult
 NS_NewXULContentBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult)
 {
     NS_PRECONDITION(aOuter == nsnull, "no aggregation");
     if (aOuter)
         return NS_ERROR_NO_AGGREGATION;
 
     nsresult rv;
     nsXULContentBuilder* result = new nsXULContentBuilder();
--- a/content/xul/templates/src/nsXULTreeBuilder.cpp
+++ b/content/xul/templates/src/nsXULTreeBuilder.cpp
@@ -85,17 +85,17 @@ public:
     // nsITreeView
     NS_DECL_NSITREEVIEW
     // nsINativeTreeView: Untrusted code can use us
     NS_IMETHOD EnsureNative() { return NS_OK; }
 
     virtual void NodeWillBeDestroyed(const nsINode* aNode);
 
 protected:
-    friend NS_IMETHODIMP
+    friend nsresult
     NS_NewXULTreeBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 
     nsXULTreeBuilder();
 
     /**
      * Uninitialize the template builder
      */
     virtual void Uninit(PRBool aIsFinal);
@@ -265,17 +265,17 @@ protected:
     /** 
      * The builder observers.
      */
     nsCOMPtr<nsISupportsArray> mObservers;
 };
 
 //----------------------------------------------------------------------
 
-NS_IMETHODIMP
+nsresult
 NS_NewXULTreeBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult)
 {
     *aResult = nsnull;
 
     NS_PRECONDITION(aOuter == nsnull, "no aggregation");
     if (aOuter)
         return NS_ERROR_NO_AGGREGATION;
 
--- a/docshell/base/Makefile.in
+++ b/docshell/base/Makefile.in
@@ -89,18 +89,16 @@ EXPORTS_mozilla = \
 CPPSRCS		= \
 		nsDocShell.cpp		\
 		nsDocShellLoadInfo.cpp		\
 		nsDocShellEditorData.cpp	\
 		nsDocShellTransferableHooks.cpp \
 		nsDocShellEnumerator.cpp  \
 		nsDSURIContentListener.cpp		\
 		nsDefaultURIFixup.cpp		\
-		nsGlobalHistoryAdapter.cpp \
-		nsGlobalHistory2Adapter.cpp \
 		nsWebNavigationInfo.cpp \
 		nsAboutRedirector.cpp \
 		nsDownloadHistory.cpp \
 		$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a
 # static lib.
 FORCE_STATIC_LIB = 1
--- a/docshell/base/nsAboutRedirector.cpp
+++ b/docshell/base/nsAboutRedirector.cpp
@@ -169,17 +169,17 @@ nsAboutRedirector::GetURIFlags(nsIURI *a
             return NS_OK;
         }
     }
 
     NS_ERROR("nsAboutRedirector called for unknown case");
     return NS_ERROR_ILLEGAL_VALUE;
 }
 
-NS_METHOD
+nsresult
 nsAboutRedirector::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
 {
     nsAboutRedirector* about = new nsAboutRedirector();
     if (about == nsnull)
         return NS_ERROR_OUT_OF_MEMORY;
     NS_ADDREF(about);
     nsresult rv = about->QueryInterface(aIID, aResult);
     NS_RELEASE(about);
--- a/docshell/base/nsAboutRedirector.h
+++ b/docshell/base/nsAboutRedirector.h
@@ -46,17 +46,17 @@ class nsAboutRedirector : public nsIAbou
 public:
     NS_DECL_ISUPPORTS
 
     NS_DECL_NSIABOUTMODULE
 
     nsAboutRedirector() {}
     virtual ~nsAboutRedirector() {}
 
-    static NS_METHOD
+    static nsresult
     Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
 
 protected:
 };
 
 #define NS_ABOUT_REDIRECTOR_MODULE_CID               \
 { /*  f0acde16-1dd1-11b2-9e35-f5786fff5a66*/         \
     0xf0acde16,                                      \
--- a/docshell/base/nsDownloadHistory.cpp
+++ b/docshell/base/nsDownloadHistory.cpp
@@ -47,45 +47,16 @@
 #include "nsIComponentRegistrar.h"
 #include "nsDocShellCID.h"
 
 ////////////////////////////////////////////////////////////////////////////////
 //// nsDownloadHistory
 
 NS_IMPL_ISUPPORTS1(nsDownloadHistory, nsIDownloadHistory)
 
-nsresult
-nsDownloadHistory::RegisterSelf(nsIComponentManager *aCompMgr,
-                                nsIFile *aPath,
-                                const char *aLoaderStr,
-                                const char *aType,
-                                const nsModuleComponentInfo *aInfo)
-{
-  nsCOMPtr<nsIComponentRegistrar> compReg(do_QueryInterface(aCompMgr));
-  if (!compReg)
-    return NS_ERROR_UNEXPECTED;
-  
-  PRBool registered;
-  nsresult rv = compReg->IsContractIDRegistered(NS_DOWNLOADHISTORY_CONTRACTID,
-                                                &registered);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // If someone has already registered the contractID, we don't want to register
-  // it ourselves.  We do want to register though in case someone wants to access
-  // this implementation (by CID).
-  if (registered) {
-    return compReg->RegisterFactoryLocation(GetCID(), "nsDownloadHistory",
-                                            nsnull, aPath, aLoaderStr, aType);
-  }
-
-  return compReg->RegisterFactoryLocation(GetCID(), "nsDownloadHistory",
-                                          NS_DOWNLOADHISTORY_CONTRACTID,
-                                          aPath, aLoaderStr, aType);
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIDownloadHistory
 
 NS_IMETHODIMP
 nsDownloadHistory::AddDownload(nsIURI *aSource,
                                nsIURI *aReferrer,
                                PRTime aStartTime)
 {
--- a/docshell/base/nsDownloadHistory.h
+++ b/docshell/base/nsDownloadHistory.h
@@ -36,29 +36,22 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef __nsDownloadHistory_h__
 #define __nsDownloadHistory_h__
 
 #include "nsIDownloadHistory.h"
-#include "nsIGenericFactory.h"
 
 #define NS_DOWNLOADHISTORY_CID \
   {0x2ee83680, 0x2af0, 0x4bcb, {0xbf, 0xa0, 0xc9, 0x70, 0x5f, 0x65, 0x54, 0xf1}}
 
 class nsDownloadHistory : public nsIDownloadHistory
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDOWNLOADHISTORY
 
-  static NS_METHOD RegisterSelf(nsIComponentManager *aCompMgr,
-                                nsIFile *aPath,
-                                const char *aLoaderStr,
-                                const char *aType,
-                                const nsModuleComponentInfo *aInfo);
-
   NS_DEFINE_STATIC_CID_ACCESSOR(NS_DOWNLOADHISTORY_CID)
 };
 
 #endif // __nsDownloadHistory_h__
deleted file mode 100644
--- a/docshell/base/nsGlobalHistory2Adapter.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla gecko code.
- *
- * The Initial Developer of the Original Code is
- * Benjamin Smedberg <bsmedberg@covad.net>
- * Portions created by the Initial Developer are Copyright (C) 2004
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "nsGlobalHistory2Adapter.h"
-
-#include "nsDocShellCID.h"
-#include "nsServiceManagerUtils.h"
-#include "nsIComponentRegistrar.h"
-#include "nsGlobalHistoryAdapter.h"
-#include "nsIURI.h"
-#include "nsString.h"
-#include "nsNetUtil.h"
-
-// we should really have a nsIGenericFactory macro to make this a static
-// member function
-
-nsresult
-nsGlobalHistory2Adapter::Create(nsISupports *aOuter,
-                                REFNSIID aIID,
-                                void **aResult)
-{
-  nsresult rv;
-
-  if (aOuter) {
-    rv = NS_ERROR_NO_AGGREGATION;
-    return rv;
-  }
-
-  nsGlobalHistory2Adapter* adapter = new nsGlobalHistory2Adapter();
-  if (!adapter) {
-    rv = NS_ERROR_OUT_OF_MEMORY;
-    return rv;
-  }
-
-  NS_ADDREF(adapter);
-  rv = adapter->Init();
-  if (NS_SUCCEEDED(rv)) {
-    rv = adapter->QueryInterface(aIID, aResult);
-  }
-  NS_RELEASE(adapter);
-
-  return rv;
-}
-
-nsresult
-nsGlobalHistory2Adapter::RegisterSelf(nsIComponentManager* aCompMgr,
-                                      nsIFile* aPath,
-                                      const char* aLoaderStr,
-                                      const char* aType,
-                                      const nsModuleComponentInfo *aInfo)
-{
-  nsresult rv;
-  PRBool registered;
-  nsCOMPtr<nsIComponentRegistrar> compReg( do_QueryInterface(aCompMgr) );
-  if (!compReg) {
-    rv = NS_ERROR_UNEXPECTED;
-    return rv;
-  }
-
-  rv = compReg->IsContractIDRegistered(NS_GLOBALHISTORY_CONTRACTID, &registered);
-  if (NS_FAILED(rv)) return rv;
-
-  // If the embedder has already registered the contractID, we don't want to
-  // register ourself. Ideally the component manager would handle this for us.
-  if (registered) {
-    rv = NS_OK;
-    return rv;
-  }
-
-  return compReg->RegisterFactoryLocation(GetCID(),
-                                          "nsGlobalHistory2Adapter",
-                                          NS_GLOBALHISTORY_CONTRACTID,
-                                          aPath, aLoaderStr, aType);
-}                                     
-
-nsGlobalHistory2Adapter::nsGlobalHistory2Adapter()
-{ }
-
-nsGlobalHistory2Adapter::~nsGlobalHistory2Adapter()
-{ }
-
-nsresult
-nsGlobalHistory2Adapter::Init()
-{
-  nsresult rv;
-
-  nsCOMPtr<nsIComponentRegistrar> compReg;
-  rv = NS_GetComponentRegistrar(getter_AddRefs(compReg));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  nsCID *cid;
-  rv = compReg->ContractIDToCID(NS_GLOBALHISTORY2_CONTRACTID, &cid);
-  if (NS_FAILED(rv)) {
-    rv = NS_ERROR_FACTORY_NOT_REGISTERED;
-    return rv;
-  }
-
-  if (cid->Equals(nsGlobalHistoryAdapter::GetCID())) {
-    rv = NS_ERROR_FACTORY_NOT_REGISTERED;
-    return rv;
-  }
-
-  NS_WARNING("Using nsIGlobalHistory->nsIGlobalHistory2 adapter.");
-  mHistory = do_GetService(NS_GLOBALHISTORY2_CONTRACTID, &rv);
-  return rv;
-}
-
-NS_IMPL_ISUPPORTS1(nsGlobalHistory2Adapter, nsIGlobalHistory)
-
-NS_IMETHODIMP
-nsGlobalHistory2Adapter::AddPage(const char* aURI)
-{
-  NS_ENSURE_ARG_POINTER(aURI);
-  NS_ENSURE_TRUE(*aURI, NS_ERROR_ILLEGAL_VALUE);
-
-  nsresult rv;
-
-  nsCOMPtr<nsIURI> uri;
-  rv = NS_NewURI(getter_AddRefs(uri), nsDependentCString(aURI));
-
-  if (NS_SUCCEEDED(rv)) {
-    rv = mHistory->AddURI(uri, PR_FALSE, PR_FALSE, nsnull);
-  }
-
-  return rv;
-}
-
-NS_IMETHODIMP
-nsGlobalHistory2Adapter::IsVisited(const char* aURI, PRBool* aRetval)
-{
-  NS_ENSURE_ARG_POINTER(aURI);
-  nsresult rv;
-
-  nsCOMPtr<nsIURI> uri;
-  rv = NS_NewURI(getter_AddRefs(uri), nsDependentCString(aURI));
-
-  if (NS_SUCCEEDED(rv)) {
-    rv = mHistory->IsVisited(uri, aRetval);
-  }
-
-  return rv;
-}
deleted file mode 100644
--- a/docshell/base/nsGlobalHistory2Adapter.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla gecko code.
- *
- * The Initial Developer of the Original Code is
- * Benjamin Smedberg <bsmedberg@covad.net>
- * Portions created by the Initial Developer are Copyright (C) 2004
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "nsIGlobalHistory2.h"
-#include "nsIGlobalHistory.h"
-#include "nsIGenericFactory.h"
-#include "nsCOMPtr.h"
-
-/**
- * A compatibility wrapper for the nsIGlobalHistory2 interface. It provides
- * the old nsIGlobalHistory interface for extensions which still use it.
- */
-
-// {a772eee4-0464-40d5-a329-a29dfda3791a}
-#define NS_GLOBALHISTORY2ADAPTER_CID \
- { 0xa772eee4, 0x0464, 0x405d, { 0xa3, 0x29, 0xa2, 0x9d, 0xfd, 0xa3, 0x79, 0x1a } }
-
-class nsGlobalHistory2Adapter : public nsIGlobalHistory
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIGLOBALHISTORY
-
-  static NS_METHOD Create(nsISupports *aOuter,
-                          REFNSIID aIID,
-                          void **aResult);
-
-  static NS_METHOD RegisterSelf(nsIComponentManager* aCompMgr,
-                                nsIFile* aPath,
-                                const char* aLoaderStr,
-                                const char* aType,
-                                const nsModuleComponentInfo *aInfo);
-
-  NS_DEFINE_STATIC_CID_ACCESSOR(NS_GLOBALHISTORY2ADAPTER_CID)
-
-private:
-  nsGlobalHistory2Adapter();
-  ~nsGlobalHistory2Adapter();
-
-  nsresult Init();
-  nsCOMPtr<nsIGlobalHistory2> mHistory;
-};
deleted file mode 100644
--- a/docshell/base/nsGlobalHistoryAdapter.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla gecko code.
- *
- * The Initial Developer of the Original Code is
- * Benjamin Smedberg <bsmedberg@covad.net>
- * Portions created by the Initial Developer are Copyright (C) 2004
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "nsGlobalHistoryAdapter.h"
-
-#include "nsDocShellCID.h"
-#include "nsServiceManagerUtils.h"
-#include "nsIComponentRegistrar.h"
-#include "nsGlobalHistory2Adapter.h"
-#include "nsIURI.h"
-#include "nsString.h"
-
-nsresult
-nsGlobalHistoryAdapter::Create(nsISupports *aOuter,
-                               REFNSIID aIID,
-                               void **aResult)
-{
-  nsresult rv;
-
-  if (aOuter) {
-    rv = NS_ERROR_NO_AGGREGATION;
-    return rv;
-  }
-
-  nsGlobalHistoryAdapter* adapter = new nsGlobalHistoryAdapter();
-  if (!adapter) {
-    rv = NS_ERROR_OUT_OF_MEMORY;
-    return rv;
-  }
-
-  NS_ADDREF(adapter);
-  rv = adapter->Init();
-  if (NS_SUCCEEDED(rv)) {
-    rv = adapter->QueryInterface(aIID, aResult);
-  }
-  NS_RELEASE(adapter);
-
-  return rv;
-}
-
-nsresult
-nsGlobalHistoryAdapter::RegisterSelf(nsIComponentManager* aCompMgr,
-                                     nsIFile* aPath,
-                                     const char* aLoaderStr,
-                                     const char* aType,
-                                     const nsModuleComponentInfo *aInfo)
-{
-  nsresult rv;
-  PRBool registered;
-  nsCOMPtr<nsIComponentRegistrar> compReg( do_QueryInterface(aCompMgr) );
-  if (!compReg) {
-    rv = NS_ERROR_UNEXPECTED;
-    return rv;
-  }
-
-  rv = compReg->IsContractIDRegistered(NS_GLOBALHISTORY2_CONTRACTID, &registered);
-  if (NS_FAILED(rv)) return rv;
-
-  // If the embedder has already registered the contractID, we don't want to
-  // register ourself. Ideally the component manager would handle this for us.
-  if (registered) {
-    rv = NS_OK;
-    return rv;
-  }
-
-  return compReg->RegisterFactoryLocation(GetCID(),
-                                          "nsGlobalHistoryAdapter",
-                                          NS_GLOBALHISTORY2_CONTRACTID,
-                                          aPath, aLoaderStr, aType);
-}                                     
-
-nsGlobalHistoryAdapter::nsGlobalHistoryAdapter()
-{ }
-
-nsGlobalHistoryAdapter::~nsGlobalHistoryAdapter()
-{ }
-
-nsresult
-nsGlobalHistoryAdapter::Init()
-{
-  nsresult rv;
-
-  nsCOMPtr<nsIComponentRegistrar> compReg;
-  rv = NS_GetComponentRegistrar(getter_AddRefs(compReg));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  nsCID *cid;
-  rv = compReg->ContractIDToCID(NS_GLOBALHISTORY_CONTRACTID, &cid);
-  if (NS_FAILED(rv)) {
-    rv = NS_ERROR_FACTORY_NOT_REGISTERED;
-    return rv;
-  }
-
-  if (cid->Equals(nsGlobalHistory2Adapter::GetCID())) {
-    rv = NS_ERROR_FACTORY_NOT_REGISTERED;
-    return rv;
-  }
-
-  NS_WARNING("Using nsIGlobalHistory2->nsIGlobalHistory adapter.");
-  mHistory = do_GetService(NS_GLOBALHISTORY_CONTRACTID, &rv);
-  return rv;
-}
-
-NS_IMPL_ISUPPORTS1(nsGlobalHistoryAdapter, nsIGlobalHistory2)
-
-NS_IMETHODIMP
-nsGlobalHistoryAdapter::AddURI(nsIURI* aURI, PRBool aRedirect,
-                               PRBool aToplevel, nsIURI* aReferrer)
-{
-  NS_ENSURE_ARG_POINTER(aURI);
-  nsresult rv;
-
-  // The model is really if we don't know differently then add which basically
-  // means we are supposed to try all the things we know not to allow in and
-  // then if we don't bail go on and allow it in.  But here lets compare
-  // against the most common case we know to allow in and go on and say yes
-  // to it.
-
-  PRBool isHTTP = PR_FALSE;
-  PRBool isHTTPS = PR_FALSE;
-
-  NS_ENSURE_SUCCESS(rv = aURI->SchemeIs("http", &isHTTP), rv);
-  NS_ENSURE_SUCCESS(rv = aURI->SchemeIs("https", &isHTTPS), rv);
-
-  if (!isHTTP && !isHTTPS) {
-    PRBool isAbout, isImap, isNews, isMailbox, isViewSource, isChrome, isData;
-
-    rv = aURI->SchemeIs("about", &isAbout);
-    rv |= aURI->SchemeIs("imap", &isImap);
-    rv |= aURI->SchemeIs("news", &isNews);
-    rv |= aURI->SchemeIs("mailbox", &isMailbox);
-    rv |= aURI->SchemeIs("view-source", &isViewSource);
-    rv |= aURI->SchemeIs("chrome", &isChrome);
-    rv |= aURI->SchemeIs("data", &isData);
-    NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
-
-    if (isAbout || isImap || isNews || isMailbox || isViewSource || isChrome || isData) {
-      return NS_OK;
-    }
-  }
-
-  nsCAutoString spec;
-  rv = aURI->GetSpec(spec);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  return mHistory->AddPage(spec.get());
-}
-
-NS_IMETHODIMP
-nsGlobalHistoryAdapter::IsVisited(nsIURI* aURI, PRBool* aRetval)
-{
-  NS_ENSURE_ARG_POINTER(aURI);
-
-  nsCAutoString spec;
-  nsresult rv = aURI->GetSpec(spec);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  return mHistory->IsVisited(spec.get(), aRetval);
-}
-
-NS_IMETHODIMP
-nsGlobalHistoryAdapter::SetPageTitle(nsIURI* aURI, const nsAString& aTitle)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
deleted file mode 100644
--- a/docshell/base/nsGlobalHistoryAdapter.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla gecko code.
- *
- * The Initial Developer of the Original Code is
- * Benjamin Smedberg <bsmedberg@covad.net>
- * Portions created by the Initial Developer are Copyright (C) 2004
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "nsIGlobalHistory2.h"
-#include "nsIGlobalHistory.h"
-#include "nsIGenericFactory.h"
-#include "nsCOMPtr.h"
-
-/**
- * A compatibility wrapper for the old nsIGlobalHistory interface. It provides
- * the new nsIGlobalHistory2 interface for embedders who haven't implemented it
- * themselves.
- */
-
-// {2e9b69dd-9087-438c-8b5d-f77b553abefb}
-#define NS_GLOBALHISTORYADAPTER_CID \
- { 0x2e9b69dd, 0x9087, 0x438c, { 0x8b, 0x5d, 0xf7, 0x7b, 0x55, 0x3a, 0xbe, 0xfb } }
-
-class nsGlobalHistoryAdapter : public nsIGlobalHistory2
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIGLOBALHISTORY2
-
-  static NS_METHOD Create(nsISupports *aOuter,
-                          REFNSIID aIID,
-                          void **aResult);
-
-  static NS_METHOD RegisterSelf(nsIComponentManager* aCompMgr,
-                                nsIFile* aPath,
-                                const char* aLoaderStr,
-                                const char* aType,
-                                const nsModuleComponentInfo *aInfo);
-
-  NS_DEFINE_STATIC_CID_ACCESSOR(NS_GLOBALHISTORYADAPTER_CID)
-
-private:
-  nsGlobalHistoryAdapter();
-  ~nsGlobalHistoryAdapter();
-
-  nsresult Init();
-  nsCOMPtr<nsIGlobalHistory> mHistory;
-};
--- a/docshell/build/nsDocShellModule.cpp
+++ b/docshell/build/nsDocShellModule.cpp
@@ -32,19 +32,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
-
+#include "mozilla/ModuleUtils.h"
 #include "nsDocShellCID.h"
 
 #include "nsDocShell.h"
 #include "nsDefaultURIFixup.h"
 #include "nsWebNavigationInfo.h"
 
 #include "nsAboutRedirector.h"
 
@@ -60,45 +58,40 @@
 #include "nsDBusHandlerApp.h"
 #endif 
 
 // session history
 #include "nsSHEntry.h"
 #include "nsSHistory.h"
 #include "nsSHTransaction.h"
 
-// global history
-#include "nsGlobalHistoryAdapter.h"
-#include "nsGlobalHistory2Adapter.h"
-
 // download history
 #include "nsDownloadHistory.h"
 
 static PRBool gInitialized = PR_FALSE;
 
 // The one time initialization for this module
-// static
 static nsresult
-Initialize(nsIModule* aSelf)
+Initialize()
 {
   NS_PRECONDITION(!gInitialized, "docshell module already initialized");
   if (gInitialized) {
     return NS_OK;
   }
   gInitialized = PR_TRUE;
 
   nsresult rv = nsSHistory::Startup();
   NS_ENSURE_SUCCESS(rv, rv);
 
   rv = nsSHEntry::Startup();
   return rv;
 }
 
 static void
-Shutdown(nsIModule* aSelf)
+Shutdown()
 {
   nsSHEntry::Shutdown();
   gInitialized = PR_FALSE;
 }
 
 // docshell
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocShell, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultURIFixup)
@@ -121,155 +114,108 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsDBusHan
 // session history
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHEntry)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHTransaction)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHistory)
 
 // download history
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloadHistory)
 
-static const nsModuleComponentInfo gDocShellModuleInfo[] = {
-  // docshell
-    { "DocShell", 
-      NS_DOCSHELL_CID,
-      "@mozilla.org/docshell;1",
-      nsDocShellConstructor
-    },
-    { "Default keyword fixup", 
-      NS_DEFAULTURIFIXUP_CID,
-      NS_URIFIXUP_CONTRACTID,
-      nsDefaultURIFixupConstructor
-    },
-    { "Webnavigation info service",
-      NS_WEBNAVIGATION_INFO_CID,
-      NS_WEBNAVIGATION_INFO_CONTRACTID,
-      nsWebNavigationInfoConstructor
-    },
-
-    // about redirector
-    { "about:about",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "about",
-      nsAboutRedirector::Create
-    },
-    { "about:config",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "config",
-      nsAboutRedirector::Create
-    },
-#ifdef MOZ_CRASHREPORTER
-    { "about:crashes",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "crashes",
-      nsAboutRedirector::Create
-    },
+NS_DEFINE_NAMED_CID(NS_DOCSHELL_CID);
+NS_DEFINE_NAMED_CID(NS_DEFAULTURIFIXUP_CID);
+NS_DEFINE_NAMED_CID(NS_WEBNAVIGATION_INFO_CID);
+NS_DEFINE_NAMED_CID(NS_ABOUT_REDIRECTOR_MODULE_CID);
+NS_DEFINE_NAMED_CID(NS_URI_LOADER_CID);
+NS_DEFINE_NAMED_CID(NS_DOCUMENTLOADER_SERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_EXTERNALHELPERAPPSERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_EXTERNALPROTOCOLHANDLER_CID);
+NS_DEFINE_NAMED_CID(NS_PREFETCHSERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATESERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATE_CID);
+NS_DEFINE_NAMED_CID(NS_LOCALHANDLERAPP_CID);
+#ifdef MOZ_ENABLE_DBUS
+NS_DEFINE_NAMED_CID(NS_DBUSHANDLERAPP_CID);
 #endif
-    { "about:credits",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "credits",
-      nsAboutRedirector::Create
-    },
-    { "about:plugins",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "plugins",
-      nsAboutRedirector::Create
-    },
-    { "about:mozilla",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "mozilla",
-      nsAboutRedirector::Create
-    },
-    { "about:logo",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "logo",
-      nsAboutRedirector::Create
-    },
-    { "about:buildconfig",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "buildconfig",
-      nsAboutRedirector::Create
-    },
-    { "about:license",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "license",
-      nsAboutRedirector::Create
-    },
-    { "about:licence",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "licence",
-      nsAboutRedirector::Create
-    },
-    { "about:neterror",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "neterror",
-      nsAboutRedirector::Create
-    },
-    { "about:memory",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "memory",
-      nsAboutRedirector::Create
-    },
-    { "about:addons",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "addons",
-      nsAboutRedirector::Create
-    },
-    { "about:support",
-      NS_ABOUT_REDIRECTOR_MODULE_CID,
-      NS_ABOUT_MODULE_CONTRACTID_PREFIX "support",
-      nsAboutRedirector::Create
-    },
+NS_DEFINE_NAMED_CID(NS_SHENTRY_CID);
+NS_DEFINE_NAMED_CID(NS_HISTORYENTRY_CID);
+NS_DEFINE_NAMED_CID(NS_SHTRANSACTION_CID);
+NS_DEFINE_NAMED_CID(NS_SHISTORY_CID);
+NS_DEFINE_NAMED_CID(NS_SHISTORY_INTERNAL_CID);
+NS_DEFINE_NAMED_CID(NS_DOWNLOADHISTORY_CID);
+
 
-    // uriloader
-  { "Netscape URI Loader Service", NS_URI_LOADER_CID, NS_URI_LOADER_CONTRACTID, nsURILoaderConstructor, },
-  { "Netscape Doc Loader Service", NS_DOCUMENTLOADER_SERVICE_CID, NS_DOCUMENTLOADER_SERVICE_CONTRACTID, 
-     nsDocLoaderConstructor, },
-  { "Netscape External Helper App Service", NS_EXTERNALHELPERAPPSERVICE_CID, NS_EXTERNALHELPERAPPSERVICE_CONTRACTID, 
-     nsOSHelperAppServiceConstructor, },
-  { "Netscape External Helper App Service", NS_EXTERNALHELPERAPPSERVICE_CID, NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, 
-     nsOSHelperAppServiceConstructor, },
-  { "Netscape Mime Mapping Service", NS_EXTERNALHELPERAPPSERVICE_CID, NS_MIMESERVICE_CONTRACTID, 
-     nsOSHelperAppServiceConstructor, },
-  { "Netscape Default Protocol Handler", NS_EXTERNALPROTOCOLHANDLER_CID, NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"default", 
-     nsExternalProtocolHandlerConstructor, },
-  {  NS_PREFETCHSERVICE_CLASSNAME, NS_PREFETCHSERVICE_CID, NS_PREFETCHSERVICE_CONTRACTID,
-     nsPrefetchServiceConstructor, },
-  { NS_OFFLINECACHEUPDATESERVICE_CLASSNAME, NS_OFFLINECACHEUPDATESERVICE_CID, NS_OFFLINECACHEUPDATESERVICE_CONTRACTID,
-    nsOfflineCacheUpdateServiceConstructor, },
-  { NS_OFFLINECACHEUPDATE_CLASSNAME, NS_OFFLINECACHEUPDATE_CID, NS_OFFLINECACHEUPDATE_CONTRACTID,
-    nsOfflineCacheUpdateConstructor, },
-  { "Local Application Handler App", NS_LOCALHANDLERAPP_CID, 
-    NS_LOCALHANDLERAPP_CONTRACTID, PlatformLocalHandlerApp_tConstructor, },
+const mozilla::Module::CIDEntry kDocShellCIDs[] = {
+  { &kNS_DOCSHELL_CID, false, NULL, nsDocShellConstructor },
+  { &kNS_DEFAULTURIFIXUP_CID, false, NULL, nsDefaultURIFixupConstructor },
+  { &kNS_WEBNAVIGATION_INFO_CID, false, NULL, nsWebNavigationInfoConstructor },
+  { &kNS_ABOUT_REDIRECTOR_MODULE_CID, false, NULL, nsAboutRedirector::Create },
+  { &kNS_URI_LOADER_CID, false, NULL, nsURILoaderConstructor },
+  { &kNS_DOCUMENTLOADER_SERVICE_CID, false, NULL, nsDocLoaderConstructor },
+  { &kNS_EXTERNALHELPERAPPSERVICE_CID, false, NULL, nsOSHelperAppServiceConstructor },
+  { &kNS_EXTERNALPROTOCOLHANDLER_CID, false, NULL, nsExternalProtocolHandlerConstructor },
+  { &kNS_PREFETCHSERVICE_CID, false, NULL, nsPrefetchServiceConstructor },
+  { &kNS_OFFLINECACHEUPDATESERVICE_CID, false, NULL, nsOfflineCacheUpdateServiceConstructor },
+  { &kNS_OFFLINECACHEUPDATE_CID, false, NULL, nsOfflineCacheUpdateConstructor },
+  { &kNS_LOCALHANDLERAPP_CID, false, NULL, PlatformLocalHandlerApp_tConstructor },
 #ifdef MOZ_ENABLE_DBUS
-  { "DBus Handler App", NS_DBUSHANDLERAPP_CID,
-      NS_DBUSHANDLERAPP_CONTRACTID, nsDBusHandlerAppConstructor},
+  { &kNS_DBUSHANDLERAPP_CID, false, NULL, nsDBusHandlerAppConstructor },
 #endif
-        
-    // session history
-   { "nsSHEntry", NS_SHENTRY_CID,
-      NS_SHENTRY_CONTRACTID, nsSHEntryConstructor },
-   { "nsSHEntry", NS_HISTORYENTRY_CID,
-      NS_HISTORYENTRY_CONTRACTID, nsSHEntryConstructor },
-   { "nsSHTransaction", NS_SHTRANSACTION_CID,
-      NS_SHTRANSACTION_CONTRACTID, nsSHTransactionConstructor },
-   { "nsSHistory", NS_SHISTORY_CID,
-      NS_SHISTORY_CONTRACTID, nsSHistoryConstructor },
-   { "nsSHistory", NS_SHISTORY_INTERNAL_CID,
-      NS_SHISTORY_INTERNAL_CONTRACTID, nsSHistoryConstructor },
-
-    // global history adapters
-    { "nsGlobalHistoryAdapter", NS_GLOBALHISTORYADAPTER_CID,
-      nsnull, nsGlobalHistoryAdapter::Create,
-      nsGlobalHistoryAdapter::RegisterSelf },
-    { "nsGlobalHistory2Adapter", NS_GLOBALHISTORY2ADAPTER_CID,
-      nsnull, nsGlobalHistory2Adapter::Create,
-      nsGlobalHistory2Adapter::RegisterSelf },
-    
-    // download history
-    { "nsDownloadHistory", NS_DOWNLOADHISTORY_CID,
-      nsnull, nsDownloadHistoryConstructor,
-      nsDownloadHistory::RegisterSelf }
+  { &kNS_SHENTRY_CID, false, NULL, nsSHEntryConstructor },
+  { &kNS_HISTORYENTRY_CID, false, NULL, nsSHEntryConstructor },
+  { &kNS_SHTRANSACTION_CID, false, NULL, nsSHTransactionConstructor },
+  { &kNS_SHISTORY_CID, false, NULL, nsSHistoryConstructor },
+  { &kNS_SHISTORY_INTERNAL_CID, false, NULL, nsSHistoryConstructor },
+  { &kNS_DOWNLOADHISTORY_CID, false, NULL, nsDownloadHistoryConstructor },
+  { NULL }
 };
 
-// "docshell provider" to illustrate that this thing really *should*
-// be dispensing docshells rather than webshells.
-NS_IMPL_NSGETMODULE_WITH_CTOR_DTOR(docshell_provider, gDocShellModuleInfo,
-                                   Initialize, Shutdown)
+const mozilla::Module::ContractIDEntry kDocShellContracts[] = {
+  { "@mozilla.org/docshell;1", &kNS_DOCSHELL_CID },
+  { NS_URIFIXUP_CONTRACTID, &kNS_DEFAULTURIFIXUP_CID },
+  { NS_WEBNAVIGATION_INFO_CONTRACTID, &kNS_WEBNAVIGATION_INFO_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "about", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "config", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+#ifdef MOZ_CRASHREPORTER
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "crashes", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+#endif
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "credits", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "plugins", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "mozilla", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "logo", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "buildconfig", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "license", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "neterror", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "memory", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "addons", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_ABOUT_MODULE_CONTRACTID_PREFIX "support", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
+  { NS_URI_LOADER_CONTRACTID, &kNS_URI_LOADER_CID },
+  { NS_DOCUMENTLOADER_SERVICE_CONTRACTID, &kNS_DOCUMENTLOADER_SERVICE_CID },
+  { NS_EXTERNALHELPERAPPSERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID },
+  { NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID },
+  { NS_MIMESERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID },
+  { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"default", &kNS_EXTERNALPROTOCOLHANDLER_CID },
+  { NS_PREFETCHSERVICE_CONTRACTID, &kNS_PREFETCHSERVICE_CID },
+  { NS_OFFLINECACHEUPDATESERVICE_CONTRACTID, &kNS_OFFLINECACHEUPDATESERVICE_CID },
+  { NS_OFFLINECACHEUPDATE_CONTRACTID, &kNS_OFFLINECACHEUPDATE_CID },
+  { NS_LOCALHANDLERAPP_CONTRACTID, &kNS_LOCALHANDLERAPP_CID },
+#ifdef MOZ_ENABLE_DBUS
+  { NS_DBUSHANDLERAPP_CONTRACTID, &kNS_DBUSHANDLERAPP_CID },
+#endif
+  { NS_SHENTRY_CONTRACTID, &kNS_SHENTRY_CID },
+  { NS_HISTORYENTRY_CONTRACTID, &kNS_HISTORYENTRY_CID },
+  { NS_SHTRANSACTION_CONTRACTID, &kNS_SHTRANSACTION_CID },
+  { NS_SHISTORY_CONTRACTID, &kNS_SHISTORY_CID },
+  { NS_SHISTORY_INTERNAL_CONTRACTID, &kNS_SHISTORY_INTERNAL_CID },
+  { NS_DOWNLOADHISTORY_CONTRACTID, &kNS_DOWNLOADHISTORY_CID },
+  { NULL }
+};
+
+static const mozilla::Module kDocShellModule = {
+  mozilla::Module::kVersion,
+  kDocShellCIDs,
+  kDocShellContracts,
+  NULL,
+  NULL,
+  Initialize,
+  Shutdown
+};
+
+NSMODULE_DEFN(docshell_provider) = &kDocShellModule;
--- a/editor/composer/src/nsComposerRegistration.cpp
+++ b/editor/composer/src/nsComposerRegistration.cpp
@@ -32,17 +32,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 
 #include "nsEditingSession.h"       // for the CID
 #include "nsComposerController.h"   // for the CID
 #include "nsEditorSpellCheck.h"     // for the CID
 #include "nsComposeTxtSrvFilter.h"
 #include "nsIController.h"
 #include "nsIControllerContext.h"
 #include "nsIControllerCommandTable.h"
@@ -70,17 +70,17 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsEditing
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsEditorSpellCheck)
 
 // There are no macros that enable us to have 2 constructors 
 // for the same object
 //
 // Here we are creating the same object with two different contract IDs
 // and then initializing it different.
 // Basically, we need to tell the filter whether it is doing mail or not
-static NS_METHOD
+static nsresult
 nsComposeTxtSrvFilterConstructor(nsISupports *aOuter, REFNSIID aIID,
                                  void **aResult, PRBool aIsForMail)
 {
     *aResult = NULL;
     if (NULL != aOuter) 
     {
         return NS_ERROR_NO_AGGREGATION;
     }
@@ -92,25 +92,25 @@ nsComposeTxtSrvFilterConstructor(nsISupp
     }
     NS_ADDREF(inst);
 	  inst->Init(aIsForMail);
     nsresult rv = inst->QueryInterface(aIID, aResult);
     NS_RELEASE(inst);
     return rv;
 }
 
-static NS_METHOD
+static nsresult
 nsComposeTxtSrvFilterConstructorForComposer(nsISupports *aOuter, 
                                             REFNSIID aIID,
                                             void **aResult)
 {
     return nsComposeTxtSrvFilterConstructor(aOuter, aIID, aResult, PR_FALSE);
 }
 
-static NS_METHOD
+static nsresult
 nsComposeTxtSrvFilterConstructorForMail(nsISupports *aOuter, 
                                         REFNSIID aIID,
                                         void **aResult)
 {
     return nsComposeTxtSrvFilterConstructor(aOuter, aIID, aResult, PR_TRUE);
 }
 
 
@@ -143,41 +143,41 @@ CreateControllerWithSingletonCommandTabl
   *aResult = controller;
   NS_ADDREF(*aResult);
   return NS_OK;
 }
 
 
 // Here we make an instance of the controller that holds doc state commands.
 // We set it up with a singleton command table.
-static NS_METHOD
+static nsresult
 nsHTMLEditorDocStateControllerConstructor(nsISupports *aOuter, REFNSIID aIID, 
                                               void **aResult)
 {
   nsCOMPtr<nsIController> controller;
   nsresult rv = CreateControllerWithSingletonCommandTable(kHTMLEditorDocStateCommandTableCID, getter_AddRefs(controller));
   if (NS_FAILED(rv)) return rv;
 
   return controller->QueryInterface(aIID, aResult);
 }
 
 // Tere we make an instance of the controller that holds composer commands.
 // We set it up with a singleton command table.
-static NS_METHOD
+static nsresult
 nsHTMLEditorControllerConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
 {
   nsCOMPtr<nsIController> controller;
   nsresult rv = CreateControllerWithSingletonCommandTable(kHTMLEditorCommandTableCID, getter_AddRefs(controller));
   if (NS_FAILED(rv)) return rv;
 
   return controller->QueryInterface(aIID, aResult);
 }
 
 // Constructor for a command table that is pref-filled with HTML editor commands
-static NS_METHOD
+static nsresult
 nsHTMLEditorCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID, 
                                               void **aResult)
 {
   nsresult rv;
   nsCOMPtr<nsIControllerCommandTable> commandTable =
       do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
   if (NS_FAILED(rv)) return rv;
   
@@ -187,17 +187,17 @@ nsHTMLEditorCommandTableConstructor(nsIS
   // we don't know here whether we're being created as an instance,
   // or a service, so we can't become immutable
   
   return commandTable->QueryInterface(aIID, aResult);
 }
 
 
 // Constructor for a command table that is pref-filled with HTML editor doc state commands
-static NS_METHOD
+static nsresult
 nsHTMLEditorDocStateCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID, 
                                               void **aResult)
 {
   nsresult rv;
   nsCOMPtr<nsIControllerCommandTable> commandTable =
       do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
   if (NS_FAILED(rv)) return rv;
   
@@ -205,52 +205,47 @@ nsHTMLEditorDocStateCommandTableConstruc
   if (NS_FAILED(rv)) return rv;
   
   // we don't know here whether we're being created as an instance,
   // or a service, so we can't become immutable
   
   return commandTable->QueryInterface(aIID, aResult);
 }
 
-////////////////////////////////////////////////////////////////////////
-// Define a table of CIDs implemented by this module along with other
-// information like the function to create an instance, contractid, and
-// class name.
-//
-static const nsModuleComponentInfo components[] = {
+NS_DEFINE_NAMED_CID(NS_HTMLEDITORCONTROLLER_CID);
+NS_DEFINE_NAMED_CID(NS_EDITORDOCSTATECONTROLLER_CID);
+NS_DEFINE_NAMED_CID(NS_HTMLEDITOR_COMMANDTABLE_CID);
+NS_DEFINE_NAMED_CID(NS_HTMLEDITOR_DOCSTATE_COMMANDTABLE_CID);
+NS_DEFINE_NAMED_CID(NS_EDITINGSESSION_CID);
+NS_DEFINE_NAMED_CID(NS_EDITORSPELLCHECK_CID);
+NS_DEFINE_NAMED_CID(NS_COMPOSERTXTSRVFILTER_CID);
+NS_DEFINE_NAMED_CID(NS_COMPOSERTXTSRVFILTERMAIL_CID);
 
-    { "HTML Editor Controller", NS_HTMLEDITORCONTROLLER_CID,
-      "@mozilla.org/editor/htmleditorcontroller;1",
-      nsHTMLEditorControllerConstructor, },
-
-    { "HTML Editor DocState Controller", NS_EDITORDOCSTATECONTROLLER_CID,
-      "@mozilla.org/editor/editordocstatecontroller;1",
-      nsHTMLEditorDocStateControllerConstructor, },
-
-    { "HTML Editor command table", NS_HTMLEDITOR_COMMANDTABLE_CID,
-      "", // no point using a contract-ID
-      nsHTMLEditorCommandTableConstructor, },
 
-    { "HTML Editor doc state command table", NS_HTMLEDITOR_DOCSTATE_COMMANDTABLE_CID,
-      "", // no point using a contract-ID
-      nsHTMLEditorDocStateCommandTableConstructor, },
-
-    { "Editing Session", NS_EDITINGSESSION_CID,
-      "@mozilla.org/editor/editingsession;1", nsEditingSessionConstructor, },
-
-    { "Editor Spell Checker", NS_EDITORSPELLCHECK_CID,
-      "@mozilla.org/editor/editorspellchecker;1",
-      nsEditorSpellCheckConstructor,},
-
-    { "TxtSrv Filter", NS_COMPOSERTXTSRVFILTER_CID,
-      COMPOSER_TXTSRVFILTER_CONTRACTID,
-      nsComposeTxtSrvFilterConstructorForComposer, },
-
-    { "TxtSrv Filter For Mail", NS_COMPOSERTXTSRVFILTERMAIL_CID,
-      COMPOSER_TXTSRVFILTERMAIL_CONTRACTID,
-      nsComposeTxtSrvFilterConstructorForMail, },
+static const mozilla::Module::CIDEntry kComposerCIDs[] = {
+  { &kNS_HTMLEDITORCONTROLLER_CID, false, NULL, nsHTMLEditorControllerConstructor },
+  { &kNS_EDITORDOCSTATECONTROLLER_CID, false, NULL, nsHTMLEditorDocStateControllerConstructor },
+  { &kNS_HTMLEDITOR_COMMANDTABLE_CID, false, NULL, nsHTMLEditorCommandTableConstructor },
+  { &kNS_HTMLEDITOR_DOCSTATE_COMMANDTABLE_CID, false, NULL, nsHTMLEditorDocStateCommandTableConstructor },
+  { &kNS_EDITINGSESSION_CID, false, NULL, nsEditingSessionConstructor },
+  { &kNS_EDITORSPELLCHECK_CID, false, NULL, nsEditorSpellCheckConstructor },
+  { &kNS_COMPOSERTXTSRVFILTER_CID, false, NULL, nsComposeTxtSrvFilterConstructorForComposer },
+  { &kNS_COMPOSERTXTSRVFILTERMAIL_CID, false, NULL, nsComposeTxtSrvFilterConstructorForMail },
+  { NULL }
 };
 
-////////////////////////////////////////////////////////////////////////
-// Implement the NSGetModule() exported function for your module
-// and the entire implementation of the module object.
-//
-NS_IMPL_NSGETMODULE(nsComposerModule, components)
+static const mozilla::Module::ContractIDEntry kComposerContracts[] = {
+  { "@mozilla.org/editor/htmleditorcontroller;1", &kNS_HTMLEDITORCONTROLLER_CID },
+  { "@mozilla.org/editor/editordocstatecontroller;1", &kNS_EDITORDOCSTATECONTROLLER_CID },
+  { "@mozilla.org/editor/editingsession;1", &kNS_EDITINGSESSION_CID },
+  { "@mozilla.org/editor/editorspellchecker;1", &kNS_EDITORSPELLCHECK_CID },
+  { COMPOSER_TXTSRVFILTER_CONTRACTID, &kNS_COMPOSERTXTSRVFILTER_CID },
+  { COMPOSER_TXTSRVFILTERMAIL_CONTRACTID, &kNS_COMPOSERTXTSRVFILTERMAIL_CID },
+  { NULL }
+};
+
+static const mozilla::Module kComposerModule = {
+  mozilla::Module::kVersion,
+  kComposerCIDs,
+  kComposerContracts
+};
+
+NSMODULE_DEFN(nsComposerModule) = &kComposerModule;
--- a/editor/txmgr/src/nsTransactionManagerFactory.cpp
+++ b/editor/txmgr/src/nsTransactionManagerFactory.cpp
@@ -30,35 +30,37 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
-
+#include "mozilla/ModuleUtils.h"
 #include "nsTransactionManagerCID.h"
 #include "nsTransactionStack.h"
 #include "nsTransactionManager.h"
 
 ////////////////////////////////////////////////////////////////////////
 // Define the contructor function for the objects
 //
 // NOTE: This creates an instance of objects by using the default constructor
 //
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransactionManager)
+NS_DEFINE_NAMED_CID(NS_TRANSACTIONMANAGER_CID);
 
-////////////////////////////////////////////////////////////////////////
-// Define a table of CIDs implemented by this module along with other
-// information like the function to create an instance, contractid, and
-// class name.
-//
-static const nsModuleComponentInfo components[] = {
-  { "nsTransactionManager", NS_TRANSACTIONMANAGER_CID, NS_TRANSACTIONMANAGER_CONTRACTID, nsTransactionManagerConstructor },
+static const mozilla::Module::CIDEntry kTxMgrCIDs[] = {
+    { &kNS_TRANSACTIONMANAGER_CID, false, NULL, nsTransactionManagerConstructor },
+    { NULL }
 };
 
-////////////////////////////////////////////////////////////////////////
-// Implement the NSGetModule() exported function for your module
-// and the entire implementation of the module object.
-//
-NS_IMPL_NSGETMODULE(nsTransactionManagerModule, components)
+static const mozilla::Module::ContractIDEntry kTxMgrContracts[] = {
+    { NS_TRANSACTIONMANAGER_CONTRACTID, &kNS_TRANSACTIONMANAGER_CID },
+    { NULL }
+};
+
+static const mozilla::Module kTxMgrModule = {
+    mozilla::Module::kVersion,
+    kTxMgrCIDs,
+    kTxMgrContracts
+};
+NSMODULE_DEFN(nsTransactionManagerModule) = &kTxMgrModule;
--- a/embedding/browser/build/nsWebBrowserModule.cpp
+++ b/embedding/browser/build/nsWebBrowserModule.cpp
@@ -32,79 +32,58 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIModule.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsIServiceManager.h"
-#include "nsIGenericFactory.h"
-#include "nsICategoryManager.h"
 #include "nsXPIDLString.h"
 
 #include "nsEmbedCID.h"
 
 #include "nsWebBrowser.h"
 #include "nsCommandHandler.h"
 #include "nsWebBrowserContentPolicy.h"
 
 // Factory Constructors
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsWebBrowser)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsWebBrowserContentPolicy)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCommandHandler)
 
-static NS_METHOD
-RegisterContentPolicy(nsIComponentManager *aCompMgr, nsIFile *aPath,
-                      const char *registryLocation, const char *componentType,
-                      const nsModuleComponentInfo *info)
-{
-    nsresult rv;
-    nsCOMPtr<nsICategoryManager> catman =
-        do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-    if (NS_FAILED(rv)) return rv;
-    nsXPIDLCString previous;
-    return catman->AddCategoryEntry("content-policy",
-                                    NS_WEBBROWSERCONTENTPOLICY_CONTRACTID,
-                                    NS_WEBBROWSERCONTENTPOLICY_CONTRACTID,
-                                    PR_TRUE, PR_TRUE, getter_Copies(previous));
-}
+NS_DEFINE_NAMED_CID(NS_WEBBROWSER_CID);
+NS_DEFINE_NAMED_CID(NS_COMMANDHANDLER_CID);
+NS_DEFINE_NAMED_CID(NS_WEBBROWSERCONTENTPOLICY_CID);
 
-static NS_METHOD
-UnregisterContentPolicy(nsIComponentManager *aCompMgr, nsIFile *aPath,
-                        const char *registryLocation,
-                        const nsModuleComponentInfo *info)
-{
-    nsresult rv;
-    nsCOMPtr<nsICategoryManager> catman =
-        do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    return catman->DeleteCategoryEntry("content-policy",
-                                       NS_WEBBROWSERCONTENTPOLICY_CONTRACTID,
-                                       PR_TRUE);
-}
-
-// Component Table
-
-static const nsModuleComponentInfo components[] =
-{
-   { "WebBrowser Component", NS_WEBBROWSER_CID, 
-     NS_WEBBROWSER_CONTRACTID, nsWebBrowserConstructor },
-   { "CommandHandler Component", NS_COMMANDHANDLER_CID,
-     NS_COMMANDHANDLER_CONTRACTID, nsCommandHandlerConstructor },
-   { "nsIWebBrowserSetup content policy enforcer", 
-     NS_WEBBROWSERCONTENTPOLICY_CID,
-     NS_WEBBROWSERCONTENTPOLICY_CONTRACTID,
-     nsWebBrowserContentPolicyConstructor,
-     RegisterContentPolicy, UnregisterContentPolicy }
+static const mozilla::Module::CIDEntry kWebBrowserCIDs[] = {
+    { &kNS_WEBBROWSER_CID, false, NULL, nsWebBrowserConstructor },
+    { &kNS_COMMANDHANDLER_CID, false, NULL, nsCommandHandlerConstructor },
+    { &kNS_WEBBROWSERCONTENTPOLICY_CID, false, NULL, nsWebBrowserContentPolicyConstructor },
+    { NULL }
 };
 
+static const mozilla::Module::ContractIDEntry kWebBrowserContracts[] = {
+    { NS_WEBBROWSER_CONTRACTID, &kNS_WEBBROWSER_CID },
+    { NS_COMMANDHANDLER_CONTRACTID, &kNS_COMMANDHANDLER_CID },
+    { NS_WEBBROWSERCONTENTPOLICY_CONTRACTID, &kNS_WEBBROWSERCONTENTPOLICY_CID },
+    { NULL }
+};
 
-// NSGetModule implementation.
+static const mozilla::Module::CategoryEntry kWebBrowserCategories[] = {
+    { "content-policy", NS_WEBBROWSERCONTENTPOLICY_CONTRACTID, NS_WEBBROWSERCONTENTPOLICY_CONTRACTID },
+    { NULL }
+};
 
-NS_IMPL_NSGETMODULE(Browser_Embedding_Module, components)
+static const mozilla::Module kWebBrowserModule = {
+    mozilla::Module::kVersion,
+    kWebBrowserCIDs,
+    kWebBrowserContracts,
+    kWebBrowserCategories
+};
+
+NSMODULE_DEFN(Browser_Embedding_Module) = &kWebBrowserModule;
 
 
 
--- a/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
+++ b/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
@@ -40,17 +40,16 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 // Local Includes
 #include "nsDocShellTreeOwner.h"
 #include "nsWebBrowser.h"
 
 // Helper Classes
-#include "nsIGenericFactory.h"
 #include "nsStyleCoord.h"
 #include "nsSize.h"
 #include "nsHTMLReflowState.h"
 #include "nsIServiceManager.h"
 #include "nsComponentManagerUtils.h"
 #include "nsXPIDLString.h"
 #include "nsIAtom.h"
 #include "nsReadableUtils.h"
--- a/embedding/components/build/nsEmbeddingModule.cpp
+++ b/embedding/components/build/nsEmbeddingModule.cpp
@@ -30,17 +30,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsDialogParamBlock.h"
 #include "nsPromptService.h"
 #include "nsWindowWatcher.h"
 #include "nsAppStartupNotifier.h"
 #include "nsFind.h"
 #include "nsWebBrowserFind.h"
 #include "nsWebBrowserPersist.h"
 #include "nsCommandManager.h"
@@ -85,31 +85,31 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsBaseCom
 #define NS_DEFAULTAUTHPROMPT_CID                     \
 { /* ca200860-4696-40d7-88fa-4490d423a8ef */         \
     0xca200860,                                      \
     0x4696,                                          \
     0x40d7,                                          \
     {0x88, 0xfa, 0x44, 0x90, 0xd4, 0x23, 0xa8, 0xef} \
 }
 
-static NS_METHOD
+static nsresult
 nsDefaultPromptConstructor(nsISupports *outer, const nsIID &iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsCOMPtr<nsIPrompt> prompt;
   nsresult rv = NS_NewPrompter(getter_AddRefs(prompt), nsnull);
   if (NS_FAILED(rv))
     return rv;
 
   return prompt->QueryInterface(iid, result);
 }
 
-static NS_METHOD
+static nsresult
 nsDefaultAuthPromptConstructor(nsISupports *outer, const nsIID &iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsCOMPtr<nsIAuthPrompt> prompt;
   nsresult rv = NS_NewAuthPrompter(getter_AddRefs(prompt), nsnull);
   if (NS_FAILED(rv))
@@ -123,35 +123,89 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsDialogP
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPromptService, Init)
 #ifdef NS_PRINTING
 #ifndef WINCE
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrintingPromptService, Init)
 #endif
 #endif
 #endif
 
-static const nsModuleComponentInfo gComponents[] = {
-
 #ifdef MOZ_XUL
-  { "Dialog ParamBlock", NS_DIALOGPARAMBLOCK_CID, NS_DIALOGPARAMBLOCK_CONTRACTID, nsDialogParamBlockConstructor },
-  { "Prompt Service", NS_PROMPTSERVICE_CID, NS_PROMPTSERVICE_CONTRACTID, nsPromptServiceConstructor },
+NS_DEFINE_NAMED_CID(NS_DIALOGPARAMBLOCK_CID);
+NS_DEFINE_NAMED_CID(NS_PROMPTSERVICE_CID);
 #ifdef NS_PRINTING
 #ifndef WINCE
-  { "Printing Prompt Service", NS_PRINTINGPROMPTSERVICE_CID, NS_PRINTINGPROMPTSERVICE_CONTRACTID, nsPrintingPromptServiceConstructor },
+NS_DEFINE_NAMED_CID(NS_PRINTINGPROMPTSERVICE_CID);
+#endif
+#endif
+#endif
+NS_DEFINE_NAMED_CID(NS_WINDOWWATCHER_CID);
+NS_DEFINE_NAMED_CID(NS_FIND_CID);
+NS_DEFINE_NAMED_CID(NS_WEB_BROWSER_FIND_CID);
+NS_DEFINE_NAMED_CID(NS_APPSTARTUPNOTIFIER_CID);
+NS_DEFINE_NAMED_CID(NS_WEBBROWSERPERSIST_CID);
+NS_DEFINE_NAMED_CID(NS_CONTROLLERCOMMANDTABLE_CID);
+NS_DEFINE_NAMED_CID(NS_COMMAND_MANAGER_CID);
+NS_DEFINE_NAMED_CID(NS_COMMAND_PARAMS_CID);
+NS_DEFINE_NAMED_CID(NS_CONTROLLER_COMMAND_GROUP_CID);
+NS_DEFINE_NAMED_CID(NS_BASECOMMANDCONTROLLER_CID);
+NS_DEFINE_NAMED_CID(NS_DEFAULTPROMPT_CID);
+NS_DEFINE_NAMED_CID(NS_DEFAULTAUTHPROMPT_CID);
+
+
+static const mozilla::Module::CIDEntry kEmbeddingCIDs[] = {
+#ifdef MOZ_XUL
+    { &kNS_DIALOGPARAMBLOCK_CID, false, NULL, nsDialogParamBlockConstructor },
+    { &kNS_PROMPTSERVICE_CID, false, NULL, nsPromptServiceConstructor },
+#ifdef NS_PRINTING
+#ifndef WINCE
+    { &kNS_PRINTINGPROMPTSERVICE_CID, false, NULL, nsPrintingPromptServiceConstructor },
 #endif
 #endif
 #endif
-  { "Window Watcher", NS_WINDOWWATCHER_CID, NS_WINDOWWATCHER_CONTRACTID, nsWindowWatcherConstructor },
-  { "Window Watcher", NS_WINDOWWATCHER_CID, NS_AUTHPROMPT_ADAPTER_FACTORY_CONTRACTID, nsWindowWatcherConstructor },
-  { "Find",           NS_FIND_CID, NS_FIND_CONTRACTID, nsFindConstructor },
-  { "WebBrowserFind",           NS_WEB_BROWSER_FIND_CID, NS_WEB_BROWSER_FIND_CONTRACTID, nsWebBrowserFindConstructor },
-  { NS_APPSTARTUPNOTIFIER_CLASSNAME, NS_APPSTARTUPNOTIFIER_CID, NS_APPSTARTUPNOTIFIER_CONTRACTID, nsAppStartupNotifierConstructor },
-  { "WebBrowserPersist Component", NS_WEBBROWSERPERSIST_CID, NS_WEBBROWSERPERSIST_CONTRACTID, nsWebBrowserPersistConstructor },
-  { "Controller Command Table", NS_CONTROLLERCOMMANDTABLE_CID, NS_CONTROLLERCOMMANDTABLE_CONTRACTID, nsControllerCommandTableConstructor },
-  { "Command Manager", NS_COMMAND_MANAGER_CID, NS_COMMAND_MANAGER_CONTRACTID, nsCommandManagerConstructor },
-  { "Command Params", NS_COMMAND_PARAMS_CID, NS_COMMAND_PARAMS_CONTRACTID, nsCommandParamsConstructor },
-  { "Command Group", NS_CONTROLLER_COMMAND_GROUP_CID, NS_CONTROLLER_COMMAND_GROUP_CONTRACTID, nsControllerCommandGroupConstructor },
-  { "Base Command Controller", NS_BASECOMMANDCONTROLLER_CID, NS_BASECOMMANDCONTROLLER_CONTRACTID, nsBaseCommandControllerConstructor },
-  { NS_DEFAULTPROMPT_CLASSNAME, NS_DEFAULTPROMPT_CID, NS_DEFAULTPROMPT_CONTRACTID, nsDefaultPromptConstructor },
-  { NS_DEFAULTAUTHPROMPT_CLASSNAME, NS_DEFAULTAUTHPROMPT_CID, NS_DEFAULTAUTHPROMPT_CONTRACTID, nsDefaultAuthPromptConstructor }
+    { &kNS_WINDOWWATCHER_CID, false, NULL, nsWindowWatcherConstructor },
+    { &kNS_FIND_CID, false, NULL, nsFindConstructor },
+    { &kNS_WEB_BROWSER_FIND_CID, false, NULL, nsWebBrowserFindConstructor },
+    { &kNS_APPSTARTUPNOTIFIER_CID, false, NULL, nsAppStartupNotifierConstructor },
+    { &kNS_WEBBROWSERPERSIST_CID, false, NULL, nsWebBrowserPersistConstructor },
+    { &kNS_CONTROLLERCOMMANDTABLE_CID, false, NULL, nsControllerCommandTableConstructor },
+    { &kNS_COMMAND_MANAGER_CID, false, NULL, nsCommandManagerConstructor },
+    { &kNS_COMMAND_PARAMS_CID, false, NULL, nsCommandParamsConstructor },
+    { &kNS_CONTROLLER_COMMAND_GROUP_CID, false, NULL, nsControllerCommandGroupConstructor },
+    { &kNS_BASECOMMANDCONTROLLER_CID, false, NULL, nsBaseCommandControllerConstructor },
+    { &kNS_DEFAULTPROMPT_CID, false, NULL, nsDefaultPromptConstructor },
+    { &kNS_DEFAULTAUTHPROMPT_CID, false, NULL, nsDefaultAuthPromptConstructor },
+    { NULL }
 };
 
-NS_IMPL_NSGETMODULE(embedcomponents, gComponents)
+static const mozilla::Module::ContractIDEntry kEmbeddingContracts[] = {
+#ifdef MOZ_XUL
+    { NS_DIALOGPARAMBLOCK_CONTRACTID, &kNS_DIALOGPARAMBLOCK_CID },
+    { NS_PROMPTSERVICE_CONTRACTID, &kNS_PROMPTSERVICE_CID },
+#ifdef NS_PRINTING
+#ifndef WINCE
+    { NS_PRINTINGPROMPTSERVICE_CONTRACTID, &kNS_PRINTINGPROMPTSERVICE_CID },
+#endif
+#endif
+#endif
+    { NS_WINDOWWATCHER_CONTRACTID, &kNS_WINDOWWATCHER_CID },
+    { NS_AUTHPROMPT_ADAPTER_FACTORY_CONTRACTID, &kNS_WINDOWWATCHER_CID },
+    { NS_FIND_CONTRACTID, &kNS_FIND_CID },
+    { NS_WEB_BROWSER_FIND_CONTRACTID, &kNS_WEB_BROWSER_FIND_CID },
+    { NS_APPSTARTUPNOTIFIER_CONTRACTID, &kNS_APPSTARTUPNOTIFIER_CID },
+    { NS_WEBBROWSERPERSIST_CONTRACTID, &kNS_WEBBROWSERPERSIST_CID },
+    { NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &kNS_CONTROLLERCOMMANDTABLE_CID },
+    { NS_COMMAND_MANAGER_CONTRACTID, &kNS_COMMAND_MANAGER_CID },
+    { NS_COMMAND_PARAMS_CONTRACTID, &kNS_COMMAND_PARAMS_CID },
+    { NS_CONTROLLER_COMMAND_GROUP_CONTRACTID, &kNS_CONTROLLER_COMMAND_GROUP_CID },
+    { NS_BASECOMMANDCONTROLLER_CONTRACTID, &kNS_BASECOMMANDCONTROLLER_CID },
+    { NS_DEFAULTPROMPT_CONTRACTID, &kNS_DEFAULTPROMPT_CID },
+    { NS_DEFAULTAUTHPROMPT_CONTRACTID, &kNS_DEFAULTAUTHPROMPT_CID },
+    { NULL }
+};
+
+static const mozilla::Module kEmbeddingModule = {
+    mozilla::Module::kVersion,
+    kEmbeddingCIDs,
+    kEmbeddingContracts
+};
+
+NSMODULE_DEFN(embedcomponents) = &kEmbeddingModule;
--- a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
+++ b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
@@ -61,17 +61,16 @@
 #include "nsIDOMWindow.h"
 #include "nsIDOMChromeWindow.h"
 #include "nsIDOMWindowInternal.h"
 #include "nsIDOMModalContentWindow.h"
 #include "nsIScriptObjectPrincipal.h"
 #include "nsIScreen.h"
 #include "nsIScreenManager.h"
 #include "nsIScriptContext.h"
-#include "nsIGenericFactory.h"
 #include "nsIJSContextStack.h"
 #include "nsIObserverService.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsXPCOM.h"
 #include "nsIURI.h"
 #include "nsIWebBrowser.h"
 #include "nsIWebBrowserChrome.h"
--- a/extensions/auth/nsAuthFactory.cpp
+++ b/extensions/auth/nsAuthFactory.cpp
@@ -29,17 +29,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsAuth.h"
 
 //-----------------------------------------------------------------------------
 
 #define NS_HTTPNEGOTIATEAUTH_CID                   \
 { /* 75c80fd0-accb-432c-af59-ec60668c3990 */       \
   0x75c80fd0,                                      \
   0xaccb,                                          \
@@ -66,33 +66,33 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpNeg
   {0x8c, 0xd6, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66} \
 }
 
 #include "nsAuthGSSAPI.h"
 
 #if defined( USE_SSPI )
 #include "nsAuthSSPI.h"
 
-static NS_METHOD
+static nsresult
 nsSysNTLMAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsAuthSSPI *auth = new nsAuthSSPI(PACKAGE_TYPE_NTLM);
   if (!auth)
     return NS_ERROR_OUT_OF_MEMORY;
   
   NS_ADDREF(auth);
   nsresult rv = auth->QueryInterface(iid, result);
   NS_RELEASE(auth);
   return rv;
 }
 
-static NS_METHOD
+static nsresult
 nsKerbSSPIAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsAuthSSPI *auth = new nsAuthSSPI(PACKAGE_TYPE_KERBEROS);
   if (!auth)
     return NS_ERROR_OUT_OF_MEMORY;
@@ -133,17 +133,17 @@ nsKerbSSPIAuthConstructor(nsISupports *o
 { /* bc54f001-6eb0-4e32-9f49-7e064d8e70ef */       \
   0xbc54f001,                                      \
   0x6eb0,                                          \
   0x4e32,                                          \
   {0x9f, 0x49, 0x7e, 0x06, 0x4d, 0x8e, 0x70, 0xef} \
 }
 
 #include "nsAuthSambaNTLM.h"
-static NS_METHOD
+static nsresult
 nsSambaNTLMAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsCOMPtr<nsAuthSambaNTLM> auth = new nsAuthSambaNTLM();
   if (!auth)
     return NS_ERROR_OUT_OF_MEMORY;
@@ -154,33 +154,33 @@ nsSambaNTLMAuthConstructor(nsISupports *
     return rv;
   }
 
   return auth->QueryInterface(iid, result);
 }
 
 #endif
 
-static NS_METHOD
+static nsresult
 nsKerbGSSAPIAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsAuthGSSAPI *auth = new nsAuthGSSAPI(PACKAGE_TYPE_KERBEROS);
   if (!auth)
     return NS_ERROR_OUT_OF_MEMORY;
   
   NS_ADDREF(auth);
   nsresult rv = auth->QueryInterface(iid, result);
   NS_RELEASE(auth);
   return rv;
 }
 
-static NS_METHOD
+static nsresult
 nsGSSAPIAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
 {
   if (outer)
     return NS_ERROR_NO_AGGREGATION;
 
   nsAuthGSSAPI *auth = new nsAuthGSSAPI(PACKAGE_TYPE_NEGOTIATE);
   if (!auth)
     return NS_ERROR_OUT_OF_MEMORY;
@@ -202,79 +202,83 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthSSP
   0x72cc,                                          \
   0x480f,                                          \
   {0x93, 0x4b, 0x14, 0x8e, 0x33, 0xc2, 0x28, 0xa6} \
 }
 
 #include "nsAuthSASL.h"
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthSASL)
 
-//-----------------------------------------------------------------------------
+NS_DEFINE_NAMED_CID(NS_GSSAUTH_CID);
+NS_DEFINE_NAMED_CID(NS_NEGOTIATEAUTH_CID);
+#if defined( USE_SSPI )
+NS_DEFINE_NAMED_CID(NS_NEGOTIATEAUTHSSPI_CID);
+NS_DEFINE_NAMED_CID(NS_KERBAUTHSSPI_CID);
+NS_DEFINE_NAMED_CID(NS_SYSNTLMAUTH_CID);
+#else
+NS_DEFINE_NAMED_CID(NS_SAMBANTLMAUTH_CID);
+#endif
+NS_DEFINE_NAMED_CID(NS_HTTPNEGOTIATEAUTH_CID);
+NS_DEFINE_NAMED_CID(NS_AUTHSASL_CID);
 
-static const nsModuleComponentInfo components[] = {
-  { "nsAuthKerbGSS", 
-    NS_GSSAUTH_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "kerb-gss",
-    nsKerbGSSAPIAuthConstructor
-  },
-  { "nsAuthNegoGSSAPI", 
-    NS_NEGOTIATEAUTH_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "negotiate-gss",
-    nsGSSAPIAuthConstructor
-  },
+
+static const mozilla::Module::CIDEntry kAuthCIDs[] = {
+  { &kNS_GSSAUTH_CID, false, NULL, nsKerbGSSAPIAuthConstructor },
+  { &kNS_NEGOTIATEAUTH_CID, false, NULL, nsGSSAPIAuthConstructor },
 #if defined( USE_SSPI )
-  { "nsAuthNegoSSPI", 
-    NS_NEGOTIATEAUTHSSPI_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "negotiate-sspi",
-    nsAuthSSPIConstructor
-  },
-  { "nsAuthKerbSSPI", 
-    NS_KERBAUTHSSPI_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "kerb-sspi",
-    nsKerbSSPIAuthConstructor
-  },
-  { "nsAuthSYSNTLM", 
-    NS_SYSNTLMAUTH_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "sys-ntlm",
-    nsSysNTLMAuthConstructor
-  },
+  { &kNS_NEGOTIATEAUTHSSPI_CID, false, NULL, nsAuthSSPIConstructor },
+  { &kNS_KERBAUTHSSPI_CID, false, NULL, nsKerbSSPIAuthConstructor },
+  { &kNS_SYSNTLMAUTH_CID, false, NULL, nsSysNTLMAuthConstructor },
 #else
-  { "nsAuthSambaNTLM", 
-    NS_SAMBANTLMAUTH_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "sys-ntlm",
-    nsSambaNTLMAuthConstructor
-  },
+  { &kNS_SAMBANTLMAUTH_CID, false, NULL, nsSambaNTLMAuthConstructor },
 #endif
-  { "nsHttpNegotiateAuth", 
-    NS_HTTPNEGOTIATEAUTH_CID,
-    NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "negotiate",
-    nsHttpNegotiateAuthConstructor
-  },
-  { "nsAuthSASL",
-    NS_AUTHSASL_CID,
-    NS_AUTH_MODULE_CONTRACTID_PREFIX "sasl-gssapi",
-    nsAuthSASLConstructor
-  }
+  { &kNS_HTTPNEGOTIATEAUTH_CID, false, NULL, nsHttpNegotiateAuthConstructor },
+  { &kNS_AUTHSASL_CID, false, NULL, nsAuthSASLConstructor },
+  { NULL }
+};
+
+static const mozilla::Module::ContractIDEntry kAuthContracts[] = {
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "kerb-gss", &kNS_GSSAUTH_CID },
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "negotiate-gss", &kNS_NEGOTIATEAUTH_CID },
+#if defined( USE_SSPI )
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "negotiate-sspi", &kNS_NEGOTIATEAUTHSSPI_CID },
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "kerb-sspi", &kNS_KERBAUTHSSPI_CID },
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "sys-ntlm", &kNS_SYSNTLMAUTH_CID },
+#else
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "sys-ntlm", &kNS_SAMBANTLMAUTH_CID },
+#endif
+  { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "negotiate", &kNS_HTTPNEGOTIATEAUTH_CID },
+  { NS_AUTH_MODULE_CONTRACTID_PREFIX "sasl-gssapi", &kNS_AUTHSASL_CID },
+  { NULL }
 };
 
 //-----------------------------------------------------------------------------
 #if defined( PR_LOGGING )
 PRLogModuleInfo *gNegotiateLog;
 
 // setup nspr logging ...
 static nsresult
-InitNegotiateAuth(nsIModule *self)
+InitNegotiateAuth()
 {
   gNegotiateLog = PR_NewLogModule("negotiateauth");
   return NS_OK;
 }
 #else
 #define InitNegotiateAuth nsnull
 #endif
 
 static void
-DestroyNegotiateAuth(nsIModule *self)
+DestroyNegotiateAuth()
 {
   nsAuthGSSAPI::Shutdown();
 }
 
-NS_IMPL_NSGETMODULE_WITH_CTOR_DTOR(nsAuthModule, components,
-                                   InitNegotiateAuth, DestroyNegotiateAuth)
+static const mozilla::Module kAuthModule = {
+  mozilla::Module::kVersion,
+  kAuthCIDs,
+  kAuthContracts,
+  NULL,
+  NULL,
+  InitNegotiateAuth,
+  DestroyNegotiateAuth
+};
+
+NSMODULE_DEFN(nsAuthModule) = &kAuthModule;
--- a/extensions/cookie/nsCookieModule.cpp
+++ b/extensions/cookie/nsCookieModule.cpp
@@ -31,49 +31,52 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsIServiceManager.h"
 #include "nsPermissionManager.h"
 #include "nsPopupWindowManager.h"
 #include "nsICategoryManager.h"
 #include "nsCookiePromptService.h"
 #include "nsCookiePermission.h"
 #include "nsXPIDLString.h"
 
 // Define the constructor function for the objects
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPermissionManager, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPopupWindowManager, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsCookiePermission, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCookiePromptService)
 
-// The list of components we register
-static const nsModuleComponentInfo components[] = {
-    { "PermissionManager",
-      NS_PERMISSIONMANAGER_CID,
-      NS_PERMISSIONMANAGER_CONTRACTID,
-      nsPermissionManagerConstructor
-    },
-    { "PopupWindowManager",
-      NS_POPUPWINDOWMANAGER_CID,
-      NS_POPUPWINDOWMANAGER_CONTRACTID,
-      nsPopupWindowManagerConstructor
-    },
-    { "CookiePromptService",
-      NS_COOKIEPROMPTSERVICE_CID,
-      NS_COOKIEPROMPTSERVICE_CONTRACTID,
-      nsCookiePromptServiceConstructor
-    },
-    { "CookiePermission",
-      NS_COOKIEPERMISSION_CID,
-      NS_COOKIEPERMISSION_CONTRACTID,
-      nsCookiePermissionConstructor
-    }
+NS_DEFINE_NAMED_CID(NS_PERMISSIONMANAGER_CID);
+NS_DEFINE_NAMED_CID(NS_POPUPWINDOWMANAGER_CID);
+NS_DEFINE_NAMED_CID(NS_COOKIEPROMPTSERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_COOKIEPERMISSION_CID);
+
+
+static const mozilla::Module::CIDEntry kCookieCIDs[] = {
+    { &kNS_PERMISSIONMANAGER_CID, false, NULL, nsPermissionManagerConstructor },
+    { &kNS_POPUPWINDOWMANAGER_CID, false, NULL, nsPopupWindowManagerConstructor },
+    { &kNS_COOKIEPROMPTSERVICE_CID, false, NULL, nsCookiePromptServiceConstructor },
+    { &kNS_COOKIEPERMISSION_CID, false, NULL, nsCookiePermissionConstructor },
+    { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsCookieModule, components)
+static const mozilla::Module::ContractIDEntry kCookieContracts[] = {
+    { NS_PERMISSIONMANAGER_CONTRACTID, &kNS_PERMISSIONMANAGER_CID },
+    { NS_POPUPWINDOWMANAGER_CONTRACTID, &kNS_POPUPWINDOWMANAGER_CID },
+    { NS_COOKIEPROMPTSERVICE_CONTRACTID, &kNS_COOKIEPROMPTSERVICE_CID },
+    { NS_COOKIEPERMISSION_CONTRACTID, &kNS_COOKIEPERMISSION_CID },
+    { NULL }
+};
+
+static const mozilla::Module kCookieModule = {
+    mozilla::Module::kVersion,
+    kCookieCIDs,
+    kCookieContracts
+};
+
+NSMODULE_DEFN(nsCookieModule) = &kCookieModule;
--- a/extensions/permissions/nsModuleFactory.cpp
+++ b/extensions/permissions/nsModuleFactory.cpp
@@ -29,60 +29,41 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsIServiceManager.h"
 #include "nsContentBlocker.h"
 #include "nsXPIDLString.h"
-#include "nsICategoryManager.h"
 
 // Define the constructor function for the objects
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsContentBlocker, Init)
 
-static NS_METHOD
-RegisterContentPolicy(nsIComponentManager *aCompMgr, nsIFile *aPath,
-                      const char *registryLocation, const char *componentType,
-                      const nsModuleComponentInfo *info)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> catman =
-      do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-  if (NS_FAILED(rv)) return rv;
-  nsXPIDLCString previous;
-  return catman->AddCategoryEntry("content-policy",
-                                  NS_CONTENTBLOCKER_CONTRACTID,
-                                  NS_CONTENTBLOCKER_CONTRACTID,
-                                  PR_TRUE, PR_TRUE, getter_Copies(previous));
-}
+NS_DEFINE_NAMED_CID(NS_CONTENTBLOCKER_CID);
 
-static NS_METHOD
-UnregisterContentPolicy(nsIComponentManager *aCompMgr, nsIFile *aPath,
-                        const char *registryLocation,
-                        const nsModuleComponentInfo *info)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> catman =
-      do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-  if (NS_FAILED(rv)) return rv;
+static const mozilla::Module::CIDEntry kPermissionsCIDs[] = {
+  { &kNS_CONTENTBLOCKER_CID, false, NULL, nsContentBlockerConstructor },
+  { NULL }
+};
 
-  return catman->DeleteCategoryEntry("content-policy",
-                                     NS_CONTENTBLOCKER_CONTRACTID,
-                                     PR_TRUE);
-}
-
-// The list of components we register
-static const nsModuleComponentInfo components[] = {
-  { "ContentBlocker",
-    NS_CONTENTBLOCKER_CID,
-    NS_CONTENTBLOCKER_CONTRACTID,
-    nsContentBlockerConstructor,
-    RegisterContentPolicy, UnregisterContentPolicy
-  }
+static const mozilla::Module::ContractIDEntry kPermissionsContracts[] = {
+  { NS_CONTENTBLOCKER_CONTRACTID, &kNS_CONTENTBLOCKER_CID },
+  { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsPermissionsModule, components)
+static const mozilla::Module::CategoryEntry kPermissionsCategories[] = {
+  { "content-policy", NS_CONTENTBLOCKER_CONTRACTID, NS_CONTENTBLOCKER_CONTRACTID },
+  { NULL }
+};
+
+static const mozilla::Module kPermissionsModule = {
+  mozilla::Module::kVersion,
+  kPermissionsCIDs,
+  kPermissionsContracts,
+  kPermissionsCategories
+};
+
+NSMODULE_DEFN(nsPermissionsModule) = &kPermissionsModule;
--- a/extensions/pref/autoconfig/src/nsConfigFactory.cpp
+++ b/extensions/pref/autoconfig/src/nsConfigFactory.cpp
@@ -31,90 +31,59 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsAutoConfig.h"
 #include "nsReadConfig.h"
 #include "nsIAppStartupNotifier.h"
-#include "nsICategoryManager.h"
 #if defined(MOZ_LDAP_XPCOM)
 #include "nsLDAPSyncQuery.h"
 #endif
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsAutoConfig, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsReadConfig, Init)
 #if defined(MOZ_LDAP_XPCOM)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsLDAPSyncQuery)
 #endif
 
-// Registering nsReadConfig module as part of the app-startup category to get 
-// it instantiated.
-
-static NS_METHOD 
-RegisterReadConfig(nsIComponentManager *aCompMgr,
-                   nsIFile *aPath,
-                   const char *registryLocation,
-                   const char *componentType,
-                   const nsModuleComponentInfo *info)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> 
-    categoryManager(do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv));
-  if (NS_SUCCEEDED(rv)) {
-    rv = categoryManager->AddCategoryEntry("pref-config-startup", 
-                                           "ReadConfig Module",
-                                           NS_READCONFIG_CONTRACTID,
-                                           PR_TRUE, PR_TRUE, nsnull);
-  }
-  return rv;
-}
+NS_DEFINE_NAMED_CID(NS_AUTOCONFIG_CID);
+NS_DEFINE_NAMED_CID(NS_READCONFIG_CID);
+#if defined(MOZ_LDAP_XPCOM)
+NS_DEFINE_NAMED_CID(NS_LDAPSYNCQUERY_CID);
+#endif
 
-static NS_METHOD 
-UnRegisterReadConfig(nsIComponentManager *aCompMgr,
-                     nsIFile *aPath,
-                     const char *registryLocation,
-                     const nsModuleComponentInfo *info)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> 
-    categoryManager(do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv));
-  if (NS_SUCCEEDED(rv)) {
-    rv = categoryManager->DeleteCategoryEntry(APPSTARTUP_CATEGORY,
-                                              "ReadConfig Module", PR_TRUE);
-  }
-  return rv;
-}
-
-
-// The list of components we register
-static const nsModuleComponentInfo components[] = 
-{
-  { 
-    NS_AUTOCONFIG_CLASSNAME, 
-    NS_AUTOCONFIG_CID, 
-    NS_AUTOCONFIG_CONTRACTID, 
-    nsAutoConfigConstructor
-  },
-  { 
-    NS_READCONFIG_CLASSNAME,
-    NS_READCONFIG_CID,
-    NS_READCONFIG_CONTRACTID,
-    nsReadConfigConstructor,
-    RegisterReadConfig,
-    UnRegisterReadConfig
-  },
+static const mozilla::Module::CIDEntry kAutoConfigCIDs[] = {
+  { &kNS_AUTOCONFIG_CID, false, NULL, nsAutoConfigConstructor },
+  { &kNS_READCONFIG_CID, false, NULL, nsReadConfigConstructor },
 #if defined(MOZ_LDAP_XPCOM)
-  { 
-    "LDAPSyncQuery module", 
-    NS_LDAPSYNCQUERY_CID, 
-    "@mozilla.org/ldapsyncquery;1", 
-    nsLDAPSyncQueryConstructor
-  },
+  { &kNS_LDAPSYNCQUERY_CID, false, NULL, nsLDAPSyncQueryConstructor },
 #endif
+  { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsAutoConfigModule, components)
+static const mozilla::Module::ContractIDEntry kAutoConfigContracts[] = {
+  { NS_AUTOCONFIG_CONTRACTID, &kNS_AUTOCONFIG_CID },
+  { NS_READCONFIG_CONTRACTID, &kNS_READCONFIG_CID },
+#if defined(MOZ_LDAP_XPCOM)
+  { "@mozilla.org/ldapsyncquery;1", &kNS_LDAPSYNCQUERY_CID },
+#endif
+  { NULL }
+};
+
+static const mozilla::Module::CategoryEntry kAutoConfigCategories[] = {
+  { "pref-config-startup", "ReadConfig Module", NS_READCONFIG_CONTRACTID },
+  { NULL }
+};
+
+static const mozilla::Module kAutoConfigModule = {
+  mozilla::Module::kVersion,
+  kAutoConfigCIDs,
+  kAutoConfigContracts,
+  kAutoConfigCategories
+};
+
+NSMODULE_DEFN(nsAutoConfigModule) = &kAutoConfigModule;
--- a/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp
+++ b/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp
@@ -40,17 +40,16 @@
 // sorry, this has to be before the pre-compiled header
 #define FORCE_PR_LOG /* Allow logging in the release build */
 #endif
 #include "jsapi.h"
 #include "nsIXPCSecurityManager.h"
 #include "nsIXPConnect.h"
 #include "nsIJSRuntimeService.h"
 #include "nsCOMPtr.h"
-#include "nsIGenericFactory.h"
 #include "nsIServiceManager.h"
 #include "nsIComponentManager.h"
 #include "nsString.h"
 #include "nsIPrefService.h"
 #include "nsIJSContextStack.h"
 #include "nspr.h"
 
 extern PRLogModuleInfo *MCD;
--- a/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp
+++ b/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp
@@ -131,48 +131,10 @@ mozHunspellDirProvider::AppendingEnumera
 mozHunspellDirProvider::AppendingEnumerator::AppendingEnumerator
     (nsISimpleEnumerator* aBase) :
   mBase(aBase)
 {
   // Initialize mNext to begin
   GetNext(nsnull);
 }
 
-NS_METHOD
-mozHunspellDirProvider::Register(nsIComponentManager* aCompMgr,
-				nsIFile* aPath, const char *aLoaderStr,
-				const char *aType,
-				const nsModuleComponentInfo *aInfo)
-{
-  nsresult rv;
-
-  nsCOMPtr<nsICategoryManager> catMan =
-    do_GetService(NS_CATEGORYMANAGER_CONTRACTID);
-  if (!catMan)
-    return NS_ERROR_FAILURE;
-
-  rv = catMan->AddCategoryEntry(XPCOM_DIRECTORY_PROVIDER_CATEGORY,
-				"spellcheck-directory-provider",
-				kContractID, PR_TRUE, PR_TRUE, nsnull);
-  return rv;
-}
-
-NS_METHOD
-mozHunspellDirProvider::Unregister(nsIComponentManager* aCompMgr,
-				  nsIFile* aPath,
-				  const char *aLoaderStr,
-				  const nsModuleComponentInfo *aInfo)
-{
-  nsresult rv;
-
-  nsCOMPtr<nsICategoryManager> catMan =
-    do_GetService(NS_CATEGORYMANAGER_CONTRACTID);
-  if (!catMan)
-    return NS_ERROR_FAILURE;
-
-  rv = catMan->DeleteCategoryEntry(XPCOM_DIRECTORY_PROVIDER_CATEGORY,
-				   "spellcheck-directory-provider",
-				   PR_TRUE);
-  return rv;
-}
-
 char const *const
 mozHunspellDirProvider::kContractID = "@mozilla.org/spellcheck/dir-provider;1";
--- a/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.h
+++ b/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.h
@@ -32,36 +32,26 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  ******* END LICENSE BLOCK *******/
 
 #ifndef mozHunspellDirProvider_h__
 #define mozHunspellDirProvider_h__
 
 #include "nsIDirectoryService.h"
-#include "nsIGenericFactory.h"
 #include "nsISimpleEnumerator.h"
 
 class mozHunspellDirProvider :
   public nsIDirectoryServiceProvider2
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDIRECTORYSERVICEPROVIDER
   NS_DECL_NSIDIRECTORYSERVICEPROVIDER2
 
-  static NS_METHOD Register(nsIComponentManager* aCompMgr,
-			    nsIFile* aPath, const char *aLoaderStr,
-			    const char *aType,
-			    const nsModuleComponentInfo *aInfo);
-
-  static NS_METHOD Unregister(nsIComponentManager* aCompMgr,
-			      nsIFile* aPath, const char *aLoaderStr,
-			      const nsModuleComponentInfo *aInfo);
-
   static char const *const kContractID;
 
 private:
   class AppendingEnumerator : public nsISimpleEnumerator
   {
   public:
     NS_DECL_ISUPPORTS
     NS_DECL_NSISIMPLEENUMERATOR
--- a/extensions/spellcheck/src/mozSpellCheckerFactory.cpp
+++ b/extensions/spellcheck/src/mozSpellCheckerFactory.cpp
@@ -30,17 +30,17 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 
 #ifdef MOZ_MACBROWSER
 #include "mozOSXSpell.h"
 #else
 #include "mozHunspell.h"
 #include "mozHunspellDirProvider.h"
 #endif
 
@@ -55,22 +55,16 @@
 0x8227F019, 0xAFC7, 0x461e,                     \
 { 0xB0, 0x30, 0x9F, 0x18, 0x5D, 0x7A, 0x0E, 0x29} }
 
 #define MOZ_INLINESPELLCHECKER_CID         \
 { /* 9FE5D975-09BD-44aa-A01A-66402EA28657 */    \
 0x9fe5d975, 0x9bd, 0x44aa,                      \
 { 0xa0, 0x1a, 0x66, 0x40, 0x2e, 0xa2, 0x86, 0x57} }
 
-////////////////////////////////////////////////////////////////////////
-// Define the constructor function for the objects
-//
-// NOTE: This creates an instance of objects by using the default constructor
-//
-
 #ifdef MOZ_MACBROWSER
 NS_GENERIC_FACTORY_CONSTRUCTOR(mozOSXSpell)
 #else
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(mozHunspell, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR(mozHunspellDirProvider)
 #endif
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(mozSpellChecker, Init)
@@ -78,17 +72,17 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(mozP
 NS_GENERIC_FACTORY_CONSTRUCTOR(mozSpellI18NManager)
 
 // This special constructor for the inline spell checker asks the inline
 // spell checker if we can create spell checking objects at all (ie, if there
 // are any dictionaries loaded) before trying to create one. The static
 // CanEnableInlineSpellChecking caches the value so this will be faster (we
 // have to run this code for every edit box we create, as well as for every
 // right click in those edit boxes).
-static NS_IMETHODIMP
+static nsresult
 mozInlineSpellCheckerConstructor(nsISupports *aOuter, REFNSIID aIID,
                                  void **aResult)
 {
   if (! mozInlineSpellChecker::CanEnableInlineSpellChecking())
     return NS_ERROR_FAILURE;
 
   nsresult rv;
 
@@ -107,68 +101,62 @@ mozInlineSpellCheckerConstructor(nsISupp
   }
   NS_ADDREF(inst);
   rv = inst->QueryInterface(aIID, aResult);
   NS_RELEASE(inst);
 
   return rv;
 }
 
-////////////////////////////////////////////////////////////////////////
-// Define a table of CIDs implemented by this module along with other
-// information like the function to create an instance, contractid, and
-// class name.
-//
-static const nsModuleComponentInfo components[] = {
 #ifdef MOZ_MACBROWSER
-    {
-        "OSX Spell check service",
-        MOZ_OSXSPELL_CID,
-        MOZ_OSXSPELL_CONTRACTID,
-        mozOSXSpellConstructor
-    },
+NS_DEFINE_NAMED_CID(MOZ_OSXSPELL_CID);
 #else
-    {
-        "mozHunspell",
-        MOZ_HUNSPELL_CID,
-        MOZ_HUNSPELL_CONTRACTID,
-        mozHunspellConstructor
-    },
-    {
-        "mozHunspellDirProvider",
-        HUNSPELLDIRPROVIDER_CID,
-        mozHunspellDirProvider::kContractID,
-        mozHunspellDirProviderConstructor,
-        mozHunspellDirProvider::Register,
-        mozHunspellDirProvider::Unregister
-    },
+NS_DEFINE_NAMED_CID(MOZ_HUNSPELL_CID);
+NS_DEFINE_NAMED_CID(HUNSPELLDIRPROVIDER_CID);
 #endif // MOZ_MACBROWSER
-  {
-      NULL,
-      NS_SPELLCHECKER_CID,
-      NS_SPELLCHECKER_CONTRACTID,
-      mozSpellCheckerConstructor
-  },
-  {
-      NULL,
-      MOZ_PERSONALDICTIONARY_CID,
-      MOZ_PERSONALDICTIONARY_CONTRACTID,
-      mozPersonalDictionaryConstructor
-  },
-  {
-      NULL,
-      MOZ_SPELLI18NMANAGER_CID,
-      MOZ_SPELLI18NMANAGER_CONTRACTID,
-      mozSpellI18NManagerConstructor
-  },
-  {
-      NULL,
-      MOZ_INLINESPELLCHECKER_CID,
-      MOZ_INLINESPELLCHECKER_CONTRACTID,
-      mozInlineSpellCheckerConstructor
-  }
+NS_DEFINE_NAMED_CID(NS_SPELLCHECKER_CID);
+NS_DEFINE_NAMED_CID(MOZ_PERSONALDICTIONARY_CID);
+NS_DEFINE_NAMED_CID(MOZ_SPELLI18NMANAGER_CID);
+NS_DEFINE_NAMED_CID(MOZ_INLINESPELLCHECKER_CID);
+
+static const mozilla::Module::CIDEntry kSpellcheckCIDs[] = {
+#ifdef MOZ_MACBROWSER
+    { &kMOZ_OSXSPELL_CID, false, NULL, mozOSXSpellConstructor },
+#else
+    { &kMOZ_HUNSPELL_CID, false, NULL, mozHunspellConstructor },
+    { &kHUNSPELLDIRPROVIDER_CID, false, NULL, mozHunspellDirProviderConstructor },
+#endif // MOZ_MACBROWSER
+    { &kNS_SPELLCHECKER_CID, false, NULL, mozSpellCheckerConstructor },
+    { &kMOZ_PERSONALDICTIONARY_CID, false, NULL, mozPersonalDictionaryConstructor },
+    { &kMOZ_SPELLI18NMANAGER_CID, false, NULL, mozSpellI18NManagerConstructor },
+    { &kMOZ_INLINESPELLCHECKER_CID, false, NULL, mozInlineSpellCheckerConstructor },
+    { NULL }
 };
 
-////////////////////////////////////////////////////////////////////////
-// Implement the NSGetModule() exported function for your module
-// and the entire implementation of the module object.
-//
-NS_IMPL_NSGETMODULE(mozSpellCheckerModule, components)
+static const mozilla::Module::ContractIDEntry kSpellcheckContracts[] = {
+#ifdef MOZ_MACBROWSER
+    { MOZ_OSXSPELL_CONTRACTID, &kMOZ_OSXSPELL_CID },
+#else
+    { MOZ_HUNSPELL_CONTRACTID, &kMOZ_HUNSPELL_CID },
+    { mozHunspellDirProvider::kContractID, &kHUNSPELLDIRPROVIDER_CID },
+#endif // MOZ_MACBROWSER
+    { NS_SPELLCHECKER_CONTRACTID, &kNS_SPELLCHECKER_CID },
+    { MOZ_PERSONALDICTIONARY_CONTRACTID, &kMOZ_PERSONALDICTIONARY_CID },
+    { MOZ_SPELLI18NMANAGER_CONTRACTID, &kMOZ_SPELLI18NMANAGER_CID },
+    { MOZ_INLINESPELLCHECKER_CONTRACTID, &kMOZ_INLINESPELLCHECKER_CID },
+    { NULL }
+};
+
+static const mozilla::Module::CategoryEntry kSpellcheckCategories[] = {
+#ifndef MOZ_MACBROWSER
+    { XPCOM_DIRECTORY_PROVIDER_CATEGORY, "spellcheck-directory-provider", mozHunspellDirProvider::kContractID },
+#endif
+    { NULL }
+};
+
+const mozilla::Module kSpellcheckModule = {
+    mozilla::Module::kVersion,
+    kSpellcheckCIDs,
+    kSpellcheckContracts,
+    kSpellcheckCategories
+};
+
+NSMODULE_DEFN(mozSpellCheckerModule) = &kSpellcheckModule;
--- a/extensions/universalchardet/src/xpcom/nsUniversalCharDetModule.cpp
+++ b/extensions/universalchardet/src/xpcom/nsUniversalCharDetModule.cpp
@@ -30,32 +30,31 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
+#include "mozilla/ModuleUtils.h"
+
 #include "nsICharsetAlias.h"
 #include "nsCOMPtr.h"
-#include "nsIModule.h"
 
 #include "nspr.h"
 #include "nsString.h"
 #include "pratom.h"
 #include "nsUniversalCharDetDll.h"
 #include "nsISupports.h"
 #include "nsICategoryManager.h"
 #include "nsIComponentManager.h"
-#include "nsIFactory.h"
 #include "nsIServiceManager.h"
 #include "nsICharsetDetector.h"
 #include "nsIStringCharsetDetector.h"
-#include "nsIGenericFactory.h"
 
 #include "nsUniversalDetector.h"
 #include "nsUdetXPCOMWrapper.h"
 
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUniversalXPCOMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUniversalXPCOMStringDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsJAPSMDetector)
@@ -65,156 +64,78 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsKOStrin
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHTWPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHTWStringPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHCNPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHCNStringPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsZHStringPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCJKPSMDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCJKStringPSMDetector)
-
-//----------------------------------------
-static NS_METHOD
-AddCategoryEntry(const char* category,
-                 const char* key,
-                 const char* value)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> 
-    categoryManager(do_GetService("@mozilla.org/categorymanager;1", &rv));
-  if (NS_FAILED(rv)) return rv;
-  
-  return categoryManager->AddCategoryEntry(category, key, value, 
-                                           PR_TRUE, PR_TRUE,
-                                           nsnull);
-}
-
-static NS_METHOD nsUniversalCharDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                          nsIFile *aPath,
-                                          const char *registryLocation,
-                                          const char *componentType,
-                                          const nsModuleComponentInfo *info)
-{ 
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "universal_charset_detector",
-                          info->mContractID);
-}
-
-static NS_METHOD
-nsJAPSMDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                nsIFile *aPath,
-                                const char *registryLocation,
-                                const char *componentType,
-                                const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "ja_parallel_state_machine",
-                          info->mContractID);
-}
-
-static NS_METHOD
-nsKOPSMDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                nsIFile *aPath,
-                                const char *registryLocation,
-                                const char *componentType,
-                                const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "ko_parallel_state_machine",
-                          info->mContractID);
-}
-
-static NS_METHOD
-nsZHTWPSMDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                  nsIFile *aPath,
-                                  const char *registryLocation,
-                                  const char *componentType,
-                                  const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "zhtw_parallel_state_machine",
-                          info->mContractID);
-}
+NS_DEFINE_NAMED_CID(NS_UNIVERSAL_DETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_UNIVERSAL_STRING_DETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_JA_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_JA_STRING_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_KO_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_KO_STRING_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_ZHTW_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_ZHTW_STRING_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_ZHCN_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_ZHCN_STRING_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_ZH_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_ZH_STRING_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_CJK_PSMDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_CJK_STRING_PSMDETECTOR_CID);
 
-static NS_METHOD
-nsZHCNPSMDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                  nsIFile *aPath,
-                                  const char *registryLocation,
-                                  const char *componentType,
-                                  const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "zhcn_parallel_state_machine",
-                          info->mContractID);
-}
-
-static NS_METHOD
-nsZHPSMDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                nsIFile *aPath,
-                                const char *registryLocation,
-                                const char *componentType,
-                                const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "zh_parallel_state_machine",
-                          info->mContractID);
-}
-
-static NS_METHOD
-nsCJKPSMDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                 nsIFile *aPath,
-                                 const char *registryLocation,
-                                 const char *componentType,
-                                 const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "cjk_parallel_state_machine",
-                          info->mContractID);
-}
-
-// Component Table
-static const nsModuleComponentInfo components[] = 
-{
-   { "Universal Charset Detector", NS_UNIVERSAL_DETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "universal_charset_detector", nsUniversalXPCOMDetectorConstructor, 
-    nsUniversalCharDetectorRegistrationProc, NULL},
-   { "Universal String Charset Detector", NS_UNIVERSAL_STRING_DETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "universal_charset_detector", nsUniversalXPCOMStringDetectorConstructor, 
-    NULL, NULL},
- { "PSM based Japanese Charset Detector", NS_JA_PSMDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "ja_parallel_state_machine", nsJAPSMDetectorConstructor, 
-    nsJAPSMDetectorRegistrationProc, NULL},
- { "PSM based Japanese String Charset Detector", NS_JA_STRING_PSMDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "ja_parallel_state_machine", nsJAStringPSMDetectorConstructor, 
-    NULL, NULL},
- { "PSM based Korean Charset Detector", NS_KO_PSMDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "ko_parallel_state_machine", nsKOPSMDetectorConstructor, 
-    nsKOPSMDetectorRegistrationProc, NULL},
- { "PSM based Korean String Charset Detector", NS_KO_STRING_PSMDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "ko_parallel_state_machine", nsKOStringPSMDetectorConstructor, 
-    NULL, NULL},
- { "PSM based Traditional Chinese Charset Detector", NS_ZHTW_PSMDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine", nsZHTWPSMDetectorConstructor, 
-    nsZHTWPSMDetectorRegistrationProc, NULL},
- { "PSM based Traditional Chinese String Charset Detector", NS_ZHTW_STRING_PSMDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine", nsZHTWStringPSMDetectorConstructor, 
-    NULL, NULL},
- { "PSM based Simplified Chinese Charset Detector", NS_ZHCN_PSMDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine", nsZHCNPSMDetectorConstructor, 
-    nsZHCNPSMDetectorRegistrationProc, NULL},
- { "PSM based Simplified Chinese String Charset Detector", NS_ZHCN_STRING_PSMDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine", nsZHCNStringPSMDetectorConstructor, 
-    NULL, NULL},
- { "PSM based Chinese Charset Detector", NS_ZH_PSMDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "zh_parallel_state_machine", nsZHPSMDetectorConstructor, 
-    nsZHPSMDetectorRegistrationProc, NULL},
- { "PSM based Chinese String Charset Detector", NS_ZH_STRING_PSMDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "zh_parallel_state_machine", nsZHStringPSMDetectorConstructor, 
-    NULL, NULL},
- { "PSM based CJK Charset Detector", NS_CJK_PSMDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine", nsCJKPSMDetectorConstructor, 
-    nsCJKPSMDetectorRegistrationProc, NULL},
- { "PSM based CJK String Charset Detector", NS_CJK_STRING_PSMDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine", nsCJKStringPSMDetectorConstructor, 
-    NULL, NULL},
+static const mozilla::Module::CIDEntry kChardetCIDs[] = {
+  { &kNS_UNIVERSAL_DETECTOR_CID, false, NULL, nsUniversalXPCOMDetectorConstructor },
+  { &kNS_UNIVERSAL_STRING_DETECTOR_CID, false, NULL, nsUniversalXPCOMStringDetectorConstructor },
+  { &kNS_JA_PSMDETECTOR_CID, false, NULL, nsJAPSMDetectorConstructor },
+  { &kNS_JA_STRING_PSMDETECTOR_CID, false, NULL, nsJAStringPSMDetectorConstructor },
+  { &kNS_KO_PSMDETECTOR_CID, false, NULL, nsKOPSMDetectorConstructor },
+  { &kNS_KO_STRING_PSMDETECTOR_CID, false, NULL, nsKOStringPSMDetectorConstructor },
+  { &kNS_ZHTW_PSMDETECTOR_CID, false, NULL, nsZHTWPSMDetectorConstructor },
+  { &kNS_ZHTW_STRING_PSMDETECTOR_CID, false, NULL, nsZHTWStringPSMDetectorConstructor },
+  { &kNS_ZHCN_PSMDETECTOR_CID, false, NULL, nsZHCNPSMDetectorConstructor },
+  { &kNS_ZHCN_STRING_PSMDETECTOR_CID, false, NULL, nsZHCNStringPSMDetectorConstructor },
+  { &kNS_ZH_PSMDETECTOR_CID, false, NULL, nsZHPSMDetectorConstructor },
+  { &kNS_ZH_STRING_PSMDETECTOR_CID, false, NULL, nsZHStringPSMDetectorConstructor },
+  { &kNS_CJK_PSMDETECTOR_CID, false, NULL, nsCJKPSMDetectorConstructor },
+  { &kNS_CJK_STRING_PSMDETECTOR_CID, false, NULL, nsCJKStringPSMDetectorConstructor },
+  { NULL }
 };
 
-NS_IMPL_NSGETMODULE(nsUniversalCharDetModule, components)
+static const mozilla::Module::ContractIDEntry kChardetContracts[] = {
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "universal_charset_detector", &kNS_UNIVERSAL_DETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "universal_charset_detector", &kNS_UNIVERSAL_STRING_DETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "ja_parallel_state_machine", &kNS_JA_PSMDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "ja_parallel_state_machine", &kNS_JA_STRING_PSMDETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "ko_parallel_state_machine", &kNS_KO_PSMDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "ko_parallel_state_machine", &kNS_KO_STRING_PSMDETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine", &kNS_ZHTW_PSMDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine", &kNS_ZHTW_STRING_PSMDETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine", &kNS_ZHCN_PSMDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine", &kNS_ZHCN_STRING_PSMDETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "zh_parallel_state_machine", &kNS_ZH_PSMDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "zh_parallel_state_machine", &kNS_ZH_STRING_PSMDETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine", &kNS_CJK_PSMDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine", &kNS_CJK_STRING_PSMDETECTOR_CID },
+  { NULL }
+};
+
+static const mozilla::Module::CategoryEntry kChardetCategories[] = {
+  { NS_CHARSET_DETECTOR_CATEGORY, "universal_charset_detector", NS_CHARSET_DETECTOR_CONTRACTID_BASE "universal_charset_detector" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "ja_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "ja_parallel_state_machine" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "ko_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "ko_parallel_state_machine" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "zhtw_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhtw_parallel_state_machine" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "zhcn_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "zhcn_parallel_state_machine" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "zh_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "zh_parallel_state_machine" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "cjk_parallel_state_machine", NS_CHARSET_DETECTOR_CONTRACTID_BASE "cjk_parallel_state_machine" },
+  { NULL }
+};
+
+static const mozilla::Module kChardetModule = {
+  mozilla::Module::kVersion,
+  kChardetCIDs,
+  kChardetContracts,
+  kChardetCategories
+};
+
+NSMODULE_DEFN(nsUniversalCharDetModule) = &kChardetModule;
--- a/gfx/public/nsITheme.h
+++ b/gfx/public/nsITheme.h
@@ -166,11 +166,11 @@ public:
     * Should we insert a dropmarker inside of combobox button?
    */
   virtual PRBool ThemeNeedsComboboxDropmarker()=0;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsITheme, NS_ITHEME_IID)
 
 // Creator function
-extern NS_METHOD NS_NewNativeTheme(nsISupports *aOuter, REFNSIID aIID, void **aResult);
+extern nsresult NS_NewNativeTheme(nsISupports *aOuter, REFNSIID aIID, void **aResult);
 
 #endif
--- a/gfx/src/thebes/nsThebesGfxFactory.cpp
+++ b/gfx/src/thebes/nsThebesGfxFactory.cpp
@@ -31,18 +31,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
-#include "nsIModule.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsCOMPtr.h"
 #include "nsGfxCIID.h"
 
 #include "nsScriptableRegion.h"
 
 #include "nsThebesDeviceContext.h"
 #include "nsThebesRenderingContext.h"
 #include "nsThebesRegion.h"
@@ -51,17 +50,18 @@
 #include "gfxPlatform.h"
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsThebesFontMetrics)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsThebesDeviceContext)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsThebesRenderingContext)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsThebesRegion)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsThebesFontEnumerator)
 
-static NS_IMETHODIMP nsScriptableRegionConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
+static nsresult
+nsScriptableRegionConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
 {
   nsresult rv;
 
   nsIScriptableRegion *inst = nsnull;
 
   if ( !aResult )
   {
     rv = NS_ERROR_NULL_POINTER;
@@ -92,51 +92,59 @@ static NS_IMETHODIMP nsScriptableRegionC
   // reference - we don't want this to go out of scope early!
   scriptableRgn = nsnull;
   rv = inst->QueryInterface(aIID, aResult);
   NS_RELEASE(inst);
 
   return rv;
 }
 
-static const nsModuleComponentInfo components[] =
-{
-  { "Thebes nsFontMetrics",
-    NS_FONT_METRICS_CID,
-    "@mozilla.org/gfx/fontmetrics;1",
-    nsThebesFontMetricsConstructor },
-  { "Thebes Font Enumerator",
-    NS_FONT_ENUMERATOR_CID,
-    "@mozilla.org/gfx/fontenumerator;1",
-    nsThebesFontEnumeratorConstructor },
-  { "Thebes Device Context",
-    NS_DEVICE_CONTEXT_CID,
-    "@mozilla.org/gfx/devicecontext;1",
-    nsThebesDeviceContextConstructor },
-  { "Thebes Rendering Context",
-    NS_RENDERING_CONTEXT_CID,
-    "@mozilla.org/gfx/renderingcontext;1",
-    nsThebesRenderingContextConstructor },
-  { "Thebes Region",
-    NS_REGION_CID,
-    "@mozilla.org/gfx/region/nsThebes;1",
-    nsThebesRegionConstructor },
-  { "Scriptable Region",
-    NS_SCRIPTABLE_REGION_CID,
-    "@mozilla.org/gfx/region;1",
-    nsScriptableRegionConstructor },
+NS_DEFINE_NAMED_CID(NS_FONT_METRICS_CID);
+NS_DEFINE_NAMED_CID(NS_FONT_ENUMERATOR_CID);
+NS_DEFINE_NAMED_CID(NS_DEVICE_CONTEXT_CID);
+NS_DEFINE_NAMED_CID(NS_RENDERING_CONTEXT_CID);
+NS_DEFINE_NAMED_CID(NS_REGION_CID);
+NS_DEFINE_NAMED_CID(NS_SCRIPTABLE_REGION_CID);
+
+static const mozilla::Module::CIDEntry kThebesCIDs[] = {
+    { &kNS_FONT_METRICS_CID, false, NULL, nsThebesFontMetricsConstructor },
+    { &kNS_FONT_ENUMERATOR_CID, false, NULL, nsThebesFontEnumeratorConstructor },
+    { &kNS_DEVICE_CONTEXT_CID, false, NULL, nsThebesDeviceContextConstructor },
+    { &kNS_RENDERING_CONTEXT_CID, false, NULL, nsThebesRenderingContextConstructor },
+    { &kNS_REGION_CID, false, NULL, nsThebesRegionConstructor },
+    { &kNS_SCRIPTABLE_REGION_CID, false, NULL, nsScriptableRegionConstructor },
+    { NULL }
+};
+
+static const mozilla::Module::ContractIDEntry kThebesContracts[] = {
+    { "@mozilla.org/gfx/fontmetrics;1", &kNS_FONT_METRICS_CID },
+    { "@mozilla.org/gfx/fontenumerator;1", &kNS_FONT_ENUMERATOR_CID },
+    { "@mozilla.org/gfx/devicecontext;1", &kNS_DEVICE_CONTEXT_CID },
+    { "@mozilla.org/gfx/renderingcontext;1", &kNS_RENDERING_CONTEXT_CID },
+    { "@mozilla.org/gfx/region/nsThebes;1", &kNS_REGION_CID },
+    { "@mozilla.org/gfx/region;1", &kNS_SCRIPTABLE_REGION_CID },
+    { NULL }
 };
 
 static nsresult
-nsThebesGfxModuleCtor(nsIModule *self)
+nsThebesGfxModuleCtor()
 {
     return gfxPlatform::Init();
 }
 
 static void
-nsThebesGfxModuleDtor(nsIModule *self)
+nsThebesGfxModuleDtor()
 {
     nsThebesDeviceContext::Shutdown();
     gfxPlatform::Shutdown();
 }
 
-NS_IMPL_NSGETMODULE_WITH_CTOR_DTOR(nsGfxModule, components,
-                                   nsThebesGfxModuleCtor, nsThebesGfxModuleDtor)
+static const mozilla::Module kThebesModule = {
+    mozilla::Module::kVersion,
+    kThebesCIDs,
+    kThebesContracts,
+    NULL,
+    NULL,
+    nsThebesGfxModuleCtor,
+    nsThebesGfxModuleDtor
+};
+
+NSMODULE_DEFN(nsGfxModule) = &kThebesModule;
--- a/intl/build/nsI18nModule.cpp
+++ b/intl/build/nsI18nModule.cpp
@@ -30,17 +30,17 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsCOMPtr.h"
 #include "nsICategoryManager.h"
 #include "nsIServiceManager.h"
 
 // lwbrk
 #include "nsLWBrkConstructors.h"
 #include "nsSemanticUnitScanner.h"
 
@@ -51,124 +51,129 @@
 #include "nsStrBundleConstructors.h"
 
 // locale
 #include "nsLocaleConstructors.h"
 
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSemanticUnitScanner)
 
-static const nsModuleComponentInfo components[] =
-{
- // lwbrk
-  { "Line Breaker", NS_LBRK_CID, 
-    NS_LBRK_CONTRACTID, nsJISx4051LineBreakerConstructor},
-  { "Word Breaker", NS_WBRK_CID,
-    NS_WBRK_CONTRACTID, nsSampleWordBreakerConstructor},
-  { "Semantic Unit Scanner", NS_SEMANTICUNITSCANNER_CID,
-    NS_SEMANTICUNITSCANNER_CONTRACTID, nsSemanticUnitScannerConstructor},
-
- // unicharutil
-  { "Unichar Utility", NS_UNICHARUTIL_CID, 
-      NS_UNICHARUTIL_CONTRACTID, nsCaseConversionImp2Constructor},
-  { "Unichar Category Table", NS_UNICHARCATEGORY_CID, 
-      NS_UNICHARCATEGORY_CONTRACTID, nsCategoryImpConstructor},
-  { "Unicode To Entity Converter", NS_ENTITYCONVERTER_CID, 
-      NS_ENTITYCONVERTER_CONTRACTID, nsEntityConverterConstructor },
-  { "Unicode To Charset Converter", NS_SAVEASCHARSET_CID, 
-      NS_SAVEASCHARSET_CONTRACTID, nsSaveAsCharsetConstructor},
-  { "Japanese Hankaku To Zenkaku", NS_HANKAKUTOZENKAKU_CID, 
-      NS_HANKAKUTOZENKAKU_CONTRACTID, CreateNewHankakuToZenkaku},
-  { "Unicode Normlization", NS_UNICODE_NORMALIZER_CID, 
-      NS_UNICODE_NORMALIZER_CONTRACTID,  nsUnicodeNormalizerConstructor},
-
-
- // strres
-  { "String Bundle", NS_STRINGBUNDLESERVICE_CID, NS_STRINGBUNDLE_CONTRACTID,
-    nsStringBundleServiceConstructor},
-  { "String Textfile Overrides", NS_STRINGBUNDLETEXTOVERRIDE_CID,
-    NS_STRINGBUNDLETEXTOVERRIDE_CONTRACTID,
-    nsStringBundleTextOverrideConstructor },
-
- // locale
-  { "nsLocaleService component",
-    NS_LOCALESERVICE_CID,
-    NS_LOCALESERVICE_CONTRACTID,
-    CreateLocaleService },
-  { "Collation factory",
-    NS_COLLATIONFACTORY_CID,
-    NS_COLLATIONFACTORY_CONTRACTID,
-    nsCollationFactoryConstructor },
-  { "Scriptable Date Format",
-    NS_SCRIPTABLEDATEFORMAT_CID,
-    NS_SCRIPTABLEDATEFORMAT_CONTRACTID,
-    NS_NewScriptableDateFormat },
-  { "Language Atom Service",
-    NS_LANGUAGEATOMSERVICE_CID,
-    NS_LANGUAGEATOMSERVICE_CONTRACTID,
-    nsLanguageAtomServiceConstructor },
- 
-#ifdef XP_WIN 
-  { "Platform locale",
-    NS_WIN32LOCALE_CID,
-    NS_WIN32LOCALE_CONTRACTID,
-    nsIWin32LocaleImplConstructor },
-  { "Collation",
-    NS_COLLATION_CID,
-    NS_COLLATION_CONTRACTID,
-    nsCollationWinConstructor },
-  { "Date/Time formatter",
-    NS_DATETIMEFORMAT_CID,
-    NS_DATETIMEFORMAT_CONTRACTID,
-    nsDateTimeFormatWinConstructor },
+NS_DEFINE_NAMED_CID(NS_LBRK_CID);
+NS_DEFINE_NAMED_CID(NS_WBRK_CID);
+NS_DEFINE_NAMED_CID(NS_SEMANTICUNITSCANNER_CID);
+NS_DEFINE_NAMED_CID(NS_UNICHARUTIL_CID);
+NS_DEFINE_NAMED_CID(NS_UNICHARCATEGORY_CID);
+NS_DEFINE_NAMED_CID(NS_ENTITYCONVERTER_CID);
+NS_DEFINE_NAMED_CID(NS_SAVEASCHARSET_CID);
+NS_DEFINE_NAMED_CID(NS_HANKAKUTOZENKAKU_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODE_NORMALIZER_CID);
+NS_DEFINE_NAMED_CID(NS_STRINGBUNDLESERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_STRINGBUNDLETEXTOVERRIDE_CID);
+NS_DEFINE_NAMED_CID(NS_LOCALESERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_COLLATIONFACTORY_CID);
+NS_DEFINE_NAMED_CID(NS_SCRIPTABLEDATEFORMAT_CID);
+NS_DEFINE_NAMED_CID(NS_LANGUAGEATOMSERVICE_CID);
+#ifdef XP_WIN
+NS_DEFINE_NAMED_CID(NS_WIN32LOCALE_CID);
+NS_DEFINE_NAMED_CID(NS_COLLATION_CID);
+NS_DEFINE_NAMED_CID(NS_DATETIMEFORMAT_CID);
 #endif
- 
 #ifdef USE_UNIX_LOCALE
-  { "Platform locale",
-    NS_POSIXLOCALE_CID,
-    NS_POSIXLOCALE_CONTRACTID,
-    nsPosixLocaleConstructor },
-
-  { "Collation",
-    NS_COLLATION_CID,
-    NS_COLLATION_CONTRACTID,
-    nsCollationUnixConstructor },
-
-  { "Date/Time formatter",
-    NS_DATETIMEFORMAT_CID,
-    NS_DATETIMEFORMAT_CONTRACTID,
-    nsDateTimeFormatUnixConstructor },
+NS_DEFINE_NAMED_CID(NS_POSIXLOCALE_CID);
+NS_DEFINE_NAMED_CID(NS_COLLATION_CID);
+NS_DEFINE_NAMED_CID(NS_DATETIMEFORMAT_CID);
+#endif
+#ifdef USE_MAC_LOCALE
+NS_DEFINE_NAMED_CID(NS_MACLOCALE_CID);
+NS_DEFINE_NAMED_CID(NS_COLLATION_CID);
+NS_DEFINE_NAMED_CID(NS_DATETIMEFORMAT_CID);
+#endif
+#ifdef XP_OS2
+NS_DEFINE_NAMED_CID(NS_OS2LOCALE_CID);
+NS_DEFINE_NAMED_CID(NS_COLLATION_CID);
+NS_DEFINE_NAMED_CID(NS_DATETIMEFORMAT_CID);
 #endif
 
-#ifdef USE_MAC_LOCALE
-  { "Mac locale",
-    NS_MACLOCALE_CID,
-    NS_MACLOCALE_CONTRACTID,
-    nsMacLocaleConstructor },
-  { "Collation",
-    NS_COLLATION_CID,
-    NS_COLLATION_CONTRACTID,
-    nsCollationMacUCConstructor },
-  { "Date/Time formatter",
-    NS_DATETIMEFORMAT_CID,
-    NS_DATETIMEFORMAT_CONTRACTID,
-    nsDateTimeFormatMacConstructor },
+static const mozilla::Module::CIDEntry kIntlCIDs[] = {
+    { &kNS_LBRK_CID, false, NULL, nsJISx4051LineBreakerConstructor },
+    { &kNS_WBRK_CID, false, NULL, nsSampleWordBreakerConstructor },
+    { &kNS_SEMANTICUNITSCANNER_CID, false, NULL, nsSemanticUnitScannerConstructor },
+    { &kNS_UNICHARUTIL_CID, false, NULL, nsCaseConversionImp2Constructor },
+    { &kNS_UNICHARCATEGORY_CID, false, NULL, nsCategoryImpConstructor },
+    { &kNS_ENTITYCONVERTER_CID, false, NULL, nsEntityConverterConstructor },
+    { &kNS_SAVEASCHARSET_CID, false, NULL, nsSaveAsCharsetConstructor },
+    { &kNS_HANKAKUTOZENKAKU_CID, false, NULL, CreateNewHankakuToZenkaku },
+    { &kNS_UNICODE_NORMALIZER_CID, false, NULL, nsUnicodeNormalizerConstructor },
+    { &kNS_STRINGBUNDLESERVICE_CID, false, NULL, nsStringBundleServiceConstructor },
+    { &kNS_STRINGBUNDLETEXTOVERRIDE_CID, false, NULL, nsStringBundleTextOverrideConstructor },
+    { &kNS_LOCALESERVICE_CID, false, NULL, CreateLocaleService },
+    { &kNS_COLLATIONFACTORY_CID, false, NULL, nsCollationFactoryConstructor },
+    { &kNS_SCRIPTABLEDATEFORMAT_CID, false, NULL, NS_NewScriptableDateFormat },
+    { &kNS_LANGUAGEATOMSERVICE_CID, false, NULL, nsLanguageAtomServiceConstructor },
+#ifdef XP_WIN
+    { &kNS_WIN32LOCALE_CID, false, NULL, nsIWin32LocaleImplConstructor },
+    { &kNS_COLLATION_CID, false, NULL, nsCollationWinConstructor },
+    { &kNS_DATETIMEFORMAT_CID, false, NULL, nsDateTimeFormatWinConstructor },
 #endif
-
+#ifdef USE_UNIX_LOCALE
+    { &kNS_POSIXLOCALE_CID, false, NULL, nsPosixLocaleConstructor },
+    { &kNS_COLLATION_CID, false, NULL, nsCollationUnixConstructor },
+    { &kNS_DATETIMEFORMAT_CID, false, NULL, nsDateTimeFormatUnixConstructor },
+#endif
+#ifdef USE_MAC_LOCALE
+    { &kNS_MACLOCALE_CID, false, NULL, nsMacLocaleConstructor },
+    { &kNS_COLLATION_CID, false, NULL, nsCollationMacUCConstructor },
+    { &kNS_DATETIMEFORMAT_CID, false, NULL, nsDateTimeFormatMacConstructor },
+#endif
 #ifdef XP_OS2
-  { "OS/2 locale",
-    NS_OS2LOCALE_CID,
-    NS_OS2LOCALE_CONTRACTID,
-    nsOS2LocaleConstructor },
-  { "Collation",
-    NS_COLLATION_CID,
-    NS_COLLATION_CONTRACTID,
-    nsCollationOS2Constructor },
-  { "Date/Time formatter",
-    NS_DATETIMEFORMAT_CID,
-    NS_DATETIMEFORMAT_CONTRACTID,
-    nsDateTimeFormatOS2Constructor },
+    { &kNS_OS2LOCALE_CID, false, NULL, nsOS2LocaleConstructor },
+    { &kNS_COLLATION_CID, false, NULL, nsCollationOS2Constructor },
+    { &kNS_DATETIMEFORMAT_CID, false, NULL, nsDateTimeFormatOS2Constructor },
 #endif
-      
+    { NULL }
 };
 
+static const mozilla::Module::ContractIDEntry kIntlContracts[] = {
+    { NS_LBRK_CONTRACTID, &kNS_LBRK_CID },
+    { NS_WBRK_CONTRACTID, &kNS_WBRK_CID },
+    { NS_SEMANTICUNITSCANNER_CONTRACTID, &kNS_SEMANTICUNITSCANNER_CID },
+    { NS_UNICHARUTIL_CONTRACTID, &kNS_UNICHARUTIL_CID },
+    { NS_UNICHARCATEGORY_CONTRACTID, &kNS_UNICHARCATEGORY_CID },
+    { NS_ENTITYCONVERTER_CONTRACTID, &kNS_ENTITYCONVERTER_CID },
+    { NS_SAVEASCHARSET_CONTRACTID, &kNS_SAVEASCHARSET_CID },
+    { NS_HANKAKUTOZENKAKU_CONTRACTID, &kNS_HANKAKUTOZENKAKU_CID },
+    { NS_UNICODE_NORMALIZER_CONTRACTID, &kNS_UNICODE_NORMALIZER_CID },
+    { NS_STRINGBUNDLE_CONTRACTID, &kNS_STRINGBUNDLESERVICE_CID },
+    { NS_STRINGBUNDLETEXTOVERRIDE_CONTRACTID, &kNS_STRINGBUNDLETEXTOVERRIDE_CID },
+    { NS_LOCALESERVICE_CONTRACTID, &kNS_LOCALESERVICE_CID },
+    { NS_COLLATIONFACTORY_CONTRACTID, &kNS_COLLATIONFACTORY_CID },
+    { NS_SCRIPTABLEDATEFORMAT_CONTRACTID, &kNS_SCRIPTABLEDATEFORMAT_CID },
+    { NS_LANGUAGEATOMSERVICE_CONTRACTID, &kNS_LANGUAGEATOMSERVICE_CID },
+#ifdef XP_WIN
+    { NS_WIN32LOCALE_CONTRACTID, &kNS_WIN32LOCALE_CID },
+    { NS_COLLATION_CONTRACTID, &kNS_COLLATION_CID },
+    { NS_DATETIMEFORMAT_CONTRACTID, &kNS_DATETIMEFORMAT_CID },
+#endif
+#ifdef USE_UNIX_LOCALE
+    { NS_POSIXLOCALE_CONTRACTID, &kNS_POSIXLOCALE_CID },
+    { NS_COLLATION_CONTRACTID, &kNS_COLLATION_CID },
+    { NS_DATETIMEFORMAT_CONTRACTID, &kNS_DATETIMEFORMAT_CID },
+#endif
+#ifdef USE_MAC_LOCALE
+    { NS_MACLOCALE_CONTRACTID, &kNS_MACLOCALE_CID },
+    { NS_COLLATION_CONTRACTID, &kNS_COLLATION_CID },
+    { NS_DATETIMEFORMAT_CONTRACTID, &kNS_DATETIMEFORMAT_CID },
+#endif
+#ifdef XP_OS2
+    { NS_OS2LOCALE_CONTRACTID, &kNS_OS2LOCALE_CID },
+    { NS_COLLATION_CONTRACTID, &kNS_COLLATION_CID },
+    { NS_DATETIMEFORMAT_CONTRACTID, &kNS_DATETIMEFORMAT_CID },
+#endif
+    { NULL }
+};
 
-NS_IMPL_NSGETMODULE(nsI18nModule, components)
+static const mozilla::Module kIntlModule = {
+    mozilla::Module::kVersion,
+    kIntlCIDs,
+    kIntlContracts,
+};
+
+NSMODULE_DEFN(nsI18nModule) = &kIntlModule;
--- a/intl/chardet/src/nsChardetModule.cpp
+++ b/intl/chardet/src/nsChardetModule.cpp
@@ -1,9 +1,9 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
  * The contents of this file are subject to the Mozilla Public License Version
  * 1.1 (the "License"); you may not use this file except in compliance with
  * the License. You may obtain a copy of the License at
  * http://www.mozilla.org/MPL/
  *
@@ -30,142 +30,79 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsCOMPtr.h"
 #include "nsICategoryManager.h"
 #include "nsIServiceManager.h"
 
 #include "nsCharDetConstructors.h"
 
-
-static NS_METHOD
-AddCategoryEntry(const char* category,
-                 const char* key,
-                 const char* value)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> 
-    categoryManager(do_GetService("@mozilla.org/categorymanager;1", &rv));
-  if (NS_FAILED(rv)) return rv;
-  
-  return categoryManager->AddCategoryEntry(category, key, value, 
-                                           PR_TRUE, PR_TRUE,
-                                           nsnull);
-}
-
-static NS_METHOD
-DeleteCategoryEntry(const char* category,
-                    const char* key)
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> 
-    categoryManager(do_GetService("@mozilla.org/categorymanager;1", &rv));
-  if (NS_FAILED(rv)) return rv;
-  
-  return categoryManager->DeleteCategoryEntry(category, key, PR_TRUE);
-}
-
-static NS_METHOD
-nsMetaCharsetObserverRegistrationProc(nsIComponentManager *aCompMgr,
-                                      nsIFile *aPath,
-                                      const char *registryLocation,
-                                      const char *componentType,
-                                      const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry("parser-service-category", 
-                          "Meta Charset Service",
-                          NS_META_CHARSET_CONTRACTID);
-}
-
-static NS_METHOD
-nsMetaCharsetObserverUnegistrationProc(nsIComponentManager *aCompMgr,
-                                       nsIFile *aPath,
-                                       const char *registryLocation,
-                                       const nsModuleComponentInfo *info)
-{
-  return DeleteCategoryEntry("parser-service-category",
-                             "Meta Charset Service");
-}
-
-static NS_METHOD
-nsDetectionAdaptorRegistrationProc(nsIComponentManager *aCompMgr,
-                                   nsIFile *aPath,
-                                   const char *registryLocation,
-                                   const char *componentType,
-                                   const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY, "off", "off");
-}
+NS_DEFINE_NAMED_CID(NS_META_CHARSET_CID);
+NS_DEFINE_NAMED_CID(NS_DOCUMENTCHARSETINFO_CID);
+NS_DEFINE_NAMED_CID(NS_XML_ENCODING_CID);
+NS_DEFINE_NAMED_CID(NS_CHARSET_DETECTION_ADAPTOR_CID);
+NS_DEFINE_NAMED_CID(NS_RU_PROBDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_UK_PROBDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_RU_STRING_PROBDETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_UK_STRING_PROBDETECTOR_CID);
+#ifdef INCLUDE_DBGDETECTOR
+NS_DEFINE_NAMED_CID(NS_1STBLKDBG_DETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_2NDBLKDBG_DETECTOR_CID);
+NS_DEFINE_NAMED_CID(NS_LASTBLKDBG_DETECTOR_CID);
+#endif /* INCLUDE_DBGDETECTOR */
 
-static NS_METHOD
-nsRUProbDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                 nsIFile *aPath,
-                                 const char *registryLocation,
-                                 const char *componentType,
-                                 const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "ruprob",
-                          info->mContractID);
-}
-
-static NS_METHOD
-nsUKProbDetectorRegistrationProc(nsIComponentManager *aCompMgr,
-                                 nsIFile *aPath,
-                                 const char *registryLocation,
-                                 const char *componentType,
-                                 const nsModuleComponentInfo *info)
-{
-  return AddCategoryEntry(NS_CHARSET_DETECTOR_CATEGORY,
-                          "ukprob",
-                          info->mContractID);
-}
-
-
-static const nsModuleComponentInfo components[] =
-{
- { "Meta Charset", NS_META_CHARSET_CID, 
-    NS_META_CHARSET_CONTRACTID, nsMetaCharsetObserverConstructor, 
-    nsMetaCharsetObserverRegistrationProc, nsMetaCharsetObserverUnegistrationProc,
-    NULL},
- { "Document Charset Info", NS_DOCUMENTCHARSETINFO_CID, 
-    NS_DOCUMENTCHARSETINFO_CONTRACTID, nsDocumentCharsetInfoConstructor, 
-    NULL, NULL},
- { "XML Encoding", NS_XML_ENCODING_CID, 
-    NS_XML_ENCODING_CONTRACTID, nsXMLEncodingObserverConstructor, 
-    NULL, NULL},
- { "Charset Detection Adaptor", NS_CHARSET_DETECTION_ADAPTOR_CID, 
-    NS_CHARSET_DETECTION_ADAPTOR_CONTRACTID, nsDetectionAdaptorConstructor, 
-    nsDetectionAdaptorRegistrationProc, NULL},
- { "Probability based Russian Charset Detector", NS_RU_PROBDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "ruprob", nsRUProbDetectorConstructor, 
-    nsRUProbDetectorRegistrationProc, NULL},
- { "Probability based Ukrainian Charset Detector", NS_UK_PROBDETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "ukprob", nsUKProbDetectorConstructor, 
-    nsUKProbDetectorRegistrationProc, NULL},
- { "Probability based Russian String Charset Detector", NS_RU_STRING_PROBDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "ruprob", nsRUStringProbDetectorConstructor, 
-    NULL, NULL},
- { "Probability based Ukrainian String Charset Detector", NS_UK_STRING_PROBDETECTOR_CID, 
-    NS_STRCDETECTOR_CONTRACTID_BASE "ukprob", nsUKStringProbDetectorConstructor, 
-   NULL, NULL},
+static const mozilla::Module::CIDEntry kChardetCIDs[] = {
+  { &kNS_META_CHARSET_CID, false, NULL, nsMetaCharsetObserverConstructor },
+  { &kNS_DOCUMENTCHARSETINFO_CID, false, NULL, nsDocumentCharsetInfoConstructor },
+  { &kNS_XML_ENCODING_CID, false, NULL, nsXMLEncodingObserverConstructor },
+  { &kNS_CHARSET_DETECTION_ADAPTOR_CID, false, NULL, nsDetectionAdaptorConstructor },
+  { &kNS_RU_PROBDETECTOR_CID, false, NULL, nsRUProbDetectorConstructor },
+  { &kNS_UK_PROBDETECTOR_CID, false, NULL, nsUKProbDetectorConstructor },
+  { &kNS_RU_STRING_PROBDETECTOR_CID, false, NULL, nsRUStringProbDetectorConstructor },
+  { &kNS_UK_STRING_PROBDETECTOR_CID, false, NULL, nsUKStringProbDetectorConstructor },
 #ifdef INCLUDE_DBGDETECTOR
- { "Debugging Detector 1st block", NS_1STBLKDBG_DETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "1stblkdbg", ns1stBlkDbgDetectorConstructor, 
-    NULL, NULL},
- { "Debugging Detector 2nd block", NS_2NDBLKDBG_DETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "2ndblkdbg", ns2ndBlkDbgDetectorConstructor, 
-    NULL, NULL},
- { "Debugging Detector Last block", NS_LASTBLKDBG_DETECTOR_CID, 
-    NS_CHARSET_DETECTOR_CONTRACTID_BASE "lastblkdbg", nsLastBlkDbgDetectorConstructor, 
-    NULL, NULL},
+  { &kNS_1STBLKDBG_DETECTOR_CID, false, NULL, ns1stBlkDbgDetectorConstructor },
+  { &kNS_2NDBLKDBG_DETECTOR_CID, false, NULL, ns2ndBlkDbgDetectorConstructor },
+  { &kNS_LASTBLKDBG_DETECTOR_CID, false, NULL, nsLastBlkDbgDetectorConstructor },
 #endif /* INCLUDE_DBGDETECTOR */
+  { NULL }
 };
 
+static const mozilla::Module::ContractIDEntry kChardetContracts[] = {
+  { NS_META_CHARSET_CONTRACTID, &kNS_META_CHARSET_CID },
+  { NS_DOCUMENTCHARSETINFO_CONTRACTID, &kNS_DOCUMENTCHARSETINFO_CID },
+  { NS_XML_ENCODING_CONTRACTID, &kNS_XML_ENCODING_CID },
+  { NS_CHARSET_DETECTION_ADAPTOR_CONTRACTID, &kNS_CHARSET_DETECTION_ADAPTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "ruprob", &kNS_RU_PROBDETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "ukprob", &kNS_UK_PROBDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "ruprob", &kNS_RU_STRING_PROBDETECTOR_CID },
+  { NS_STRCDETECTOR_CONTRACTID_BASE "ukprob", &kNS_UK_STRING_PROBDETECTOR_CID },
+#ifdef INCLUDE_DBGDETECTOR
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "1stblkdbg", &kNS_1STBLKDBG_DETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "2ndblkdbg", &kNS_2NDBLKDBG_DETECTOR_CID },
+  { NS_CHARSET_DETECTOR_CONTRACTID_BASE "lastblkdbg", &kNS_LASTBLKDBG_DETECTOR_CID },
+#endif /* INCLUDE_DBGDETECTOR */
+  { NULL }
+};
 
-NS_IMPL_NSGETMODULE(nsChardetModule, components)
+static const mozilla::Module::CategoryEntry kChardetCategories[] = {
+  { "parser-service-category", "Meta Charset Service", NS_META_CHARSET_CONTRACTID },
+  { NS_CHARSET_DETECTOR_CATEGORY, "off", "off" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "ruprob", NS_CHARSET_DETECTOR_CONTRACTID_BASE "ruprob" },
+  { NS_CHARSET_DETECTOR_CATEGORY, "ukprob", NS_CHARSET_DETECTOR_CONTRACTID_BASE "ukprob" },
+  { NULL }
+};
+
+static const mozilla::Module kChardetModule = {
+  mozilla::Module::kVersion,
+  kChardetCIDs,
+  kChardetContracts,
+  kChardetCategories
+};
+
+NSMODULE_DEFN(nsChardetModule) = &kChardetModule;
--- a/intl/locale/idl/nsIScriptableDateFormat.idl
+++ b/intl/locale/idl/nsIScriptableDateFormat.idl
@@ -64,17 +64,17 @@ enum
 %{C++
 // Define Contractid and CID
 // {2EA2E7D0-4095-11d3-9144-006008A6EDF6}
 #define NS_SCRIPTABLEDATEFORMAT_CID \
 { 0x2ea2e7d0, 0x4095, 0x11d3, { 0x91, 0x44, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }
 
 #define NS_SCRIPTABLEDATEFORMAT_CONTRACTID "@mozilla.org/intl/scriptabledateformat;1"
 
-extern NS_IMETHODIMP
+extern nsresult
 NS_NewScriptableDateFormat(nsISupports* aOuter, REFNSIID aIID, void** aResult);
 %}
 
 /**
  * Format date and time in a human readable format.
  */
 [scriptable, uuid(0c89efb0-1aae-11d3-9141-006008a6edf6)]
 interface nsIScriptableDateFormat : nsISupports
--- a/intl/locale/src/nsLocaleConstructors.h
+++ b/intl/locale/src/nsLocaleConstructors.h
@@ -36,17 +36,17 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef nsLocaleConstructors_h__
 #define nsLocaleConstructors_h__
 
 #include "nsCollationCID.h"
 #include "nsDateTimeFormatCID.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsILocaleService.h"
 #include "nsIScriptableDateFormat.h"
 #include "nsIServiceManager.h"
 #include "nsLanguageAtomService.h"
 #include "nsLocaleCID.h"
 
 #if defined(XP_MACOSX)
 #define USE_MAC_LOCALE
@@ -76,17 +76,17 @@
 
 #ifdef USE_UNIX_LOCALE
 #include "nsCollationUnix.h"
 #include "nsDateTimeFormatUnix.h"
 #include "nsPosixLocale.h"
 #endif
 
 #define NSLOCALE_MAKE_CTOR(ctor_, iface_, func_)          \
-static NS_IMETHODIMP                                      \
+static nsresult                                           \
 ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
 {                                                         \
   *aResult = nsnull;                                      \
   if (aOuter)                                             \
     return NS_ERROR_NO_AGGREGATION;                       \
   iface_* inst;                                           \
   nsresult rv = func_(&inst);                             \
   if (NS_SUCCEEDED(rv)) {                                 \
--- a/intl/locale/src/nsScriptableDateFormat.cpp
+++ b/intl/locale/src/nsScriptableDateFormat.cpp
@@ -156,17 +156,17 @@ NS_IMETHODIMP nsScriptableDateFormat::Fo
                                       prtime, mStringOut);
   }
   if (NS_SUCCEEDED(rv))
     *dateTimeString = ToNewUnicode(mStringOut);
 
   return rv;
 }
 
-NS_IMETHODIMP
+nsresult
 NS_NewScriptableDateFormat(nsISupports* aOuter, REFNSIID aIID, void** aResult)
 {
   if (aOuter)
     return NS_ERROR_NO_AGGREGATION;
 
   nsScriptableDateFormat* result = new nsScriptableDateFormat();
   if (! result)
     return NS_ERROR_OUT_OF_MEMORY;
--- a/intl/strres/src/nsStringBundle.cpp
+++ b/intl/strres/src/nsStringBundle.cpp
@@ -49,22 +49,20 @@
 #include "nsArrayEnumerator.h"
 #include "nscore.h"
 #include "nsHashtable.h"
 #include "nsMemory.h"
 #include "plstr.h"
 #include "nsNetUtil.h"
 #include "nsIURL.h"
 #include "nsIComponentManager.h"
-#include "nsIGenericFactory.h"
 #include "nsIMemory.h"
 #include "nsIObserverService.h"
 #include "pratom.h"
 #include "prmem.h"
-#include "nsIModule.h"
 #include "nsCOMArray.h"
 #include "nsAutoLock.h"
 #include "nsTextFormatter.h"
 #include "nsIErrorService.h"
 #include "nsITimelineService.h"
 #include "nsICategoryManager.h"
 
 #include "nsPrintfCString.h"
--- a/intl/uconv/public/nsEncoderDecoderUtils.h
+++ b/intl/uconv/public/nsEncoderDecoderUtils.h
@@ -46,116 +46,26 @@
   NS_ERROR_GENERATE_SUCCESS(NS_ERROR_MODULE_UCONV, 0x02)
 
 #define NS_UNICODEDECODER_NAME "Charset Decoders"
 #define NS_UNICODEENCODER_NAME "Charset Encoders"
 
 #define NS_DATA_BUNDLE_CATEGORY     "uconv-charset-data"
 #define NS_TITLE_BUNDLE_CATEGORY    "uconv-charset-titles"
 
-struct nsConverterRegistryInfo {
-  PRBool isEncoder;             // PR_TRUE = encoder, PR_FALSE = decoder
-  const char *charset;
-  nsCID cid;
-};
-
 #define NS_CONVERTER_REGISTRY_START \
-  static const nsConverterRegistryInfo gConverterRegistryInfo[] = {
+  static const mozilla::Module::CategoryEntry kUConvCategories[] = {
 
 #define NS_CONVERTER_REGISTRY_END \
+  { NULL } \
   };
 
-
-#define NS_IMPL_NSUCONVERTERREGSELF                                     \
-static NS_IMETHODIMP                                                    \
-nsUConverterRegSelf(nsIComponentManager *aCompMgr,                      \
-                    nsIFile *aPath,                                     \
-                    const char* registryLocation,                       \
-                    const char* componentType,                          \
-                    const nsModuleComponentInfo *info)                  \
-{                                                                       \
-  nsresult rv;                                                          \
-  nsCOMPtr<nsICategoryManager> catman =                                 \
-    do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);                  \
-  if (NS_FAILED(rv)) return rv;                                         \
-                                                                        \
-  nsXPIDLCString previous;                                              \
-  PRUint32 i;                                                           \
-  for (i=0; i<sizeof(gConverterRegistryInfo)/sizeof(gConverterRegistryInfo[0]); i++) { \
-    const nsConverterRegistryInfo* entry = &gConverterRegistryInfo[i];         \
-    const char *category;                                               \
-    const char *key;                                                    \
-                                                                        \
-    if (entry->isEncoder) {                                             \
-      category = NS_UNICODEENCODER_NAME;                                \
-    } else {                                                            \
-      category = NS_UNICODEDECODER_NAME;                                \
-    }                                                                   \
-    key = entry->charset;                                               \
-                                                                        \
-    rv = catman->AddCategoryEntry(category, key, "",                    \
-                                  PR_TRUE,                              \
-                                  PR_TRUE,                              \
-                                  getter_Copies(previous));             \
-  }                                                                     \
-  return rv;                                                            \
-} \
-static NS_IMETHODIMP \
-nsUConverterUnregSelf(nsIComponentManager *aCompMgr,                        \
-                      nsIFile *aPath,                                       \
-                      const char*,                                          \
-                      const nsModuleComponentInfo *info)                    \
-{ \
-  nsresult rv;                                                          \
-  nsCOMPtr<nsICategoryManager> catman =                                 \
-  do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);                    \
-  if (NS_FAILED(rv)) return rv;                                         \
-                                                                        \
-  nsXPIDLCString previous;                                              \
-  PRUint32 i;                                                           \
-  for (i=0; i<sizeof(gConverterRegistryInfo)/sizeof(gConverterRegistryInfo[0]); i++) { \
-    const nsConverterRegistryInfo* entry = &gConverterRegistryInfo[i];         \
-    const char *category;                                               \
-    const char *key;                                                    \
-                                                                        \
-    if (entry->isEncoder) {                                             \
-      category = NS_UNICODEDECODER_NAME;                                \
-    } else {                                                            \
-      category = NS_UNICODEENCODER_NAME;                                \
-    }                                                                   \
-    key = entry->charset;                                               \
-                                                                        \
-    rv = catman->DeleteCategoryEntry(category, key, PR_TRUE);           \
-  }                                                                     \
-  return rv;                                                            \
-}
-
-
 #define NS_UCONV_REG_UNREG_DECODER(_Charset, _CID)          \
-  {                                                         \
-    PR_FALSE,                                                \
-    _Charset,                                               \
-    _CID,                                                   \
-  },
+  { NS_UNICODEDECODER_NAME, _Charset, "" },
   
 #define NS_UCONV_REG_UNREG_ENCODER(_Charset, _CID)          \
-  {                                                         \
-    PR_TRUE,                                               \
-    _Charset,                                               \
-    _CID,                                                   \
-  }, 
+  { NS_UNICODEENCODER_NAME, _Charset, "" },
 
-  // this needs to be written out per some odd cpp behavior that
-  // I could not work around - the behavior is document in the cpp
-  // info page however, so I'm not the only one to hit this!
 #define NS_UCONV_REG_UNREG(_Charset, _DecoderCID, _EncoderCID) \
-  {                                                         \
-    PR_FALSE,                                               \
-    _Charset,                                               \
-    _DecoderCID,                                            \
-  },                                                        \
-  {                                                         \
-    PR_TRUE,                                                \
-    _Charset,                                               \
-    _EncoderCID,                                            \
-  },
-  
+  NS_UCONV_REG_UNREG_DECODER(_Charset, *) \
+  NS_UCONV_REG_UNREG_ENCODER(_Charset, *)
+
 #endif
--- a/intl/uconv/src/nsCP1252ToUnicode.cpp
+++ b/intl/uconv/src/nsCP1252ToUnicode.cpp
@@ -40,15 +40,15 @@
 
 //----------------------------------------------------------------------
 // Global functions and data [declaration]
 
 static const PRUint16 g_utMappingTable[] = {
 #include "cp1252.ut"
 };
 
-NS_METHOD
+nsresult
 nsCP1252ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
                              void **aResult) 
 {
   return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
                               aOuter, aIID, aResult);
 }
--- a/intl/uconv/src/nsCP1252ToUnicode.h
+++ b/intl/uconv/src/nsCP1252ToUnicode.h
@@ -48,13 +48,13 @@
 #define NS_CP1252TOUNICODE_CONTRACTID "@mozilla.org/intl/unicode/decoder;1?charset=windows-1252"
 
 /**
  * A character set converter from CP1252 to Unicode.
  *
  * @created         20/Apr/1999
  * @author  Catalin Rotaru [CATA]
  */
-NS_METHOD
+nsresult
 nsCP1252ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
                              void **aResult);
 
 #endif /* nsCP1252ToUnicode_h___ */
--- a/intl/uconv/src/nsCharsetConverterManager.cpp
+++ b/intl/uconv/src/nsCharsetConverterManager.cpp
@@ -50,16 +50,17 @@
 #include "prmem.h"
 #include "nsCRT.h"
 #include "nsTArray.h"
 #include "nsStringEnumerator.h"
 #include "nsThreadUtils.h"
 #include "mozilla/Services.h"
 
 #include "nsXPCOM.h"
+#include "nsComponentManagerUtils.h"
 #include "nsISupportsPrimitives.h"
 
 // just for CONTRACTIDs
 #include "nsCharsetConverterManager.h"
 
 #ifdef MOZ_USE_NATIVE_UCONV
 #include "nsNativeUConvService.h"
 #endif
@@ -79,40 +80,16 @@ nsCharsetConverterManager::nsCharsetConv
 }
 
 nsCharsetConverterManager::~nsCharsetConverterManager() 
 {
   NS_IF_RELEASE(mDataBundle);
   NS_IF_RELEASE(mTitleBundle);
 }
 
-nsresult nsCharsetConverterManager::RegisterConverterManagerData()
-{
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> catman = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-  if (NS_FAILED(rv))
-    return rv;
-
-  RegisterConverterCategory(catman, NS_TITLE_BUNDLE_CATEGORY,
-                            "chrome://global/locale/charsetTitles.properties");
-  RegisterConverterCategory(catman, NS_DATA_BUNDLE_CATEGORY,
-                            "resource://gre-resources/charsetData.properties");
-
-  return NS_OK;
-}
-
-nsresult
-nsCharsetConverterManager::RegisterConverterCategory(nsICategoryManager* catman,
-                                                     const char* aCategory,
-                                                     const char* aURL)
-{
-  return catman->AddCategoryEntry(aCategory, aURL, "",
-                                  PR_TRUE, PR_TRUE, nsnull);
-}
-
 nsresult nsCharsetConverterManager::LoadExtensibleBundle(
                                     const char* aCategory, 
                                     nsIStringBundle ** aResult)
 {
   nsCOMPtr<nsIStringBundleService> sbServ =
     mozilla::services::GetStringBundleService();
   if (!sbServ)
     return NS_ERROR_FAILURE;
--- a/intl/uconv/src/nsCharsetConverterManager.h
+++ b/intl/uconv/src/nsCharsetConverterManager.h
@@ -64,31 +64,23 @@ private:
 
 #ifdef MOZ_USE_NATIVE_UCONV
   nsCOMPtr<nsINativeUConvService> mNativeUC;
 #endif
 
   nsresult LoadExtensibleBundle(const char * aRegistryKey, 
       nsIStringBundle ** aResult);
 
-  static nsresult RegisterConverterCategory(nsICategoryManager*,
-                                            const char* aCategory,
-                                            const char* aURL);
-
   nsresult GetBundleValue(nsIStringBundle * aBundle,
                           const char * aName, 
                           const nsAFlatString& aProp, PRUnichar ** aResult);
   nsresult GetBundleValue(nsIStringBundle * aBundle,
                           const char * aName, 
                           const nsAFlatString& aProp, nsAString& aResult);
 
   nsresult GetList(const nsACString& aCategory,
                    const nsACString& aPrefix,
                    nsIUTF8StringEnumerator** aResult);
-
-public:
-  static nsresult RegisterConverterManagerData();
-
 };
 
 #endif // nsCharsetConverterManager_h__
 
 
--- a/intl/uconv/src/nsISO88591ToUnicode.cpp
+++ b/intl/uconv/src/nsISO88591ToUnicode.cpp
@@ -40,16 +40,16 @@
 
 //----------------------------------------------------------------------
 // Global functions and data [declaration]
 
 static const PRUint16 g_utMappingTable[] = {
 #include "cp1252.ut"
 };
 
-NS_METHOD
+nsresult
 nsISO88591ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
                                void **aResult) 
 {
   return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
                               aOuter, aIID, aResult);
 }
 
--- a/intl/uconv/src/nsISO88591ToUnicode.h
+++ b/intl/uconv/src/nsISO88591ToUnicode.h
@@ -48,13 +48,13 @@
 #define NS_ISO88591TOUNICODE_CONTRACTID "@mozilla.org/intl/unicode/decoder;1?charset=ISO-8859-1"
 
 /**
  * A character set converter from ISO88591 to Unicode.
  *
  * @created         23/Nov/1998
  * @author  Catalin Rotaru [CATA]
  */
-NS_METHOD
+nsresult
 nsISO88591ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
                                void **aResult);
 
 #endif /* nsISO88591ToUnicode_h___ */
--- a/intl/uconv/src/nsMacRomanToUnicode.cpp
+++ b/intl/uconv/src/nsMacRomanToUnicode.cpp
@@ -40,16 +40,16 @@
 
 //----------------------------------------------------------------------
 // Global functions and data [declaration]
 
 static const PRUint16 g_MacRomanMappingTable[] = {
 #include "macroman.ut"
 };
 
-NS_METHOD
+nsresult
 nsMacRomanToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
                                void **aResult)
 {
   return CreateOneByteDecoder((uMappingTable*) &g_MacRomanMappingTable,
                             aOuter, aIID, aResult);
 }
 
--- a/intl/uconv/src/nsMacRomanToUnicode.h
+++ b/intl/uconv/src/nsMacRomanToUnicode.h
@@ -51,13 +51,13 @@
 //  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_UCONV, 0x31)
 
 /**
  * A character set converter from MacRoman to Unicode.
  *
  * @created         05/Apr/1999
  * @author  Catalin Rotaru [CATA]
  */
-NS_METHOD
+nsresult
 nsMacRomanToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
                                void **aResult);
 
 #endif /* nsMacRomanToUnicode_h___ */
--- a/intl/uconv/src/nsScriptableUConv.cpp
+++ b/intl/uconv/src/nsScriptableUConv.cpp
@@ -41,16 +41,17 @@
 #include "nsString.h"
 #include "nsReadableUtils.h"
 #include "nsIServiceManager.h"
 #include "nsICharsetConverterManager.h"
 #include "nsIScriptableUConv.h"
 #include "nsScriptableUConv.h"
 #include "nsIStringStream.h"
 #include "nsCRT.h"
+#include "nsComponentManagerUtils.h"
 
 #include "nsIPlatformCharset.h"
 
 static PRInt32          gInstanceCount = 0;
 
 /* Implementation file */
 NS_IMPL_ISUPPORTS1(nsScriptableUnicodeConverter, nsIScriptableUnicodeConverter)
 
--- a/intl/uconv/src/nsUConvModule.cpp
+++ b/intl/uconv/src/nsUConvModule.cpp
@@ -33,18 +33,17 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 #include "nsCOMPtr.h"
 #include "nsCRT.h"
-#include "nsIModule.h"
-#include "nsIGenericFactory.h"
+#include "mozilla/ModuleUtils.h"
 #include "nsIComponentManager.h"
 #include "nsICategoryManager.h"
 #include "nsICharsetConverterManager.h"
 #include "nsEncoderDecoderUtils.h"
 #include "nsIUnicodeDecoder.h"
 #include "nsIUnicodeEncoder.h"
 #include "nsICharsetAlias.h"
 #include "nsIServiceManager.h"
@@ -397,21 +396,22 @@ NS_UCONV_REG_UNREG_ENCODER("x-koreanjamo
 
 // ucvcn
 NS_UCONV_REG_UNREG("GB2312", NS_GB2312TOUNICODE_CID, NS_UNICODETOGB2312_CID)
 NS_UCONV_REG_UNREG("windows-936", NS_CP936TOUNICODE_CID, NS_UNICODETOCP936_CID)
 NS_UCONV_REG_UNREG("x-gbk", NS_GBKTOUNICODE_CID, NS_UNICODETOGBK_CID)
 NS_UCONV_REG_UNREG("HZ-GB-2312", NS_HZTOUNICODE_CID, NS_UNICODETOHZ_CID)
 NS_UCONV_REG_UNREG("gb18030", NS_GB18030TOUNICODE_CID, NS_UNICODETOGB18030_CID)
 NS_UCONV_REG_UNREG_DECODER("ISO-2022-CN", NS_ISO2022CNTOUNICODE_CID)
+
+{ NS_TITLE_BUNDLE_CATEGORY, "chrome://global/locale/charsetTitles.properties", "" },
+{ NS_DATA_BUNDLE_CATEGORY, "resource://gre-resources/charsetData.properties", "" },
   
 NS_CONVERTER_REGISTRY_END
 
-NS_IMPL_NSUCONVERTERREGSELF
-
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF8)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ToUnicode)
 
 // ucvlatin
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF7ToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMUTF7ToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16ToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16BEToUnicode)
@@ -594,1039 +594,649 @@ const PRUint16 g_ufJohabJamoMapping[] ={
 
 #include "nsINativeUConvService.h"
 #include "nsNativeUConvService.h"
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(NativeUConvService)
 
 #endif // #ifndef MOZ_USE_NATIVE_UCONV
 
-
-NS_IMETHODIMP
-nsConverterManagerDataRegister(nsIComponentManager* aCompMgr,
-                                nsIFile* aPath,
-                                const char *aLocation,
-                                const char *aType,
-                                const nsModuleComponentInfo* aInfo)
-{
-  return nsCharsetConverterManager::RegisterConverterManagerData();
-}
-
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCharsetConverterManager)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextToSubURI)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ConverterService)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCharsetAlias2)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterInputStream)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterOutputStream)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPlatformCharset, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptableUnicodeConverter)
 
-static const nsModuleComponentInfo components[] = 
-{
-  { 
-    "Charset Conversion Manager", NS_ICHARSETCONVERTERMANAGER_CID,
-    NS_CHARSETCONVERTERMANAGER_CONTRACTID, 
-    nsCharsetConverterManagerConstructor,
-    nsConverterManagerDataRegister,
-  },
-  { 
-    "Charset Alias Information",  NS_CHARSETALIAS_CID,
-    NS_CHARSETALIAS_CONTRACTID, 
-    nsCharsetAlias2Constructor 
-  },
-  { 
-    "Text To Sub URI Helper", NS_TEXTTOSUBURI_CID,
-    NS_ITEXTTOSUBURI_CONTRACTID, 
-    nsTextToSubURIConstructor
-  },
-  { 
-    "Platform Charset Information", NS_PLATFORMCHARSET_CID,
-    NS_PLATFORMCHARSET_CONTRACTID, 
-    nsPlatformCharsetConstructor
-  },
-  { "Unicode converter input stream", NS_CONVERTERINPUTSTREAM_CID,              
-    NS_CONVERTERINPUTSTREAM_CONTRACTID, 
-    nsConverterInputStreamConstructor 
-  },   
-  { "Unicode converter output stream", NS_CONVERTEROUTPUTSTREAM_CID,
-    "@mozilla.org/intl/converter-output-stream;1",
-    nsConverterOutputStreamConstructor 
-  },   
-  { 
-    "Unicode Encoder / Decoder for Script", NS_ISCRIPTABLEUNICODECONVERTER_CID,
-    NS_ISCRIPTABLEUNICODECONVERTER_CONTRACTID, 
-    nsScriptableUnicodeConverterConstructor
-  },
+NS_DEFINE_NAMED_CID(NS_ICHARSETCONVERTERMANAGER_CID);
+NS_DEFINE_NAMED_CID(NS_CHARSETALIAS_CID);
+NS_DEFINE_NAMED_CID(NS_TEXTTOSUBURI_CID);
+NS_DEFINE_NAMED_CID(NS_PLATFORMCHARSET_CID);
+NS_DEFINE_NAMED_CID(NS_CONVERTERINPUTSTREAM_CID);
+NS_DEFINE_NAMED_CID(NS_CONVERTEROUTPUTSTREAM_CID);
+NS_DEFINE_NAMED_CID(NS_ISCRIPTABLEUNICODECONVERTER_CID);
 #ifdef MOZ_USE_NATIVE_UCONV
-  { 
-    "Native UConv Service", 
-    NS_NATIVE_UCONV_SERVICE_CID,
-    NS_NATIVE_UCONV_SERVICE_CONTRACT_ID, 
-    NativeUConvServiceConstructor,
-  },
+NS_DEFINE_NAMED_CID(NS_NATIVE_UCONV_SERVICE_CID);
 #else
-  { 
-    "Converter to/from UTF8 with charset", NS_UTF8CONVERTERSERVICE_CID,
-    NS_UTF8CONVERTERSERVICE_CONTRACTID, 
-    nsUTF8ConverterServiceConstructor
-  },
-  { 
-    "ISO-8859-1 To Unicode Converter", NS_ISO88591TOUNICODE_CID, 
-    NS_ISO88591TOUNICODE_CONTRACTID,
-    nsISO88591ToUnicodeConstructor,
-    // global converter registration
-    nsUConverterRegSelf, nsUConverterUnregSelf,
-  },
-  { 
-    "windows-1252 To Unicode Converter", NS_CP1252TOUNICODE_CID, 
-    NS_CP1252TOUNICODE_CONTRACTID,
-    nsCP1252ToUnicodeConstructor,
-  },
-  { 
-    "x-mac-roman To Unicode Converter", NS_MACROMANTOUNICODE_CID,
-    NS_MACROMANTOUNICODE_CONTRACTID,
-    nsMacRomanToUnicodeConstructor,
-  },
-  { 
-    "UTF-8 To Unicode Converter", NS_UTF8TOUNICODE_CID,
-    NS_UTF8TOUNICODE_CONTRACTID,
-    nsUTF8ToUnicodeConstructor,
-  },
-  { 
-    "Unicode To ISO-8859-1 Converter", NS_UNICODETOISO88591_CID,
-    NS_UNICODETOISO88591_CONTRACTID,
-    nsUnicodeToISO88591Constructor, 
-  },
-  { 
-    "Unicode To windows-1252 Converter", NS_UNICODETOCP1252_CID,
-    NS_UNICODETOCP1252_CONTRACTID, 
-    nsUnicodeToCP1252Constructor, 
-  },
-  { 
-    "Unicode To x-mac-roman Converter", NS_UNICODETOMACROMAN_CID,
-    NS_UNICODETOMACROMAN_CONTRACTID, 
-    nsUnicodeToMacRomanConstructor, 
-  },
-  { 
-    "Unicode To UTF-8 Converter", NS_UNICODETOUTF8_CID,
-    NS_UNICODETOUTF8_CONTRACTID, 
-    nsUnicodeToUTF8Constructor, 
-  },
+NS_DEFINE_NAMED_CID(NS_UTF8CONVERTERSERVICE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88591TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1252TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACROMANTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF8TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88591_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1252_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACROMAN_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF8_CID);
+NS_DEFINE_NAMED_CID(NS_ASCIITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88592TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88593TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88594TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88595TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88596TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88596ITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88596ETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88597TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88598TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88598ITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88598ETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO88599TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO885910TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO885913TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO885914TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO885915TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO885916TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISOIR111TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1250TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1251TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1253TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1254TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1255TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1256TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1257TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1258TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_TIS620TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ISO885911TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP874TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP866TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_KOI8RTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_KOI8UTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACCETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACGREEKTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACTURKISHTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACCROATIANTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACROMANIANTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACCYRILLICTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACICELANDICTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_GEOSTD8TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_ARMSCII8TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_TCVN5712TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_VISCIITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_VPSTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF7TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MUTF7TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF16TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF16BETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF16LETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF32TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF32BETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UTF32LETOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_T61TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_USERDEFINEDTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACARABICTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACDEVANAGARITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACFARSITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACGURMUKHITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACGUJARATITOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_MACHEBREWTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOASCII_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88592_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88593_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88594_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88595_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596I_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596E_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88597_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598I_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598E_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO88599_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO885910_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO885913_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO885914_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO885915_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO885916_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISOIR111_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1250_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1251_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1253_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1254_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1255_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1256_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1257_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1258_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOTIS620_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO885911_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP874_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP866_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOKOI8R_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOKOI8U_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACCE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACGREEK_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACTURKISH_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACCROATIAN_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACROMANIAN_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACCYRILLIC_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACICELANDIC_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOGEOSTD8_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOARMSCII8_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOTCVN5712_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOVISCII_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOVPS_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF7_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMUTF7_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16BE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16LE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF32BE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF32LE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUTF32_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOT61_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOUSERDEFINED_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOSYMBOL_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOZAPFDINGBATS_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOADOBEEURO_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACARABIC_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACDEVANAGARI_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACFARSI_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACGURMUKHI_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACGUJARATI_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOMACHEBREW_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOTSCII_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOTAMILTTF_CID);
+NS_DEFINE_NAMED_CID(NS_CP850TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP852TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP855TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP857TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP862TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP864TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP864ITOUNICODE_CID);
+#ifdef XP_OS2
+NS_DEFINE_NAMED_CID(NS_CP869TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1125TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_CP1131TOUNICODE_CID);
+#endif
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP850_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP852_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP855_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP857_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP862_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP864_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP864I_CID);
+#ifdef XP_OS2
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP869_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1125_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP1131_CID);
+#endif
+NS_DEFINE_NAMED_CID(NS_SJISTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_EUCJPTOUNICODE_CID);
+NS_DEFINE_NAMED_CID( NS_ISO2022JPTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOSJIS_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOEUCJP_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOISO2022JP_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOJISX0201_CID);
+NS_DEFINE_NAMED_CID(NS_EUCTWTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOEUCTW_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOBIG5_CID);
+NS_DEFINE_NAMED_CID(NS_BIG5TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOBIG5HKSCS_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOHKSCS_CID);
+NS_DEFINE_NAMED_CID(NS_BIG5HKSCSTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_EUCKRTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOEUCKR_CID);
+NS_DEFINE_NAMED_CID(NS_JOHABTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOJOHAB_CID);
+NS_DEFINE_NAMED_CID(NS_CP949TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP949_CID);
+NS_DEFINE_NAMED_CID(NS_ISO2022KRTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOJAMOTTF_CID);
+NS_DEFINE_NAMED_CID(NS_GB2312TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOGB2312_CID);
+NS_DEFINE_NAMED_CID(NS_CP936TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOCP936_CID);
+NS_DEFINE_NAMED_CID(NS_GBKTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOGBK_CID);
+NS_DEFINE_NAMED_CID(NS_HZTOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOHZ_CID);
+NS_DEFINE_NAMED_CID(NS_GB18030TOUNICODE_CID);
+NS_DEFINE_NAMED_CID(NS_UNICODETOGB18030_CID);
+NS_DEFINE_NAMED_CID(NS_ISO2022CNTOUNICODE_CID);
+#endif
 
-  // ucvlatin
-  { 
-    DECODER_NAME_BASE "us-ascii" , NS_ASCIITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "us-ascii",
-    nsAsciiToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-2" , NS_ISO88592TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-2",
-    nsISO88592ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-3" , NS_ISO88593TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-3",
-    nsISO88593ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-4" , NS_ISO88594TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-4",
-    nsISO88594ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-5" , NS_ISO88595TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-5",
-    nsISO88595ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-6" , NS_ISO88596TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6",
-    nsISO88596ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-6-I" , NS_ISO88596ITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6-I",
-    nsISO88596IToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-6-E" , NS_ISO88596ETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6-E",
-    nsISO88596EToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-7" , NS_ISO88597TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-7",
-    nsISO88597ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-8" , NS_ISO88598TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8",
-    nsISO88598ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-8-I" , NS_ISO88598ITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8-I",
-    nsISO88598IToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-8-E" , NS_ISO88598ETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8-E",
-    nsISO88598EToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-9" , NS_ISO88599TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-9",
-    nsISO88599ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-10" , NS_ISO885910TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-10",
-    nsISO885910ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-13" , NS_ISO885913TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-13",
-    nsISO885913ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-14" , NS_ISO885914TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-14",
-    nsISO885914ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-15" , NS_ISO885915TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-15",
-    nsISO885915ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-16" , NS_ISO885916TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-16",
-    nsISO885916ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-IR-111" , NS_ISOIR111TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-IR-111",
-    nsISOIR111ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1250" , NS_CP1250TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1250",
-    nsCP1250ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1251" , NS_CP1251TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1251",
-    nsCP1251ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1253" , NS_CP1253TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1253",
-    nsCP1253ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1254" , NS_CP1254TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1254",
-    nsCP1254ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1255" , NS_CP1255TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1255",
-    nsCP1255ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1256" , NS_CP1256TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1256",
-    nsCP1256ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1257" , NS_CP1257TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1257",
-    nsCP1257ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-1258" , NS_CP1258TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-1258",
-    nsCP1258ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "TIS-620" , NS_TIS620TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "TIS-620",
-    nsTIS620ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "ISO-8859-11" , NS_ISO885911TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-11",
-    nsISO885911ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "windows-874" , NS_CP874TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "windows-874",
-    nsCP874ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM866" , NS_CP866TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM866",
-    nsCP866ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "KOI8-R" , NS_KOI8RTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "KOI8-R",
-    nsKOI8RToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "KOI8-U" , NS_KOI8UTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "KOI8-U",
-    nsKOI8UToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-ce" , NS_MACCETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-ce",
-    nsMacCEToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-greek" , NS_MACGREEKTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-greek",
-    nsMacGreekToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-turkish" , NS_MACTURKISHTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-turkish",
-    nsMacTurkishToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-croatian" , NS_MACCROATIANTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-croatian",
-    nsMacCroatianToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-romanian" , NS_MACROMANIANTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-romanian",
-    nsMacRomanianToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-cyrillic" , NS_MACCYRILLICTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-cyrillic",
-    nsMacCyrillicToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-icelandic" , NS_MACICELANDICTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-icelandic",
-    nsMacIcelandicToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "GEOSTD8" , NS_GEOSTD8TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "GEOSTD8",
-    nsGEOSTD8ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "armscii-8" , NS_ARMSCII8TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "armscii-8",
-    nsARMSCII8ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-viet-tcvn5712" , NS_TCVN5712TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-viet-tcvn5712",
-    nsTCVN5712ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "VISCII" , NS_VISCIITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "VISCII",
-    nsVISCIIToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-viet-vps" , NS_VPSTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-viet-vps",
-    nsVPSToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-7" , NS_UTF7TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-7",
-    nsUTF7ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-imap4-modified-utf7" , NS_MUTF7TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-imap4-modified-utf7",
-    nsMUTF7ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-16" , NS_UTF16TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16",
-    nsUTF16ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-16BE" , NS_UTF16BETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16BE",
-    nsUTF16BEToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-16LE" , NS_UTF16LETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16LE",
-    nsUTF16LEToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-32" , NS_UTF32TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-32",
-    nsUTF32ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-32BE" , NS_UTF32BETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-32BE",
-    nsUTF32BEToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "UTF-32LE" , NS_UTF32LETOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "UTF-32LE",
-    nsUTF32LEToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "T.61-8bit" , NS_T61TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "T.61-8bit",
-    nsT61ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-user-defined" , NS_USERDEFINEDTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-user-defined",
-    nsUserDefinedToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-arabic" , NS_MACARABICTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-arabic",
-    nsMacArabicToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-devanagari" , NS_MACDEVANAGARITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-devanagari",
-    nsMacDevanagariToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-farsi" , NS_MACFARSITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-farsi",
-    nsMacFarsiToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-gurmukhi" , NS_MACGURMUKHITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-gurmukhi",
-    nsMacGurmukhiToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-gujarati" , NS_MACGUJARATITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-gujarati",
-    nsMacGujaratiToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "x-mac-hebrew" , NS_MACHEBREWTOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-hebrew",
-    nsMacHebrewToUnicodeConstructor ,
-  },
-  { 
-    ENCODER_NAME_BASE "us-ascii" , NS_UNICODETOASCII_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "us-ascii",
-    nsUnicodeToAsciiConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-2" , NS_UNICODETOISO88592_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-2",
-    nsUnicodeToISO88592Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-3" , NS_UNICODETOISO88593_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-3",
-    nsUnicodeToISO88593Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-4" , NS_UNICODETOISO88594_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-4",
-    nsUnicodeToISO88594Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-5" , NS_UNICODETOISO88595_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-5",
-    nsUnicodeToISO88595Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-6" , NS_UNICODETOISO88596_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6",
-    nsUnicodeToISO88596Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-6-I" , NS_UNICODETOISO88596I_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6-I",
-    nsUnicodeToISO88596IConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-6-E" , NS_UNICODETOISO88596E_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6-E",
-    nsUnicodeToISO88596EConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-7" , NS_UNICODETOISO88597_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-7",
-    nsUnicodeToISO88597Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-8" , NS_UNICODETOISO88598_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8",
-    nsUnicodeToISO88598Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-8-I" , NS_UNICODETOISO88598I_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8-I",
-    nsUnicodeToISO88598IConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-8-E" , NS_UNICODETOISO88598E_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8-E",
-    nsUnicodeToISO88598EConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-9" , NS_UNICODETOISO88599_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-9",
-    nsUnicodeToISO88599Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-10" , NS_UNICODETOISO885910_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-10",
-    nsUnicodeToISO885910Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-13" , NS_UNICODETOISO885913_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-13",
-    nsUnicodeToISO885913Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-14" , NS_UNICODETOISO885914_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-14",
-    nsUnicodeToISO885914Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-15" , NS_UNICODETOISO885915_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-15",
-    nsUnicodeToISO885915Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-16" , NS_UNICODETOISO885916_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-16",
-    nsUnicodeToISO885916Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-IR-111" , NS_UNICODETOISOIR111_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-IR-111",
-    nsUnicodeToISOIR111Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1250" , NS_UNICODETOCP1250_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1250",
-    nsUnicodeToCP1250Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1251" , NS_UNICODETOCP1251_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1251",
-    nsUnicodeToCP1251Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1253" , NS_UNICODETOCP1253_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1253",
-    nsUnicodeToCP1253Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1254" , NS_UNICODETOCP1254_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1254",
-    nsUnicodeToCP1254Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1255" , NS_UNICODETOCP1255_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1255",
-    nsUnicodeToCP1255Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1256" , NS_UNICODETOCP1256_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1256",
-    nsUnicodeToCP1256Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1257" , NS_UNICODETOCP1257_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1257",
-    nsUnicodeToCP1257Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "windows-1258" , NS_UNICODETOCP1258_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-1258",
-    nsUnicodeToCP1258Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "TIS-620" , NS_UNICODETOTIS620_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "TIS-620",
-    nsUnicodeToTIS620Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "ISO-8859-11" , NS_UNICODETOISO885911_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-11",
-    nsUnicodeToISO885911Constructor ,
-  },
-  { 
-    ENCODER_NAME_BASE "windows-874" , NS_UNICODETOCP874_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "windows-874",
-    nsUnicodeToCP874Constructor ,
-  },
-  { 
-    ENCODER_NAME_BASE "IBM866" , NS_UNICODETOCP866_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM866",
-    nsUnicodeToCP866Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "KOI8-R" , NS_UNICODETOKOI8R_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "KOI8-R",
-    nsUnicodeToKOI8RConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "KOI8-U" , NS_UNICODETOKOI8U_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "KOI8-U",
-    nsUnicodeToKOI8UConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-ce" , NS_UNICODETOMACCE_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-ce",
-    nsUnicodeToMacCEConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-greek" , NS_UNICODETOMACGREEK_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-greek",
-    nsUnicodeToMacGreekConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-turkish" , NS_UNICODETOMACTURKISH_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-turkish",
-    nsUnicodeToMacTurkishConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-croatian" , NS_UNICODETOMACCROATIAN_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-croatian",
-    nsUnicodeToMacCroatianConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-romanian" , NS_UNICODETOMACROMANIAN_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-romanian",
-    nsUnicodeToMacRomanianConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-cyrillic" , NS_UNICODETOMACCYRILLIC_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-cyrillic",
-    nsUnicodeToMacCyrillicConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-icelandic" , NS_UNICODETOMACICELANDIC_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-icelandic",
-    nsUnicodeToMacIcelandicConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "GEOSTD8" , NS_UNICODETOGEOSTD8_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "GEOSTD8",
-    nsUnicodeToGEOSTD8Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "armscii-8" , NS_UNICODETOARMSCII8_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "armscii-8",
-    nsUnicodeToARMSCII8Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-viet-tcvn5712" , NS_UNICODETOTCVN5712_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-viet-tcvn5712",
-    nsUnicodeToTCVN5712Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "VISCII" , NS_UNICODETOVISCII_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "VISCII",
-    nsUnicodeToVISCIIConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-viet-vps" , NS_UNICODETOVPS_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-viet-vps",
-    nsUnicodeToVPSConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-7" , NS_UNICODETOUTF7_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-7",
-    nsUnicodeToUTF7Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-imap4-modified-utf7" , NS_UNICODETOMUTF7_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-imap4-modified-utf7",
-    nsUnicodeToMUTF7Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-16BE" , NS_UNICODETOUTF16BE_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16BE",
-    nsUnicodeToUTF16BEConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-16LE" , NS_UNICODETOUTF16LE_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16LE",
-    nsUnicodeToUTF16LEConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-16" , NS_UNICODETOUTF16_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16",
-    nsUnicodeToUTF16Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-32BE" , NS_UNICODETOUTF32BE_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-32BE",
-    nsUnicodeToUTF32BEConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-32LE" , NS_UNICODETOUTF32LE_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-32LE",
-    nsUnicodeToUTF32LEConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "UTF-32" , NS_UNICODETOUTF32_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "UTF-32",
-    nsUnicodeToUTF32Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "T.61-8bit" , NS_UNICODETOT61_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "T.61-8bit",
-    nsUnicodeToT61Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-user-defined" , NS_UNICODETOUSERDEFINED_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-user-defined",
-    nsUnicodeToUserDefinedConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "Adobe-Symbol-Encoding" , NS_UNICODETOSYMBOL_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "Adobe-Symbol-Encoding",
-    nsUnicodeToSymbolConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-zapf-dingbats" , NS_UNICODETOZAPFDINGBATS_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-zapf-dingbats",
-    nsUnicodeToZapfDingbatConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-adobe-euro", NS_UNICODETOADOBEEURO_CID,
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-adobe-euro",
-    nsUnicodeToAdobeEuroConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-arabic" , NS_UNICODETOMACARABIC_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-arabic",
-    nsUnicodeToMacArabicConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-devanagari" , NS_UNICODETOMACDEVANAGARI_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-devanagari",
-    nsUnicodeToMacDevanagariConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-farsi" , NS_UNICODETOMACFARSI_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-farsi",
-    nsUnicodeToMacFarsiConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-gurmukhi" , NS_UNICODETOMACGURMUKHI_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-gurmukhi",
-    nsUnicodeToMacGurmukhiConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-gujarati" , NS_UNICODETOMACGUJARATI_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-gujarati",
-    nsUnicodeToMacGujaratiConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-mac-hebrew" , NS_UNICODETOMACHEBREW_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-hebrew",
-    nsUnicodeToMacHebrewConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-tscii" , NS_UNICODETOTSCII_CID,
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-tscii",
-    nsUnicodeToTSCIIConstructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "x-tamilttf-0" , NS_UNICODETOTAMILTTF_CID,
-    NS_UNICODEENCODER_CONTRACTID_BASE "x-tamilttf-0",
-    nsUnicodeToTamilTTFConstructor, 
-  },
-  // ucvibm
-  { 
-    DECODER_NAME_BASE "IBM850" , NS_CP850TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM850",
-    nsCP850ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM852" , NS_CP852TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM852",
-    nsCP852ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM855" , NS_CP855TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM855",
-    nsCP855ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM857" , NS_CP857TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM857",
-    nsCP857ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM862" , NS_CP862TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM862",
-    nsCP862ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM864" , NS_CP864TOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM864",
-    nsCP864ToUnicodeConstructor ,
-  },
-  { 
-    DECODER_NAME_BASE "IBM864i" , NS_CP864ITOUNICODE_CID, 
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM864i",
-    nsCP864iToUnicodeConstructor ,
-  },
+static const mozilla::Module::CIDEntry kUConvCIDs[] = {
+  { &kNS_ICHARSETCONVERTERMANAGER_CID, false, NULL, nsCharsetConverterManagerConstructor },
+  { &kNS_CHARSETALIAS_CID, false, NULL, nsCharsetAlias2Constructor },
+  { &kNS_TEXTTOSUBURI_CID, false, NULL, nsTextToSubURIConstructor },
+  { &kNS_PLATFORMCHARSET_CID, false, NULL, nsPlatformCharsetConstructor },
+  { &kNS_CONVERTERINPUTSTREAM_CID, false, NULL, nsConverterInputStreamConstructor },
+  { &kNS_CONVERTEROUTPUTSTREAM_CID, false, NULL, nsConverterOutputStreamConstructor },
+  { &kNS_ISCRIPTABLEUNICODECONVERTER_CID, false, NULL, nsScriptableUnicodeConverterConstructor },
+#ifdef MOZ_USE_NATIVE_ICONV
+  { &kNS_NATIVE_UCONV_SERVICE_CID, false, NULL, NativeUConvServiceConstructor },
+#else
+  { &kNS_UTF8CONVERTERSERVICE_CID, false, NULL, nsUTF8ConverterServiceConstructor },
+  { &kNS_ISO88591TOUNICODE_CID, false, NULL, nsISO88591ToUnicodeConstructor },
+  { &kNS_CP1252TOUNICODE_CID, false, NULL, nsCP1252ToUnicodeConstructor },
+  { &kNS_MACROMANTOUNICODE_CID, false, NULL, nsMacRomanToUnicodeConstructor },
+  { &kNS_UTF8TOUNICODE_CID, false, NULL, nsUTF8ToUnicodeConstructor },
+  { &kNS_UNICODETOISO88591_CID, false, NULL, nsUnicodeToISO88591Constructor },
+  { &kNS_UNICODETOCP1252_CID, false, NULL, nsUnicodeToCP1252Constructor },
+  { &kNS_UNICODETOMACROMAN_CID, false, NULL, nsUnicodeToMacRomanConstructor },
+  { &kNS_UNICODETOUTF8_CID, false, NULL, nsUnicodeToUTF8Constructor },
+  { &kNS_ASCIITOUNICODE_CID, false, NULL, nsAsciiToUnicodeConstructor },
+  { &kNS_ISO88592TOUNICODE_CID, false, NULL, nsISO88592ToUnicodeConstructor },
+  { &kNS_ISO88593TOUNICODE_CID, false, NULL, nsISO88593ToUnicodeConstructor },
+  { &kNS_ISO88594TOUNICODE_CID, false, NULL, nsISO88594ToUnicodeConstructor },
+  { &kNS_ISO88595TOUNICODE_CID, false, NULL, nsISO88595ToUnicodeConstructor },
+  { &kNS_ISO88596TOUNICODE_CID, false, NULL, nsISO88596ToUnicodeConstructor },
+  { &kNS_ISO88596ITOUNICODE_CID, false, NULL, nsISO88596IToUnicodeConstructor },
+  { &kNS_ISO88596ETOUNICODE_CID, false, NULL, nsISO88596EToUnicodeConstructor },
+  { &kNS_ISO88597TOUNICODE_CID, false, NULL, nsISO88597ToUnicodeConstructor },
+  { &kNS_ISO88598TOUNICODE_CID, false, NULL, nsISO88598ToUnicodeConstructor },
+  { &kNS_ISO88598ITOUNICODE_CID, false, NULL, nsISO88598IToUnicodeConstructor },
+  { &kNS_ISO88598ETOUNICODE_CID, false, NULL, nsISO88598EToUnicodeConstructor },
+  { &kNS_ISO88599TOUNICODE_CID, false, NULL, nsISO88599ToUnicodeConstructor },
+  { &kNS_ISO885910TOUNICODE_CID, false, NULL, nsISO885910ToUnicodeConstructor },
+  { &kNS_ISO885913TOUNICODE_CID, false, NULL, nsISO885913ToUnicodeConstructor },
+  { &kNS_ISO885914TOUNICODE_CID, false, NULL, nsISO885914ToUnicodeConstructor },
+  { &kNS_ISO885915TOUNICODE_CID, false, NULL, nsISO885915ToUnicodeConstructor },
+  { &kNS_ISO885916TOUNICODE_CID, false, NULL, nsISO885916ToUnicodeConstructor },
+  { &kNS_ISOIR111TOUNICODE_CID, false, NULL, nsISOIR111ToUnicodeConstructor },
+  { &kNS_CP1250TOUNICODE_CID, false, NULL, nsCP1250ToUnicodeConstructor },
+  { &kNS_CP1251TOUNICODE_CID, false, NULL, nsCP1251ToUnicodeConstructor },
+  { &kNS_CP1253TOUNICODE_CID, false, NULL, nsCP1253ToUnicodeConstructor },
+  { &kNS_CP1254TOUNICODE_CID, false, NULL, nsCP1254ToUnicodeConstructor },
+  { &kNS_CP1255TOUNICODE_CID, false, NULL, nsCP1255ToUnicodeConstructor },
+  { &kNS_CP1256TOUNICODE_CID, false, NULL, nsCP1256ToUnicodeConstructor },
+  { &kNS_CP1257TOUNICODE_CID, false, NULL, nsCP1257ToUnicodeConstructor },
+  { &kNS_CP1258TOUNICODE_CID, false, NULL, nsCP1258ToUnicodeConstructor },
+  { &kNS_TIS620TOUNICODE_CID, false, NULL, nsTIS620ToUnicodeConstructor },
+  { &kNS_ISO885911TOUNICODE_CID, false, NULL, nsISO885911ToUnicodeConstructor },
+  { &kNS_CP874TOUNICODE_CID, false, NULL, nsCP874ToUnicodeConstructor },
+  { &kNS_CP866TOUNICODE_CID, false, NULL, nsCP866ToUnicodeConstructor },
+  { &kNS_KOI8RTOUNICODE_CID, false, NULL, nsKOI8RToUnicodeConstructor },
+  { &kNS_KOI8UTOUNICODE_CID, false, NULL, nsKOI8UToUnicodeConstructor },
+  { &kNS_MACCETOUNICODE_CID, false, NULL, nsMacCEToUnicodeConstructor },
+  { &kNS_MACGREEKTOUNICODE_CID, false, NULL, nsMacGreekToUnicodeConstructor },
+  { &kNS_MACTURKISHTOUNICODE_CID, false, NULL, nsMacTurkishToUnicodeConstructor },
+  { &kNS_MACCROATIANTOUNICODE_CID, false, NULL, nsMacCroatianToUnicodeConstructor },
+  { &kNS_MACROMANIANTOUNICODE_CID, false, NULL, nsMacRomanianToUnicodeConstructor },
+  { &kNS_MACCYRILLICTOUNICODE_CID, false, NULL, nsMacCyrillicToUnicodeConstructor },
+  { &kNS_MACICELANDICTOUNICODE_CID, false, NULL, nsMacIcelandicToUnicodeConstructor },
+  { &kNS_GEOSTD8TOUNICODE_CID, false, NULL, nsGEOSTD8ToUnicodeConstructor },
+  { &kNS_ARMSCII8TOUNICODE_CID, false, NULL, nsARMSCII8ToUnicodeConstructor },
+  { &kNS_TCVN5712TOUNICODE_CID, false, NULL, nsTCVN5712ToUnicodeConstructor },
+  { &kNS_VISCIITOUNICODE_CID, false, NULL, nsVISCIIToUnicodeConstructor },
+  { &kNS_VPSTOUNICODE_CID, false, NULL, nsVPSToUnicodeConstructor },
+  { &kNS_UTF7TOUNICODE_CID, false, NULL, nsUTF7ToUnicodeConstructor },
+  { &kNS_MUTF7TOUNICODE_CID, false, NULL, nsMUTF7ToUnicodeConstructor },
+  { &kNS_UTF16TOUNICODE_CID, false, NULL, nsUTF16ToUnicodeConstructor },
+  { &kNS_UTF16BETOUNICODE_CID, false, NULL, nsUTF16BEToUnicodeConstructor },
+  { &kNS_UTF16LETOUNICODE_CID, false, NULL, nsUTF16LEToUnicodeConstructor },
+  { &kNS_UTF32TOUNICODE_CID, false, NULL, nsUTF32ToUnicodeConstructor },
+  { &kNS_UTF32BETOUNICODE_CID, false, NULL, nsUTF32BEToUnicodeConstructor },
+  { &kNS_UTF32LETOUNICODE_CID, false, NULL, nsUTF32LEToUnicodeConstructor },
+  { &kNS_T61TOUNICODE_CID, false, NULL, nsT61ToUnicodeConstructor },
+  { &kNS_USERDEFINEDTOUNICODE_CID, false, NULL, nsUserDefinedToUnicodeConstructor },
+  { &kNS_MACARABICTOUNICODE_CID, false, NULL, nsMacArabicToUnicodeConstructor },
+  { &kNS_MACDEVANAGARITOUNICODE_CID, false, NULL, nsMacDevanagariToUnicodeConstructor },
+  { &kNS_MACFARSITOUNICODE_CID, false, NULL, nsMacFarsiToUnicodeConstructor },
+  { &kNS_MACGURMUKHITOUNICODE_CID, false, NULL, nsMacGurmukhiToUnicodeConstructor },
+  { &kNS_MACGUJARATITOUNICODE_CID, false, NULL, nsMacGujaratiToUnicodeConstructor },
+  { &kNS_MACHEBREWTOUNICODE_CID, false, NULL, nsMacHebrewToUnicodeConstructor },
+  { &kNS_UNICODETOASCII_CID, false, NULL, nsUnicodeToAsciiConstructor },
+  { &kNS_UNICODETOISO88592_CID, false, NULL, nsUnicodeToISO88592Constructor },
+  { &kNS_UNICODETOISO88593_CID, false, NULL, nsUnicodeToISO88593Constructor },
+  { &kNS_UNICODETOISO88594_CID, false, NULL, nsUnicodeToISO88594Constructor },
+  { &kNS_UNICODETOISO88595_CID, false, NULL, nsUnicodeToISO88595Constructor },
+  { &kNS_UNICODETOISO88596_CID, false, NULL, nsUnicodeToISO88596Constructor },
+  { &kNS_UNICODETOISO88596I_CID, false, NULL, nsUnicodeToISO88596IConstructor },
+  { &kNS_UNICODETOISO88596E_CID, false, NULL, nsUnicodeToISO88596EConstructor },
+  { &kNS_UNICODETOISO88597_CID, false, NULL, nsUnicodeToISO88597Constructor },
+  { &kNS_UNICODETOISO88598_CID, false, NULL, nsUnicodeToISO88598Constructor },
+  { &kNS_UNICODETOISO88598I_CID, false, NULL, nsUnicodeToISO88598IConstructor },
+  { &kNS_UNICODETOISO88598E_CID, false, NULL, nsUnicodeToISO88598EConstructor },
+  { &kNS_UNICODETOISO88599_CID, false, NULL, nsUnicodeToISO88599Constructor },
+  { &kNS_UNICODETOISO885910_CID, false, NULL, nsUnicodeToISO885910Constructor },
+  { &kNS_UNICODETOISO885913_CID, false, NULL, nsUnicodeToISO885913Constructor },
+  { &kNS_UNICODETOISO885914_CID, false, NULL, nsUnicodeToISO885914Constructor },
+  { &kNS_UNICODETOISO885915_CID, false, NULL, nsUnicodeToISO885915Constructor },
+  { &kNS_UNICODETOISO885916_CID, false, NULL, nsUnicodeToISO885916Constructor },
+  { &kNS_UNICODETOISOIR111_CID, false, NULL, nsUnicodeToISOIR111Constructor },
+  { &kNS_UNICODETOCP1250_CID, false, NULL, nsUnicodeToCP1250Constructor },
+  { &kNS_UNICODETOCP1251_CID, false, NULL, nsUnicodeToCP1251Constructor },
+  { &kNS_UNICODETOCP1253_CID, false, NULL, nsUnicodeToCP1253Constructor },
+  { &kNS_UNICODETOCP1254_CID, false, NULL, nsUnicodeToCP1254Constructor },
+  { &kNS_UNICODETOCP1255_CID, false, NULL, nsUnicodeToCP1255Constructor },
+  { &kNS_UNICODETOCP1256_CID, false, NULL, nsUnicodeToCP1256Constructor },
+  { &kNS_UNICODETOCP1257_CID, false, NULL, nsUnicodeToCP1257Constructor },
+  { &kNS_UNICODETOCP1258_CID, false, NULL, nsUnicodeToCP1258Constructor },
+  { &kNS_UNICODETOTIS620_CID, false, NULL, nsUnicodeToTIS620Constructor },
+  { &kNS_UNICODETOISO885911_CID, false, NULL, nsUnicodeToISO885911Constructor },
+  { &kNS_UNICODETOCP874_CID, false, NULL, nsUnicodeToCP874Constructor },
+  { &kNS_UNICODETOCP866_CID, false, NULL, nsUnicodeToCP866Constructor },
+  { &kNS_UNICODETOKOI8R_CID, false, NULL, nsUnicodeToKOI8RConstructor },
+  { &kNS_UNICODETOKOI8U_CID, false, NULL, nsUnicodeToKOI8UConstructor },
+  { &kNS_UNICODETOMACCE_CID, false, NULL, nsUnicodeToMacCEConstructor },
+  { &kNS_UNICODETOMACGREEK_CID, false, NULL, nsUnicodeToMacGreekConstructor },
+  { &kNS_UNICODETOMACTURKISH_CID, false, NULL, nsUnicodeToMacTurkishConstructor },
+  { &kNS_UNICODETOMACCROATIAN_CID, false, NULL, nsUnicodeToMacCroatianConstructor },
+  { &kNS_UNICODETOMACROMANIAN_CID, false, NULL, nsUnicodeToMacRomanianConstructor },
+  { &kNS_UNICODETOMACCYRILLIC_CID, false, NULL, nsUnicodeToMacCyrillicConstructor },
+  { &kNS_UNICODETOMACICELANDIC_CID, false, NULL, nsUnicodeToMacIcelandicConstructor },
+  { &kNS_UNICODETOGEOSTD8_CID, false, NULL, nsUnicodeToGEOSTD8Constructor },
+  { &kNS_UNICODETOARMSCII8_CID, false, NULL, nsUnicodeToARMSCII8Constructor },
+  { &kNS_UNICODETOTCVN5712_CID, false, NULL, nsUnicodeToTCVN5712Constructor },
+  { &kNS_UNICODETOVISCII_CID, false, NULL, nsUnicodeToVISCIIConstructor },
+  { &kNS_UNICODETOVPS_CID, false, NULL, nsUnicodeToVPSConstructor },
+  { &kNS_UNICODETOUTF7_CID, false, NULL, nsUnicodeToUTF7Constructor },
+  { &kNS_UNICODETOMUTF7_CID, false, NULL, nsUnicodeToMUTF7Constructor },
+  { &kNS_UNICODETOUTF16BE_CID, false, NULL, nsUnicodeToUTF16BEConstructor },
+  { &kNS_UNICODETOUTF16LE_CID, false, NULL, nsUnicodeToUTF16LEConstructor },
+  { &kNS_UNICODETOUTF16_CID, false, NULL, nsUnicodeToUTF16Constructor },
+  { &kNS_UNICODETOUTF32BE_CID, false, NULL, nsUnicodeToUTF32BEConstructor },
+  { &kNS_UNICODETOUTF32LE_CID, false, NULL, nsUnicodeToUTF32LEConstructor },
+  { &kNS_UNICODETOUTF32_CID, false, NULL, nsUnicodeToUTF32Constructor },
+  { &kNS_UNICODETOT61_CID, false, NULL, nsUnicodeToT61Constructor },
+  { &kNS_UNICODETOUSERDEFINED_CID, false, NULL, nsUnicodeToUserDefinedConstructor },
+  { &kNS_UNICODETOSYMBOL_CID, false, NULL, nsUnicodeToSymbolConstructor },
+  { &kNS_UNICODETOZAPFDINGBATS_CID, false, NULL, nsUnicodeToZapfDingbatConstructor },
+  { &kNS_UNICODETOADOBEEURO_CID, false, NULL, nsUnicodeToAdobeEuroConstructor },
+  { &kNS_UNICODETOMACARABIC_CID, false, NULL, nsUnicodeToMacArabicConstructor },
+  { &kNS_UNICODETOMACDEVANAGARI_CID, false, NULL, nsUnicodeToMacDevanagariConstructor },
+  { &kNS_UNICODETOMACFARSI_CID, false, NULL, nsUnicodeToMacFarsiConstructor },
+  { &kNS_UNICODETOMACGURMUKHI_CID, false, NULL, nsUnicodeToMacGurmukhiConstructor },
+  { &kNS_UNICODETOMACGUJARATI_CID, false, NULL, nsUnicodeToMacGujaratiConstructor },
+  { &kNS_UNICODETOMACHEBREW_CID, false, NULL, nsUnicodeToMacHebrewConstructor },
+  { &kNS_UNICODETOTSCII_CID, false, NULL, nsUnicodeToTSCIIConstructor },
+  { &kNS_UNICODETOTAMILTTF_CID, false, NULL, nsUnicodeToTamilTTFConstructor },
+  { &kNS_CP850TOUNICODE_CID, false, NULL, nsCP850ToUnicodeConstructor },
+  { &kNS_CP852TOUNICODE_CID, false, NULL, nsCP852ToUnicodeConstructor },
+  { &kNS_CP855TOUNICODE_CID, false, NULL, nsCP855ToUnicodeConstructor },
+  { &kNS_CP857TOUNICODE_CID, false, NULL, nsCP857ToUnicodeConstructor },
+  { &kNS_CP862TOUNICODE_CID, false, NULL, nsCP862ToUnicodeConstructor },
+  { &kNS_CP864TOUNICODE_CID, false, NULL, nsCP864ToUnicodeConstructor },
+  { &kNS_CP864ITOUNICODE_CID, false, NULL, nsCP864iToUnicodeConstructor },
 #ifdef XP_OS2
-  {
-    DECODER_NAME_BASE "IBM869" , NS_CP869TOUNICODE_CID,
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM869",
-    nsCP869ToUnicodeConstructor ,
-  },
-  {
-    DECODER_NAME_BASE "IBM1125" , NS_CP1125TOUNICODE_CID,
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM1125",
-    nsCP1125ToUnicodeConstructor ,
-  },
-  {
-    DECODER_NAME_BASE "IBM1131" , NS_CP1131TOUNICODE_CID,
-    NS_UNICODEDECODER_CONTRACTID_BASE "IBM1131",
-    nsCP1131ToUnicodeConstructor ,
-  },
+  { &kNS_CP869TOUNICODE_CID, false, NULL, nsCP869ToUnicodeConstructor },
+  { &kNS_CP1125TOUNICODE_CID, false, NULL, nsCP1125ToUnicodeConstructor },
+  { &kNS_CP1131TOUNICODE_CID, false, NULL, nsCP1131ToUnicodeConstructor },
 #endif
-  { 
-    ENCODER_NAME_BASE "IBM850" , NS_UNICODETOCP850_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM850",
-    nsUnicodeToCP850Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "IBM852" , NS_UNICODETOCP852_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM852",
-    nsUnicodeToCP852Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "IBM855" , NS_UNICODETOCP855_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM855",
-    nsUnicodeToCP855Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "IBM857" , NS_UNICODETOCP857_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM857",
-    nsUnicodeToCP857Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "IBM862" , NS_UNICODETOCP862_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM862",
-    nsUnicodeToCP862Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "IBM864" , NS_UNICODETOCP864_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM864",
-    nsUnicodeToCP864Constructor, 
-  },
-  { 
-    ENCODER_NAME_BASE "IBM864i" , NS_UNICODETOCP864I_CID, 
-    NS_UNICODEENCODER_CONTRACTID_BASE "IBM864i",
-    nsUnicodeToCP864iConstructor, 
-  },
+  { &kNS_UNICODETOCP850_CID, false, NULL, nsUnicodeToCP850Constructor },
+  { &kNS_UNICODETOCP852_CID, false, NULL, nsUnicodeToCP852Constructor },
+  { &kNS_UNICODETOCP855_CID, false, NULL, nsUnicodeToCP855Constructor },
+  { &