Added code to check for existence of a jar file in the cache before downloading it. r=warren

git-svn-id: svn://10.0.0.236/trunk@58232 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
gayatrib%netscape.com 2000-01-19 07:20:31 +00:00
parent ea2ff6086d
commit d5ed53991c
2 changed files with 46 additions and 2 deletions

View File

@ -153,7 +153,7 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler,
mCommand = nsCRT::strdup(command);
if (mCommand == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
mOriginalURI = originalURI;
mOriginalURI = originalURI ? originalURI : uri;
mBufferSegmentSize = bufferSegmentSize;
mBufferMaxSize = bufferMaxSize;
@ -270,6 +270,28 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount,
rv = GetCacheFile(jarCacheFile);
if (NS_FAILED(rv)) return rv;
if (jarCacheFile.IsFile()) {
// then we've already got the file in the local cache -- no need to download it
NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIFileChannel> jarCacheChannel;
rv = serv->NewChannelFromNativePath(jarCacheFile.GetNativePathCString(),
mLoadGroup,
mCallbacks,
mLoadAttributes,
nsnull,
mBufferSegmentSize,
mBufferMaxSize,
getter_AddRefs(jarCacheChannel));
if (NS_FAILED(rv)) return rv;
rv = ExtractJARElement(jarCacheChannel);
return rv;
}
NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv);
if (NS_FAILED(rv)) return rv;

View File

@ -153,7 +153,7 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler,
mCommand = nsCRT::strdup(command);
if (mCommand == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
mOriginalURI = originalURI;
mOriginalURI = originalURI ? originalURI : uri;
mBufferSegmentSize = bufferSegmentSize;
mBufferMaxSize = bufferMaxSize;
@ -270,6 +270,28 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount,
rv = GetCacheFile(jarCacheFile);
if (NS_FAILED(rv)) return rv;
if (jarCacheFile.IsFile()) {
// then we've already got the file in the local cache -- no need to download it
NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIFileChannel> jarCacheChannel;
rv = serv->NewChannelFromNativePath(jarCacheFile.GetNativePathCString(),
mLoadGroup,
mCallbacks,
mLoadAttributes,
nsnull,
mBufferSegmentSize,
mBufferMaxSize,
getter_AddRefs(jarCacheChannel));
if (NS_FAILED(rv)) return rv;
rv = ExtractJARElement(jarCacheChannel);
return rv;
}
NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv);
if (NS_FAILED(rv)) return rv;