mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 04:45:45 +00:00
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:
parent
96b7a35493
commit
2fe768f0e7
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user