If we fail to register or unregister a component, we should remember the error code and return it, BUT we should also still try to register/unregister the rest of the components.

git-svn-id: svn://10.0.0.236/trunk@33883 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mscott%netscape.com
1999-06-05 01:02:42 +00:00
parent 56a212652f
commit 913cb6ae97

View File

@@ -336,9 +336,7 @@ extern "C" NS_EXPORT nsresult
NSRegisterSelf(nsISupports* aServMgr, const char* path)
{
nsresult rv;
nsCOMPtr<nsIServiceManager> servMgr(do_QueryInterface(aServMgr, &rv));
if (NS_FAILED(rv)) return rv;
nsresult finalResult = NS_OK;
NS_WITH_SERVICE(nsIComponentManager, compMgr, kComponentManagerCID, &rv);
if (NS_FAILED(rv)) return rv;
@@ -348,81 +346,96 @@ NSRegisterSelf(nsISupports* aServMgr, const char* path)
"Folder Event",
nsnull,
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kCUrlListenerManagerCID,
"UrlListenerManager",
"component://netscape/messenger/urlListenerManager",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kCMessengerBootstrapCID,
"Netscape Messenger Bootstrapper",
"component://netscape/appshell/component/messenger",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kCMessengerCID,
"Messenger DOM interaction object",
"component://netscape/messenger",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgAccountManagerCID,
"Messenger Account Manager",
"component://netscape/messenger/account-manager",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgAccountCID,
"Messenger User Account",
"component://netscape/messenger/account",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgIdentityCID,
"Messenger User Identity",
"component://netscape/messenger/identity",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kCMsgMailSessionCID,
"Mail Session",
"component://netscape/messenger/services/session",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
// register our RDF datasources:
rv = compMgr->RegisterComponent(kMailNewsFolderDataSourceCID,
"Mail/News Folder Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "mailnewsfolders",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
// register our RDF datasources:
rv = compMgr->RegisterComponent(kMailNewsMessageDataSourceCID,
"Mail/News Message Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "mailnewsmessages",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kCMessageViewDataSourceCID,
"Mail/News Message View Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "mail-messageview",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgAccountManagerDataSourceCID,
"Mail/News Account Manager Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "msgaccountmanager",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgAccountDataSourceCID,
"Mail/News Account Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "msgaccounts",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgIdentityDataSourceCID,
"Mail/News Identity Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "msgidentities",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->RegisterComponent(kMsgServerDataSourceCID,
"Mail/News Server Data Source",
NS_RDF_DATASOURCE_PROGID_PREFIX "msgservers",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
#ifdef DEBUG_bienvenu
printf("register filter service\n");
@@ -430,6 +443,7 @@ NSRegisterSelf(nsISupports* aServMgr, const char* path)
"Message Filter Service",
"component://netscape/messenger/services/filters",
path, PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
#endif
rv = compMgr->RegisterComponent(kMsgBiffManagerCID,
@@ -437,46 +451,59 @@ NSRegisterSelf(nsISupports* aServMgr, const char* path)
"component://netscape/messenger/biffManager",
path,
PR_TRUE, PR_TRUE);
if (NS_FAILED(rv)) finalResult = rv;
#ifdef NS_DEBUG
printf("mailnews registering from %s\n",path);
#endif
return rv;
return finalResult;
}
extern "C" NS_EXPORT nsresult
NSUnregisterSelf(nsISupports* aServMgr, const char* path)
{
nsresult rv;
nsCOMPtr<nsIServiceManager> servMgr(do_QueryInterface(aServMgr, &rv));
if (NS_FAILED(rv)) return rv;
nsresult rv = NS_OK;
nsresult finalResult = NS_OK;
NS_WITH_SERVICE(nsIComponentManager, compMgr, kComponentManagerCID, &rv);
if (NS_FAILED(rv)) return rv;
rv = compMgr->UnregisterComponent(kCUrlListenerManagerCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kCMessengerBootstrapCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kCMsgFolderEventCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kCMsgMailSessionCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kMailNewsFolderDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kMailNewsMessageDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kCMessageViewDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
// Account Manager RDF stuff
rv = compMgr->UnregisterComponent(kMsgAccountManagerDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kMsgAccountDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kMsgIdentityDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
rv = compMgr->UnregisterComponent(kMsgServerDataSourceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
#ifdef DEBUG_bienvenu
rv = compMgr->UnregisterComponent(kMsgFilterServiceCID, path);
if (NS_FAILED(rv)) finalResult = rv;
#endif
//Biff
rv = compMgr->UnregisterComponent(kMsgBiffManagerCID, path);
return rv;
if (NS_FAILED(rv)) finalResult = rv;
return finalResult;
}
////////////////////////////////////////////////////////////////////////////////