NS_ASSERTION(PR_FALSE, "Could not QI to registrar");
NS_WARNING("Could not QI to registrar");
nsresult NS_InitEmbedding(nsILocalFile *mozBinDirectory,                          nsIDirectoryServiceProvider *appFileLocProvider){    nsresult rv;    // Reentrant calls to this method do nothing except increment a counter    sInitCounter++;    if (sInitCounter > 1)        return NS_OK;    // Initialise XPCOM#ifdef HACK_AROUND_NONREENTRANT_INITXPCOM    // Can't call NS_InitXPCom more than once or things go boom!    if (!sXPCOMInitializedFlag)#endif    {        // Initialise XPCOM        NS_InitXPCOM2(&sServiceManager, mozBinDirectory, appFileLocProvider);                #ifdef HACK_AROUND_NONREENTRANT_INITXPCOM        sXPCOMInitializedFlag = PR_TRUE;        sXPCOMCleanupHack.mCleanOnExit = PR_TRUE;#endif    }    // Register components    if (!sRegistryInitializedFlag)    {        nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(sServiceManager, &rv);        if (NS_FAILED(rv))        {            NS_ASSERTION(PR_FALSE, "Could not QI to registrar");            return rv;        }#ifdef DEBUG        rv = registrar->AutoRegister(nsnull);        if (NS_FAILED(rv))        {            NS_ASSERTION(PR_FALSE, "Could not AutoRegister");            return rv;        }        // If the application is using an MRE, then,         // auto register components in the MRE directory as well.        //        // The application indicates that it's using an MRE by        // returning a valid nsIFile when queried (via appFileLocProvider)        // for the NS_MRE_DIR atom as shown below        //        if (appFileLocProvider)        {            nsCOMPtr<nsIFile> mreDir;            PRBool persistent = PR_TRUE;            appFileLocProvider->GetFile(NS_MRE_DIR, &persistent, getter_AddRefs(mreDir));            if (mreDir)            {                rv = registrar->AutoRegister(mreDir);                if (NS_FAILED(rv))                {                    NS_ASSERTION(PR_FALSE, "Could not AutoRegister MRE components");                    return rv;                }            }        }#endif        sRegistryInitializedFlag = PR_TRUE;    }	nsCOMPtr<nsIObserver> mStartupNotifier = do_CreateInstance(NS_APPSTARTUPNOTIFIER_CONTRACTID, &rv);	if(NS_FAILED(rv))		return rv;	mStartupNotifier->Observe(nsnull, APPSTARTUP_TOPIC, nsnull);#ifdef HACK_AROUND_THREADING_ISSUES    // XXX force certain objects to be created on the main thread    nsCOMPtr<nsIStringBundleService> sBundleService;    sBundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);    if (NS_SUCCEEDED(rv))    {        nsCOMPtr<nsIStringBundle> stringBundle;        const char propertyURL[] = "chrome://necko/locale/necko.properties";        rv = sBundleService->CreateBundle(propertyURL,                                          getter_AddRefs(stringBundle));    }#endif    return NS_OK;}