diff --git a/mozilla/embedding/base/Makefile.in b/mozilla/embedding/base/Makefile.in index 44b91a77178..3280268d195 100644 --- a/mozilla/embedding/base/Makefile.in +++ b/mozilla/embedding/base/Makefile.in @@ -66,6 +66,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 47f5d0bf983..39cc18e1f88 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); @@ -172,5 +181,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 70c6713ad8d..9da43faf183 100644 --- a/mozilla/embedding/browser/activex/src/control/Makefile.in +++ b/mozilla/embedding/browser/activex/src/control/Makefile.in @@ -79,10 +79,13 @@ 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) \ $(MOZ_UNICHARUTIL_LIBS) \ + $(XPCOM_GLUE_LIBS) \ $(XPCOM_LIBS) \ $(NSPR_LIBS) \ $(NULL) diff --git a/mozilla/embedding/browser/gtk/tests/Makefile.in b/mozilla/embedding/browser/gtk/tests/Makefile.in index 9b1f2b9bb16..ffe18824a16 100644 --- a/mozilla/embedding/browser/gtk/tests/Makefile.in +++ b/mozilla/embedding/browser/gtk/tests/Makefile.in @@ -24,6 +24,8 @@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk + +IS_COMPONENT = 1 MODULE = gtkembedmoz REQUIRES = xpcom \ @@ -67,6 +69,7 @@ EXTRA_LIBS += $(EXTRA_DSO_LIBS) $(STATIC_EXTRA_LIBS) endif + EXTRA_LIBS += $(MOZ_JS_LIBS) EXTRA_LIBS += $(MOZ_COMPONENT_LIBS) @@ -82,6 +85,13 @@ endif EXTRA_LIBS += \ $(TK_LIBS) \ $(NULL) +DEFINES += -DXPCOM_GLUE + +LIBS += \ + $(DIST)/lib/$(LIB_PREFIX)embed_base_s.$(LIB_SUFFIX) \ + $(XPCOM_GLUE_LIBS) \ + $(NSPR_LIBS) \ + $(NULL) ifeq ($(OS_ARCH), SunOS) ifndef GNU_CC diff --git a/mozilla/embedding/browser/gtk/tests/TestGtkEmbed.cpp b/mozilla/embedding/browser/gtk/tests/TestGtkEmbed.cpp index 77b7ce2e211..9f06f938ad5 100644 --- a/mozilla/embedding/browser/gtk/tests/TestGtkEmbed.cpp +++ b/mozilla/embedding/browser/gtk/tests/TestGtkEmbed.cpp @@ -23,6 +23,7 @@ #include #include #include +#include // mozilla specific headers #include "nsIDOMKeyEvent.h" diff --git a/mozilla/embedding/tests/mfcembed/Makefile.in b/mozilla/embedding/tests/mfcembed/Makefile.in index d6819af177a..31dd0434e2d 100644 --- a/mozilla/embedding/tests/mfcembed/Makefile.in +++ b/mozilla/embedding/tests/mfcembed/Makefile.in @@ -86,11 +86,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 17e4acc5109..f8f5c3ccab6 100644 --- a/mozilla/embedding/tests/mfcembed/MfcEmbed.cpp +++ b/mozilla/embedding/tests/mfcembed/MfcEmbed.cpp @@ -55,7 +55,7 @@ #include "nsIWindowWatcher.h" #include "plstr.h" #include "Preferences.h" -#include "nsCRT.h" +#include "nsIComponentRegistrar.h" #include #include @@ -220,6 +220,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); @@ -235,11 +241,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); } @@ -258,11 +263,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); } @@ -282,11 +286,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); } @@ -702,7 +705,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); @@ -713,7 +716,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. @@ -734,13 +737,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 e0a0b568a6b..198a31b2017 100644 --- a/mozilla/embedding/tests/mfcembed/MfcEmbed.h +++ b/mozilla/embedding/tests/mfcembed/MfcEmbed.h @@ -124,6 +124,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 242beae9bed..20eb3f15782 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)) 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)