if (NS_SUCCEEDED(status)) {
nsAutoLock lock(mJARChannel->mLock);  if (NS_SUCCEEDED(status) && mJARChannel->mJarCacheTransport) { NS_ASSERTION(jarCacheTransport == mJARChannel->mJarCacheTransport, "wrong transport");
    NS_IMETHOD OnStopRequest(nsIChannel* jarCacheTransport,                              nsISupports* context,                              nsresult status,                              const PRUnichar* aMsg) {        nsresult rv = NS_OK;        if (NS_SUCCEEDED(status)) {            // after successfully downloading the jar file to the cache,            // start the extraction process:            NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv);            if (NS_FAILED(rv)) return rv;            nsCOMPtr<nsIFileChannel> jarCacheFile;            rv = serv->NewChannelFromNativePath(mJarCacheFile.GetNativePathCString(),                                                 mJARChannel->mLoadGroup,                                                mJARChannel->mCallbacks,                                                mJARChannel->mLoadAttributes,                                                nsnull,                                                mJARChannel->mBufferSegmentSize,                                                mJARChannel->mBufferMaxSize,                                                getter_AddRefs(jarCacheFile));            if (NS_FAILED(rv)) return rv;            rv = mJARChannel->ExtractJARElement(jarCacheFile);        }        return rv;    }