bug #14889 CreateServicesFromCategory() moved into xpcom as part of

Lazy loading wallet dll r=morse,gagan sr=jband a=asa
This commit is contained in:
dp%netscape.com 2001-08-28 22:22:27 +00:00
Родитель 96b7a35493
Коммит 2fe768f0e7
2 изменённых файлов: 3 добавлений и 64 удалений

Просмотреть файл

@ -228,7 +228,9 @@ nsHttpHandler::Init()
// Startup the http category
// Bring alive the objects in the http-protocol-startup category
CreateServicesFromCategory(NS_HTTP_STARTUP_CATEGORY);
NS_CreateServicesFromCategory(NS_HTTP_STARTUP_CATEGORY,
NS_STATIC_CAST(nsISupports*,NS_STATIC_CAST(void*,this)),
NS_HTTP_STARTUP_TOPIC);
nsCOMPtr<nsIObserverService> observerSvc =
do_GetService(NS_OBSERVERSERVICE_CONTRACTID, &rv);
@ -1265,67 +1267,6 @@ nsHttpHandler::PrefsCallback(const char *pref, void *self)
return 0;
}
/*
* CreateServicesFromCategory()
*
* Given a category, this convenience functions enumerates the category and
* creates a service of every CID or ContractID registered under the category
*
* @category: Input category
* @return: returns error if any CID or ContractID registered failed to create.
*/
nsresult
nsHttpHandler::CreateServicesFromCategory(const char *category)
{
nsresult rv = NS_OK;
int nFailed = 0;
nsCOMPtr<nsICategoryManager> categoryManager =
do_GetService("@mozilla.org/categorymanager;1", &rv);
if (!categoryManager) return rv;
nsCOMPtr<nsISimpleEnumerator> enumerator;
rv = categoryManager->EnumerateCategory(category,
getter_AddRefs(enumerator));
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsISupports> entry;
while (NS_SUCCEEDED(enumerator->GetNext(getter_AddRefs(entry)))) {
// From here on just skip any error we get.
nsCOMPtr<nsISupportsString> catEntry = do_QueryInterface(entry, &rv);
if (NS_FAILED(rv)) {
nFailed++;
continue;
}
nsXPIDLCString entryString;
rv = catEntry->GetData(getter_Copies(entryString));
if (NS_FAILED(rv)) {
nFailed++;
continue;
}
nsXPIDLCString contractID;
rv = categoryManager->GetCategoryEntry(category,(const char *)entryString, getter_Copies(contractID));
if (NS_FAILED(rv)) {
nFailed++;
continue;
}
LOG(("nsHttpHandler: instantiating [%s]\n", (const char *)contractID));
nsCOMPtr<nsISupports> instance = do_GetService(contractID, &rv);
if (NS_FAILED(rv))
nFailed++;
// try an observer, if it implements it.
nsCOMPtr<nsIObserver> observer = do_QueryInterface(instance, &rv);
if (NS_SUCCEEDED(rv) && observer)
observer->Observe(NS_STATIC_CAST(nsISupports*,NS_STATIC_CAST(void*,this)),
NS_HTTP_STARTUP_TOPIC,
NS_LITERAL_STRING("").get());
}
return (nFailed ? NS_ERROR_FAILURE : NS_OK);
}
/**
* Allocates a C string into that contains a ISO 639 language list
* notated with HTTP "q" values for output with a HTTP Accept-Language

Просмотреть файл

@ -187,8 +187,6 @@ private:
static PRInt32 PR_CALLBACK PrefsCallback(const char *, void *);
nsresult CreateServicesFromCategory(const char *category);
private:
static nsHttpHandler *mGlobalInstance;