diff --git a/mozilla/content/html/content/src/nsHTMLFormElement.cpp b/mozilla/content/html/content/src/nsHTMLFormElement.cpp index 78de2662609..0471c95891e 100644 --- a/mozilla/content/html/content/src/nsHTMLFormElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLFormElement.cpp @@ -68,6 +68,7 @@ #include "nsIURI.h" #include "nsIObserverService.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" #include "nsISimpleEnumerator.h" #include "nsIDOMWindowInternal.h" #include "nsRange.h" diff --git a/mozilla/embedding/base/Makefile.in b/mozilla/embedding/base/Makefile.in index c4eafacab4c..2e297cd3771 100644 --- a/mozilla/embedding/base/Makefile.in +++ b/mozilla/embedding/base/Makefile.in @@ -56,6 +56,8 @@ endif # static lib. FORCE_STATIC_LIB = 1 +DEFINES += -DXPCOM_GLUE + include $(topsrcdir)/config/rules.mk CXXFLAGS += $(MOZ_TOOLKIT_REGISTRY_CFLAGS) diff --git a/mozilla/embedding/base/nsEmbedAPI.cpp b/mozilla/embedding/base/nsEmbedAPI.cpp index 1631996776d..40f6e57d5dc 100644 --- a/mozilla/embedding/base/nsEmbedAPI.cpp +++ b/mozilla/embedding/base/nsEmbedAPI.cpp @@ -22,6 +22,10 @@ * Contributor(s): */ +#ifdef XPCOM_GLUE +#include "nsXPCOMGlue.h" +#endif + #include "nsIServiceManager.h" #include "nsIComponentRegistrar.h" #include "nsIAppStartupNotifier.h" @@ -83,6 +87,11 @@ nsresult NS_InitEmbedding(nsILocalFile *mozBinDirectory, if (!sXPCOMInitializedFlag) #endif { + +#ifdef XPCOM_GLUE + // TODO: Need to be smarter about where exactly the xpcom library is. + XPCOMGlueStartup(nsnull); +#endif // Initialise XPCOM NS_InitXPCOM2(&sServiceManager, mozBinDirectory, appFileLocProvider); @@ -176,5 +185,8 @@ nsresult NS_TermEmbedding() NS_ShutdownXPCOM(sServiceManager); #endif +#ifdef XPCOM_GLUE + XPCOMGlueShutdown(); +#endif return NS_OK; } diff --git a/mozilla/embedding/browser/activex/src/control/Makefile.in b/mozilla/embedding/browser/activex/src/control/Makefile.in index b520909a089..c70f5bc73ec 100644 --- a/mozilla/embedding/browser/activex/src/control/Makefile.in +++ b/mozilla/embedding/browser/activex/src/control/Makefile.in @@ -79,9 +79,12 @@ CPPSRCS = \ guids.cpp \ $(NULL) +DEFINES += -DXPCOM_GLUE + +# we still include xpcom directly since this control uses atoms and voidarray. EXTRA_DSO_LDOPTS = \ - $(DIST)/lib/$(LIB_PREFIX)gkgfx.$(LIB_SUFFIX) \ $(DIST)/lib/$(LIB_PREFIX)embed_base_s.$(LIB_SUFFIX) \ + $(XPCOM_GLUE_LIBS) \ $(XPCOM_LIBS) \ $(NSPR_LIBS) \ $(NULL) diff --git a/mozilla/embedding/tests/mfcembed/Makefile.in b/mozilla/embedding/tests/mfcembed/Makefile.in index 1d59177e434..5cfbe0c8c49 100644 --- a/mozilla/embedding/tests/mfcembed/Makefile.in +++ b/mozilla/embedding/tests/mfcembed/Makefile.in @@ -83,11 +83,13 @@ CPPSRCS = \ StdAfx.cpp \ $(NULL) -EXTRA_DSO_LIBS = embed_base_s gkgfx mfcEmbedComponents +EXTRA_DSO_LIBS = mfcEmbedComponents + +DEFINES += -DXPCOM_GLUE LIBS = \ - $(EXTRA_DSO_LIBS) \ - $(XPCOM_LIBS) \ + $(DIST)/lib/$(LIB_PREFIX)embed_base_s.$(LIB_SUFFIX) \ + $(XPCOM_GLUE_LIBS) \ $(NSPR_LIBS) \ $(NULL) diff --git a/mozilla/embedding/tests/mfcembed/MfcEmbed.cpp b/mozilla/embedding/tests/mfcembed/MfcEmbed.cpp index 24c43dfa637..a6707ff8ff4 100644 --- a/mozilla/embedding/tests/mfcembed/MfcEmbed.cpp +++ b/mozilla/embedding/tests/mfcembed/MfcEmbed.cpp @@ -55,10 +55,11 @@ #include "nsIWindowWatcher.h" #include "plstr.h" #include "Preferences.h" -#include "nsCRT.h" #include #include +#include "nsIComponentRegistrar.h" + #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE @@ -168,6 +169,12 @@ nsresult CMfcEmbedApp::OverrideComponents() { nsresult rv = NS_OK; + + nsCOMPtr registrar; + rv = NS_GetComponentRegistrar(getter_AddRefs(registrar)); + if (NS_FAILED(rv)) + return rv; + // replace Mozilla's default PromptService with our own, if the // expected override DLL is present HMODULE overlib = ::LoadLibrary(kComponentsLibname); @@ -183,11 +190,10 @@ nsresult CMfcEmbedApp::OverrideComponents() nsCOMPtr promptFactory; rv = MakeFactory(getter_AddRefs(promptFactory)); if (NS_SUCCEEDED(rv)) - nsComponentManager::RegisterFactory(kPromptServiceCID, - "Prompt Service", - "@mozilla.org/embedcomp/prompt-service;1", - promptFactory, - PR_TRUE); // replace existing + registrar->RegisterFactory(kPromptServiceCID, + "Prompt Service", + "@mozilla.org/embedcomp/prompt-service;1", + promptFactory); // replace existing } else ::FreeLibrary(overlib); } @@ -206,11 +212,10 @@ nsresult CMfcEmbedApp::OverrideComponents() nsCOMPtr helperAppDlgFactory; rv = MakeFactory(getter_AddRefs(helperAppDlgFactory)); if (NS_SUCCEEDED(rv)) - nsComponentManager::RegisterFactory(kHelperAppLauncherDialogCID, - "Helper App Launcher Dialog", - "@mozilla.org/helperapplauncherdialog;1", - helperAppDlgFactory, - PR_TRUE); // replace existing + registrar->RegisterFactory(kHelperAppLauncherDialogCID, + "Helper App Launcher Dialog", + "@mozilla.org/helperapplauncherdialog;1", + helperAppDlgFactory); } else ::FreeLibrary(overlib); } @@ -230,11 +235,10 @@ nsresult CMfcEmbedApp::OverrideComponents() nsCOMPtr printingPromptFactory; rv = MakeFactory(getter_AddRefs(printingPromptFactory)); if (NS_SUCCEEDED(rv)) - nsComponentManager::RegisterFactory(kPrintingPromptServiceCID, - "Printing Prompt Service", - "@mozilla.org/embedcomp/printingprompt-service;1", - printingPromptFactory, - PR_TRUE); // replace existing + registrar->RegisterFactory(kPrintingPromptServiceCID, + "Printing Prompt Service", + "@mozilla.org/embedcomp/printingprompt-service;1", + printingPromptFactory); } else ::FreeLibrary(overlib); } @@ -647,7 +651,7 @@ NS_IMETHODIMP CMfcEmbedApp::Observe(nsISupports *aSubject, const char *aTopic, c { nsresult rv = NS_OK; - if (nsCRT::strcmp(aTopic, "profile-approve-change") == 0) + if (strcmp(aTopic, "profile-approve-change") == 0) { // Ask the user if they want to int result = MessageBox(NULL, "Do you want to close all windows in order to switch the profile?", "Confirm", MB_YESNO | MB_ICONQUESTION); @@ -658,7 +662,7 @@ NS_IMETHODIMP CMfcEmbedApp::Observe(nsISupports *aSubject, const char *aTopic, c status->VetoChange(); } } - else if (nsCRT::strcmp(aTopic, "profile-change-teardown") == 0) + else if (strcmp(aTopic, "profile-change-teardown") == 0) { // Close all open windows. Alternatively, we could just call CBrowserWindow::Stop() // on each. Either way, we have to stop all network activity on this phase. @@ -679,13 +683,13 @@ NS_IMETHODIMP CMfcEmbedApp::Observe(nsISupports *aSubject, const char *aTopic, c } } } - else if (nsCRT::strcmp(aTopic, "profile-after-change") == 0) + else if (strcmp(aTopic, "profile-after-change") == 0) { InitializePrefs(); // In case we have just switched to a newly created profile. // Only make a new browser window on a switch. This also gets // called at start up and we already make a window then. - if (!nsCRT::strcmp(someData, NS_LITERAL_STRING("switch").get())) + if (!strcmp(someData, NS_LITERAL_STRING("switch").get())) OnNewBrowser(); } return rv; diff --git a/mozilla/embedding/tests/mfcembed/MfcEmbed.h b/mozilla/embedding/tests/mfcembed/MfcEmbed.h index e8d6f3e34fd..114f838df65 100644 --- a/mozilla/embedding/tests/mfcembed/MfcEmbed.h +++ b/mozilla/embedding/tests/mfcembed/MfcEmbed.h @@ -126,6 +126,28 @@ private: ///////////////////////////////////////////////////////////////////////////// +static PRInt32 strcmp(const PRUnichar* s1, const PRUnichar* s2) { + if(s1 && s2) { + for (;;) { + PRUnichar c1 = *s1++; + PRUnichar c2 = *s2++; + if (c1 != c2) { + if (c1 < c2) return -1; + return 1; + } + if ((0==c1) || (0==c2)) break; + } + } + else { + if (s1) // s2 must have been null + return -1; + if (s2) // s1 must have been null + return 1; + } + return 0; +} + + //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. diff --git a/mozilla/embedding/tests/mfcembed/ProfilesDlg.cpp b/mozilla/embedding/tests/mfcembed/ProfilesDlg.cpp index 9ba7ca093fa..9dc9ae68b0d 100644 --- a/mozilla/embedding/tests/mfcembed/ProfilesDlg.cpp +++ b/mozilla/embedding/tests/mfcembed/ProfilesDlg.cpp @@ -38,7 +38,6 @@ // Mozilla #include "nsIProfile.h" #include "nsIServiceManager.h" -#include "nsCRT.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -228,7 +227,7 @@ BOOL CProfilesDlg::OnInitDialog() { CString tmpStr(W2T(profileList[index])); m_ProfileList.AddString(tmpStr); - if (nsCRT::strcmp(profileList[index], curProfileName.get()) == 0) + if (strcmp(profileList[index], curProfileName.get()) == 0) selectedRow = index; } diff --git a/mozilla/embedding/tests/mfcembed/components/nsPrintDialogUtil.cpp b/mozilla/embedding/tests/mfcembed/components/nsPrintDialogUtil.cpp index 41581291f6b..467803f0a8f 100644 --- a/mozilla/embedding/tests/mfcembed/components/nsPrintDialogUtil.cpp +++ b/mozilla/embedding/tests/mfcembed/components/nsPrintDialogUtil.cpp @@ -81,7 +81,6 @@ static NS_DEFINE_IID(kPrinterEnumeratorCID, NS_PRINTER_ENUMERATOR_CID); #include "nsRect.h" #include "nsIPref.h" -#include "nsCRT.h" #include "prenv.h" /* for PR_GetEnv */ #include @@ -837,6 +836,17 @@ static PRUnichar * GetDefaultPrinterNameFromGlobalPrinters() return printerName; } +static PRUint32 strlen(const PRUnichar* s) +{ + PRUint32 len = 0; + if(s) { + while (*s++ != 0) { + len++; + } + } + return len; +} + //------------------------------------------------------------------ // Displays the native Print Dialog @@ -866,7 +876,7 @@ ShowNativePrintDialog(HWND aHWnd, if (!printerName) return NS_ERROR_FAILURE; // Now create a DEVNAMES struct so the the dialog is initialized correctly. - PRUint32 len = nsCRT::strlen(printerName); + PRUint32 len = strlen(printerName); hDevNames = (HGLOBAL)::GlobalAlloc(GHND, len+sizeof(DEVNAMES)+1); DEVNAMES* pDevNames = (DEVNAMES*)::GlobalLock(hDevNames); pDevNames->wDriverOffset = sizeof(DEVNAMES); diff --git a/mozilla/embedding/tests/mfcembed/winEmbedFileLocProvider.cpp b/mozilla/embedding/tests/mfcembed/winEmbedFileLocProvider.cpp index 420bf53c75a..8f203186648 100644 --- a/mozilla/embedding/tests/mfcembed/winEmbedFileLocProvider.cpp +++ b/mozilla/embedding/tests/mfcembed/winEmbedFileLocProvider.cpp @@ -35,7 +35,6 @@ #include "nsILocalFile.h" #include "nsString.h" #include "nsXPIDLString.h" -#include "nsCRT.h" #include @@ -92,23 +91,23 @@ winEmbedFileLocProvider::GetFile(const char *prop, PRBool *persistant, nsIFile * *_retval = nsnull; *persistant = PR_TRUE; - if (nsCRT::strcmp(prop, NS_APP_APPLICATION_REGISTRY_DIR) == 0) + if (strcmp(prop, NS_APP_APPLICATION_REGISTRY_DIR) == 0) { rv = GetProductDirectory(getter_AddRefs(localFile)); } - else if (nsCRT::strcmp(prop, NS_APP_APPLICATION_REGISTRY_FILE) == 0) + else if (strcmp(prop, NS_APP_APPLICATION_REGISTRY_FILE) == 0) { rv = GetProductDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) rv = localFile->AppendNative(APP_REGISTRY_NAME); } - else if (nsCRT::strcmp(prop, NS_APP_DEFAULTS_50_DIR) == 0) + else if (strcmp(prop, NS_APP_DEFAULTS_50_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) rv = localFile->AppendRelativeNativePath(DEFAULTS_DIR_NAME); } - else if (nsCRT::strcmp(prop, NS_APP_PREF_DEFAULTS_50_DIR) == 0) + else if (strcmp(prop, NS_APP_PREF_DEFAULTS_50_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) { @@ -117,8 +116,8 @@ winEmbedFileLocProvider::GetFile(const char *prop, PRBool *persistant, nsIFile * rv = localFile->AppendRelativeNativePath(DEFAULTS_PREF_DIR_NAME); } } - else if (nsCRT::strcmp(prop, NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR) == 0 || - nsCRT::strcmp(prop, NS_APP_PROFILE_DEFAULTS_50_DIR) == 0) + else if (strcmp(prop, NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR) == 0 || + strcmp(prop, NS_APP_PROFILE_DEFAULTS_50_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) { @@ -127,29 +126,29 @@ winEmbedFileLocProvider::GetFile(const char *prop, PRBool *persistant, nsIFile * rv = localFile->AppendRelativeNativePath(DEFAULTS_PROFILE_DIR_NAME); } } - else if (nsCRT::strcmp(prop, NS_APP_USER_PROFILES_ROOT_DIR) == 0) + else if (strcmp(prop, NS_APP_USER_PROFILES_ROOT_DIR) == 0) { rv = GetDefaultUserProfileRoot(getter_AddRefs(localFile)); } - else if (nsCRT::strcmp(prop, NS_APP_RES_DIR) == 0) + else if (strcmp(prop, NS_APP_RES_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) rv = localFile->AppendRelativeNativePath(RES_DIR_NAME); } - else if (nsCRT::strcmp(prop, NS_APP_CHROME_DIR) == 0) + else if (strcmp(prop, NS_APP_CHROME_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) rv = localFile->AppendRelativeNativePath(CHROME_DIR_NAME); } - else if (nsCRT::strcmp(prop, NS_APP_PLUGINS_DIR) == 0) + else if (strcmp(prop, NS_APP_PLUGINS_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) rv = localFile->AppendRelativeNativePath(PLUGINS_DIR_NAME); } - else if (nsCRT::strcmp(prop, NS_APP_SEARCH_DIR) == 0) + else if (strcmp(prop, NS_APP_SEARCH_DIR) == 0) { rv = CloneMozBinDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) @@ -164,11 +163,11 @@ winEmbedFileLocProvider::GetFile(const char *prop, PRBool *persistant, nsIFile * // Please see http://www.mozilla.org/projects/embedding/MRE.html // for more info. on MRE //--------------------------------------------------------------- - else if (nsCRT::strcmp(prop, NS_MRE_DIR) == 0) + else if (strcmp(prop, NS_MRE_DIR) == 0) { rv = GetMreDirectory(getter_AddRefs(localFile)); } - else if (nsCRT::strcmp(prop, NS_MRE_COMPONENT_DIR) == 0) + else if (strcmp(prop, NS_MRE_COMPONENT_DIR) == 0) { rv = GetMreDirectory(getter_AddRefs(localFile)); if (NS_SUCCEEDED(rv)) diff --git a/mozilla/embedding/tests/winEmbed/Makefile.in b/mozilla/embedding/tests/winEmbed/Makefile.in index 1a374b213c2..828dd56f4d5 100644 --- a/mozilla/embedding/tests/winEmbed/Makefile.in +++ b/mozilla/embedding/tests/winEmbed/Makefile.in @@ -62,11 +62,11 @@ CPPSRCS = \ StdAfx.cpp \ $(NULL) -EXTRA_DSO_LIBS = embed_base_s gkgfx +DEFINES += -DXPCOM_GLUE LIBS = \ - $(EXTRA_DSO_LIBS) \ - $(XPCOM_LIBS) \ + $(DIST)/lib/$(LIB_PREFIX)embed_base_s.$(LIB_SUFFIX) \ + $(XPCOM_GLUE_LIBS) \ $(NSPR_LIBS) \ $(NULL) diff --git a/mozilla/htmlparser/src/nsParserService.cpp b/mozilla/htmlparser/src/nsParserService.cpp index 095fda2cb5c..49296ae8db1 100644 --- a/mozilla/htmlparser/src/nsParserService.cpp +++ b/mozilla/htmlparser/src/nsParserService.cpp @@ -23,6 +23,7 @@ #include "nsHTMLEntities.h" #include "nsElementTable.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" nsParserService::nsParserService() : mEntries(0) { diff --git a/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp b/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp index 750a5791266..41635e9cafe 100644 --- a/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp @@ -56,6 +56,7 @@ #include "nsIWindowWatcher.h" #include "nsIDOMWindow.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" class nsAbQueryLDAPMessageListener : public nsILDAPMessageListener { diff --git a/mozilla/mailnews/base/util/nsMsgUtils.cpp b/mozilla/mailnews/base/util/nsMsgUtils.cpp index 2f874c9e100..ffea2de2bc4 100644 --- a/mozilla/mailnews/base/util/nsMsgUtils.cpp +++ b/mozilla/mailnews/base/util/nsMsgUtils.cpp @@ -60,6 +60,7 @@ #include "nsIMimeConverter.h" #include "nsMsgMimeCID.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" static NS_DEFINE_CID(kImapUrlCID, NS_IMAPURL_CID); static NS_DEFINE_CID(kCMailboxUrl, NS_MAILBOXURL_CID); diff --git a/mozilla/modules/libpref/src/nsPrefService.cpp b/mozilla/modules/libpref/src/nsPrefService.cpp index e8c21906bde..ce63ee08f1a 100644 --- a/mozilla/modules/libpref/src/nsPrefService.cpp +++ b/mozilla/modules/libpref/src/nsPrefService.cpp @@ -42,6 +42,7 @@ #include "nsAppDirectoryServiceDefs.h" #include "nsDirectoryServiceDefs.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" #include "nsIFile.h" #include "nsIFileStreams.h" #include "nsILocalFile.h" diff --git a/mozilla/netwerk/protocol/http/src/nsHttpHandler.cpp b/mozilla/netwerk/protocol/http/src/nsHttpHandler.cpp index 33a1f16162e..0f19c6083b5 100644 --- a/mozilla/netwerk/protocol/http/src/nsHttpHandler.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHttpHandler.cpp @@ -41,6 +41,7 @@ #include "nsIStandardURL.h" #include "nsICacheService.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" #include "nsIObserverService.h" #include "nsISupportsPrimitives.h" #include "nsINetModRegEntry.h" diff --git a/mozilla/parser/htmlparser/src/nsParserService.cpp b/mozilla/parser/htmlparser/src/nsParserService.cpp index 095fda2cb5c..49296ae8db1 100644 --- a/mozilla/parser/htmlparser/src/nsParserService.cpp +++ b/mozilla/parser/htmlparser/src/nsParserService.cpp @@ -23,6 +23,7 @@ #include "nsHTMLEntities.h" #include "nsElementTable.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" nsParserService::nsParserService() : mEntries(0) { diff --git a/mozilla/xpcom/build/nsXPComInit.cpp b/mozilla/xpcom/build/nsXPComInit.cpp index 890aee1f030..581c047a47d 100644 --- a/mozilla/xpcom/build/nsXPComInit.cpp +++ b/mozilla/xpcom/build/nsXPComInit.cpp @@ -89,6 +89,7 @@ #endif #include "nsDirectoryService.h" #include "nsDirectoryServiceDefs.h" +#include "nsCategoryManager.h" #include "nsICategoryManager.h" #include "nsStringStream.h" #include "nsMultiplexInputStream.h" @@ -453,6 +454,7 @@ nsresult NS_COM NS_InitXPCOM2(nsIServiceManager* *result, // Category Manager { + extern nsresult NS_CategoryManagerGetFactory( nsIFactory** ); nsCOMPtr categoryManagerFactory; if ( NS_FAILED(rv = NS_CategoryManagerGetFactory(getter_AddRefs(categoryManagerFactory))) ) return rv; @@ -476,6 +478,13 @@ nsresult NS_COM NS_InitXPCOM2(nsIServiceManager* *result, printf("No Persistent Registry Found.\n"); } #endif + + if ( NS_FAILED(rv) ) { + // if we find no persistent registry, we will try to autoregister + // the default components directory. + nsComponentManagerImpl::gComponentManager->AutoRegister(nsnull); + } + // Pay the cost at startup time of starting this singleton. nsIInterfaceInfoManager* iim = XPTI_GetInterfaceInfoManager(); NS_IF_RELEASE(iim); diff --git a/mozilla/xpcom/components/MANIFEST_IDL b/mozilla/xpcom/components/MANIFEST_IDL index 1be86b20531..4e4df83eb40 100644 --- a/mozilla/xpcom/components/MANIFEST_IDL +++ b/mozilla/xpcom/components/MANIFEST_IDL @@ -1,4 +1,3 @@ -nsICategoryHandler.idl nsICategoryManager.idl nsIClassInfo.idl nsIComponentLoader.idl diff --git a/mozilla/xpcom/components/Makefile.in b/mozilla/xpcom/components/Makefile.in index 79b647a5b6c..afc1b86491b 100644 --- a/mozilla/xpcom/components/Makefile.in +++ b/mozilla/xpcom/components/Makefile.in @@ -64,8 +64,6 @@ EXPORTS = \ $(NULL) XPIDLSRCS = \ - nsICategoryHandler.idl \ - nsICategoryManager.idl \ nsIComponentLoader.idl \ nsIComponentLoaderManager.idl \ nsIComponentManagerObsolete.idl \ @@ -79,6 +77,7 @@ SDK_XPIDLSRCS = \ nsIModule.idl \ nsIServiceManager.idl \ nsIComponentManager.idl \ + nsICategoryManager.idl \ $(NULL) EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) diff --git a/mozilla/xpcom/components/makefile.win b/mozilla/xpcom/components/makefile.win index 9701d70e7e1..5bdcbd938ad 100644 --- a/mozilla/xpcom/components/makefile.win +++ b/mozilla/xpcom/components/makefile.win @@ -47,7 +47,6 @@ EXPORTS = \ $(NULL) XPIDLSRCS = \ - .\nsICategoryHandler.idl \ .\nsICategoryManager.idl \ .\nsIClassInfo.idl \ .\nsIComponentLoader.idl \ diff --git a/mozilla/xpcom/components/nsCategoryManager.cpp b/mozilla/xpcom/components/nsCategoryManager.cpp index b1f2f8f587d..a5129f681e6 100644 --- a/mozilla/xpcom/components/nsCategoryManager.cpp +++ b/mozilla/xpcom/components/nsCategoryManager.cpp @@ -37,6 +37,7 @@ * ***** END LICENSE BLOCK ***** */ #include "nsICategoryManager.h" +#include "nsCategoryManager.h" #include "nsCOMPtr.h" #include "nsHashtable.h" @@ -183,17 +184,6 @@ NS_IMETHODIMP nsCategoryManager::GetCategoryEntry( const char *aCategoryName, const char *aEntryName, char **_retval ) - { - // BULLSHIT ALERT: Category `handler's currently not implemented, so just call through - return GetCategoryEntryRaw(aCategoryName, aEntryName, _retval); - } - - - -NS_IMETHODIMP -nsCategoryManager::GetCategoryEntryRaw( const char *aCategoryName, - const char *aEntryName, - char **_retval ) { NS_ASSERTION(aCategoryName, "aCategoryName is NULL!"); NS_ASSERTION(aEntryName, "aEntryName is NULL!"); @@ -212,8 +202,6 @@ nsCategoryManager::GetCategoryEntryRaw( const char *aCategoryName, return status; } - - NS_IMETHODIMP nsCategoryManager::AddCategoryEntry( const char *aCategoryName, const char *aEntryName, @@ -385,30 +373,6 @@ nsCategoryManager::EnumerateCategories(nsISimpleEnumerator **_retval) return status; } - -NS_IMETHODIMP -nsCategoryManager::RegisterCategoryHandler( const char* /* aCategoryName */, - nsICategoryHandler* /* aHandler */, - PRInt32 /* aMode */, - nsICategoryHandler** /* _retval */ ) - { - // BULLSHIT ALERT: Category `handler's currently not implemented - return NS_ERROR_NOT_IMPLEMENTED; - } - - - -NS_IMETHODIMP -nsCategoryManager::UnregisterCategoryHandler( const char *category, - nsICategoryHandler *handler, - nsICategoryHandler *previous ) - { - // BULLSHIT ALERT: Category `handler's currently not implemented. - // Wasn't implemented in the JS version either. - return NS_ERROR_NOT_IMPLEMENTED; - } - - class nsCategoryManagerFactory : public nsIFactory { public: @@ -455,8 +419,6 @@ nsCategoryManagerFactory::LockFactory( PRBool ) return NS_OK; } -extern "C" -NS_EXPORT nsresult NS_CategoryManagerGetFactory( nsIFactory** aFactory ) { @@ -489,7 +451,7 @@ NS_CategoryManagerGetFactory( nsIFactory** aFactory ) * this will attempt to notify the observer with the origin, observerTopic string * as parameter. */ -nsresult +NS_EXPORT nsresult NS_CreateServicesFromCategory(const char *category, nsISupports *origin, const char *observerTopic) diff --git a/mozilla/xpcom/components/nsICategoryHandler.idl b/mozilla/xpcom/components/nsCategoryManager.h similarity index 76% rename from mozilla/xpcom/components/nsICategoryHandler.idl rename to mozilla/xpcom/components/nsCategoryManager.h index 5bad1a324a4..a1a893817c6 100644 --- a/mozilla/xpcom/components/nsICategoryHandler.idl +++ b/mozilla/xpcom/components/nsCategoryManager.h @@ -1,4 +1,4 @@ -/* -*- Mode: idl; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: NPL 1.1/GPL 2.0/LGPL 2.1 * @@ -14,7 +14,7 @@ * * The Original Code is mozilla.org code. * - * The Initial Developer of the Original Code is + * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. @@ -22,7 +22,7 @@ * 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 + * 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 @@ -35,15 +35,12 @@ * * ***** END LICENSE BLOCK ***** */ -#include "nsISupports.idl" -[scriptable, uuid(9c1af822-1dd1-11b2-b8ce-a1d231c7953f)] -interface nsICategoryHandler : nsISupports -{ - /** - * Get the entry for the given category's tag. - * @param category The name of the category ("protocol") - * @param entry The entry you're looking for ("http") - */ - string getCategoryEntry(in string category, in string entry); -}; +#define NS_CATEGORYMANAGER_CLASSNAME "Category Manager" + +/* 16d222a6-1dd2-11b2-b693-f38b02c021b2 */ +#define NS_CATEGORYMANAGER_CID \ +{ 0x16d222a6, 0x1dd2, 0x11b2, \ + {0xb6, 0x93, 0xf3, 0x8b, 0x02, 0xc0, 0x21, 0xb2} } + + diff --git a/mozilla/xpcom/components/nsCategoryManagerUtils.h b/mozilla/xpcom/components/nsCategoryManagerUtils.h index e90adba1d12..f3f963fb7ca 100644 --- a/mozilla/xpcom/components/nsCategoryManagerUtils.h +++ b/mozilla/xpcom/components/nsCategoryManagerUtils.h @@ -41,6 +41,11 @@ #include "nsICategoryManager.h" #include "nsCOMPtr.h" +NS_COM nsresult +NS_CreateServicesFromCategory(const char *category, + nsISupports *origin, + const char *observerTopic); + class NS_COM nsCreateInstanceFromCategory : public nsCOMPtr_helper { public: diff --git a/mozilla/xpcom/components/nsComponentManager.cpp b/mozilla/xpcom/components/nsComponentManager.cpp index 10fa00c2faa..431d796a9a2 100644 --- a/mozilla/xpcom/components/nsComponentManager.cpp +++ b/mozilla/xpcom/components/nsComponentManager.cpp @@ -48,6 +48,7 @@ #include "nsDirectoryService.h" #include "nsDirectoryServiceDefs.h" #include "nsICategoryManager.h" +#include "nsCategoryManager.h" #include "nsCategoryManagerUtils.h" #include "nsIComponentLoader.h" #include "nsIEnumerator.h" @@ -152,7 +153,7 @@ nsCreateInstanceFromCategory::operator()( const nsIID& aIID, void** aInstancePtr nsXPIDLCString value; nsCOMPtr compMgr; nsCOMPtr catman = - do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &status); + do_GetService(kCategoryManagerCID, &status); if (NS_FAILED(status)) goto error; @@ -193,7 +194,7 @@ nsGetServiceFromCategory::operator()( const nsIID& aIID, void** aInstancePtr) co nsresult status; nsXPIDLCString value; nsCOMPtr catman = - do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &status); + do_GetService(kCategoryManagerCID, &status); if (NS_FAILED(status)) goto error; if (!mCategory || !mEntry) { // when categories have defaults, use that for null mEntry @@ -988,9 +989,9 @@ nsComponentManagerImpl::ReadPersistentRegistry() // populate Category Manager. need to get this early so that we don't get // skipped by 'goto out' nsCOMPtr catman; - nsresult rv = GetServiceByContractID(NS_CATEGORYMANAGER_CONTRACTID, - NS_GET_IID(nsICategoryManager), - getter_AddRefs(catman)); + nsresult rv = GetService(kCategoryManagerCID, + NS_GET_IID(nsICategoryManager), + getter_AddRefs(catman)); if (NS_FAILED(rv)) return rv; @@ -3005,10 +3006,14 @@ nsComponentManagerImpl::AutoRegisterImpl(PRInt32 when, else { // Do default components directory - nsCOMPtr directoryService = - do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv); - if (NS_FAILED(rv)) - return rv; + + nsCOMPtr directoryService; + nsDirectoryService::Create(nsnull, + NS_GET_IID(nsIProperties), + getter_AddRefs(directoryService)); + + if (!directoryService) + return NS_ERROR_FAILURE; rv = directoryService->Get(NS_XPCOM_COMPONENT_DIR, NS_GET_IID(nsIFile), diff --git a/mozilla/xpcom/components/nsICategoryManager.idl b/mozilla/xpcom/components/nsICategoryManager.idl index 881da30b142..4a669794e66 100644 --- a/mozilla/xpcom/components/nsICategoryManager.idl +++ b/mozilla/xpcom/components/nsICategoryManager.idl @@ -1,28 +1,49 @@ -/* -*- Mode: idl; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: NPL 1.1/GPL 2.0/LGPL 2.1 + * * The contents of this file are subject to the Netscape Public License - * Version 1.1 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at + * 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/NPL/ * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * 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 - * NPL. + * License. * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * 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 NPL, 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 NPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" #include "nsISimpleEnumerator.idl" -#include "nsICategoryHandler.idl" -#include "nsIFactory.idl" -// change IID if you change this interface! -[scriptable, uuid(5a1e1a2c-1dd2-11b2-a72f-967357e43a00)] +/* + * nsICategoryManager + * @status UNDER_REVIEW - subject to at least bug 157624 + */ + +[scriptable, uuid(3275b2cd-af6d-429a-80d7-f0c5120342ac)] interface nsICategoryManager : nsISupports { /** @@ -33,12 +54,6 @@ interface nsICategoryManager : nsISupports */ string getCategoryEntry(in string aCategory, in string aEntry); - /** - * As above, but do not permit overriding. This is useful to allow - * an override handler to get at the ``normal'' category contents. - */ - string getCategoryEntryRaw(in string aCategory, in string aEntry); - /** * Add an entry to a category. * @param aCategory The name of the category ("protocol") @@ -74,53 +89,14 @@ interface nsICategoryManager : nsISupports */ nsISimpleEnumerator enumerateCategory(in string aCategory); - /** * Enumerate the entries in a category. * @param aCategory The category to be enumerated. */ nsISimpleEnumerator enumerateCategories(); - - const long OVERRIDE = 0; - const long FALLBACK = 1; - - /* - * Register a category handler for override or fallback when - * searching a given category. - * @param aCategory The name of the category ("protocol") - * @param aHandler The handler to be installed - * @param aMode override or fallback? - * @return The previously-installed category handler, if any - */ - nsICategoryHandler registerCategoryHandler(in string aCategory, - in nsICategoryHandler aHandler, - in long aMode); - - /* - * Unregister a category handler for the given category. - * XXX will this cause shutdown problems? Who has owning refs on whom? - * @param category The name of the category ("protocol") - * @param handler The handler to be unregistered. - * @param previous The handler that this one replaced, typically the - * return from the registerCategoryHandler call. - */ - void unregisterCategoryHandler(in string category, - in nsICategoryHandler handler, - in nsICategoryHandler previous); }; + %{C++ #define NS_CATEGORYMANAGER_CONTRACTID "@mozilla.org/categorymanager;1" -#define NS_CATEGORYMANAGER_CLASSNAME "Category Manager" -/* 16d222a6-1dd2-11b2-b693-f38b02c021b2 */ -#define NS_CATEGORYMANAGER_CID \ -{ 0x16d222a6, 0x1dd2, 0x11b2, \ - {0xb6, 0x93, 0xf3, 0x8b, 0x02, 0xc0, 0x21, 0xb2} } - -extern "C" NS_EXPORT nsresult NS_CategoryManagerGetFactory( nsIFactory** ); - -NS_COM nsresult -NS_CreateServicesFromCategory(const char *category, - nsISupports *origin, - const char *observerTopic); %} diff --git a/mozilla/xpcom/io/nsLocalFileWin.cpp b/mozilla/xpcom/io/nsLocalFileWin.cpp index 6dbcc0a8d60..eb275f5dabe 100644 --- a/mozilla/xpcom/io/nsLocalFileWin.cpp +++ b/mozilla/xpcom/io/nsLocalFileWin.cpp @@ -339,7 +339,7 @@ class nsDirEnumerator : public nsISimpleEnumerator *result = mNext; // might return nsnull NS_IF_ADDREF(*result); - + mNext = nsnull; return NS_OK; } @@ -1128,28 +1128,30 @@ nsLocalFile::CopyMove(nsIFile *aParentDir, const nsACString &newName, PRBool fol nsCOMPtr file; iterator->GetNext(getter_AddRefs(item)); file = do_QueryInterface(item); - PRBool isDir, isLink; + if (file) + { + PRBool isDir, isLink; - file->IsDirectory(&isDir); - file->IsSymlink(&isLink); - - if (move) - { - if (followSymlinks) - return NS_ERROR_FAILURE; - - rv = file->MoveToNative(target, nsCString()); - NS_ENSURE_SUCCESS(rv,rv); - } - else - { - if (followSymlinks) - rv = file->CopyToFollowingLinksNative(target, nsCString()); - else - rv = file->CopyToNative(target, nsCString()); - NS_ENSURE_SUCCESS(rv,rv); - } + file->IsDirectory(&isDir); + file->IsSymlink(&isLink); + + if (move) + { + if (followSymlinks) + return NS_ERROR_FAILURE; + rv = file->MoveToNative(target, nsCString()); + NS_ENSURE_SUCCESS(rv,rv); + } + else + { + if (followSymlinks) + rv = file->CopyToFollowingLinksNative(target, nsCString()); + else + rv = file->CopyToNative(target, nsCString()); + NS_ENSURE_SUCCESS(rv,rv); + } + } iterator->HasMoreElements(&more); } // we've finished moving all the children of this directory @@ -1267,8 +1269,8 @@ nsLocalFile::Remove(PRBool recursive) nsCOMPtr file; iterator->GetNext(getter_AddRefs(item)); file = do_QueryInterface(item); - - file->Remove(recursive); + if (file) + file->Remove(recursive); iterator->HasMoreElements(&more); } diff --git a/mozilla/xpcom/macbuild/XPCOMIDL.xml b/mozilla/xpcom/macbuild/XPCOMIDL.xml index 0c027761bb8..fee9618b364 100644 --- a/mozilla/xpcom/macbuild/XPCOMIDL.xml +++ b/mozilla/xpcom/macbuild/XPCOMIDL.xml @@ -976,13 +976,6 @@ Text - - Name - nsICategoryHandler.idl - MacOS - Text - - Name nsICategoryManager.idl @@ -1475,11 +1468,6 @@ nsIScriptableTimer.idl MacOS - - Name - nsICategoryHandler.idl - MacOS - Name nsICategoryManager.idl @@ -2655,13 +2643,6 @@ Text - - Name - nsICategoryHandler.idl - MacOS - Text - - Name nsICategoryManager.idl @@ -3154,11 +3135,6 @@ nsIScriptableTimer.idl MacOS - - Name - nsICategoryHandler.idl - MacOS - Name nsICategoryManager.idl @@ -3449,12 +3425,6 @@ nsIByteArrayInputStream.idl MacOS - - headers - Name - nsICategoryHandler.idl - MacOS - headers Name diff --git a/mozilla/xpfe/components/autocomplete/src/nsLDAPAutoCompleteSession.cpp b/mozilla/xpfe/components/autocomplete/src/nsLDAPAutoCompleteSession.cpp index 5066a7a7901..b7f3c796ae5 100644 --- a/mozilla/xpfe/components/autocomplete/src/nsLDAPAutoCompleteSession.cpp +++ b/mozilla/xpfe/components/autocomplete/src/nsLDAPAutoCompleteSession.cpp @@ -46,6 +46,7 @@ #include "nsIObserverService.h" #include "nsNetUtil.h" #include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" #ifdef PR_LOGGING static PRLogModuleInfo *sLDAPAutoCompleteLogModule = 0;