Bug 399096 - nsDOMCacheUpdateService leaks. r=dcamp, sr=biesi, a=blocker
This commit is contained in:
Родитель
11b3726243
Коммит
57afced3f0
|
@ -419,9 +419,10 @@ nsOfflineCacheUpdate::Init(PRBool aPartialUpdate,
|
|||
nsresult rv;
|
||||
|
||||
// Make sure the service has been initialized
|
||||
if (!nsOfflineCacheUpdateService::GetInstance()) {
|
||||
nsOfflineCacheUpdateService* service =
|
||||
nsOfflineCacheUpdateService::EnsureService();
|
||||
if (!service)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
LOG(("nsOfflineCacheUpdate::Init [%p]", this));
|
||||
|
||||
|
@ -649,8 +650,8 @@ nsOfflineCacheUpdate::Finish()
|
|||
|
||||
mState = STATE_FINISHED;
|
||||
|
||||
nsOfflineCacheUpdateService *service =
|
||||
nsOfflineCacheUpdateService::GetInstance();
|
||||
nsOfflineCacheUpdateService* service =
|
||||
nsOfflineCacheUpdateService::EnsureService();
|
||||
|
||||
if (!mPartialUpdate) {
|
||||
if (mSucceeded) {
|
||||
|
@ -822,8 +823,8 @@ nsOfflineCacheUpdate::Schedule()
|
|||
{
|
||||
LOG(("nsOfflineCacheUpdate::Schedule [%p]", this));
|
||||
|
||||
nsOfflineCacheUpdateService *service =
|
||||
nsOfflineCacheUpdateService::GetInstance();
|
||||
nsOfflineCacheUpdateService* service =
|
||||
nsOfflineCacheUpdateService::EnsureService();
|
||||
|
||||
if (!service) {
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -837,8 +838,8 @@ nsOfflineCacheUpdate::ScheduleOnDocumentStop(nsIDOMDocument *aDocument)
|
|||
{
|
||||
LOG(("nsOfflineCacheUpdate::ScheduleOnDocumentStop [%p]", this));
|
||||
|
||||
nsOfflineCacheUpdateService *service =
|
||||
nsOfflineCacheUpdateService::GetInstance();
|
||||
nsOfflineCacheUpdateService* service =
|
||||
nsOfflineCacheUpdateService::EnsureService();
|
||||
|
||||
if (!service) {
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -930,6 +931,18 @@ nsOfflineCacheUpdateService::GetInstance()
|
|||
return gOfflineCacheUpdateService;
|
||||
}
|
||||
|
||||
nsOfflineCacheUpdateService *
|
||||
nsOfflineCacheUpdateService::EnsureService()
|
||||
{
|
||||
if (!gOfflineCacheUpdateService) {
|
||||
// Make the service manager hold a long-lived reference to the service
|
||||
nsCOMPtr<nsIOfflineCacheUpdateService> service =
|
||||
do_GetService(NS_OFFLINECACHEUPDATESERVICE_CONTRACTID);
|
||||
}
|
||||
|
||||
return gOfflineCacheUpdateService;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsOfflineCacheUpdateService::Schedule(nsOfflineCacheUpdate *aUpdate)
|
||||
{
|
||||
|
|
|
@ -177,8 +177,15 @@ public:
|
|||
nsIDOMDocument *aDocument);
|
||||
nsresult UpdateFinished(nsOfflineCacheUpdate *aUpdate);
|
||||
|
||||
static nsOfflineCacheUpdateService *GetInstance();
|
||||
/**
|
||||
* Returns the singleton nsOfflineCacheUpdateService without an addref, or
|
||||
* nsnull if the service couldn't be created.
|
||||
*/
|
||||
static nsOfflineCacheUpdateService *EnsureService();
|
||||
|
||||
/** Addrefs and returns the singleton nsOfflineCacheUpdateService. */
|
||||
static nsOfflineCacheUpdateService *GetInstance();
|
||||
|
||||
private:
|
||||
nsresult ProcessNextUpdate();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче