[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:40:43 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 0105f078c9419bf69bd917fb9f74e70b738d983f
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue May 6 21:31:44 2003 +0000

            - removed obsolete file that's still around for some reason
    
            * Downloads.subproj/WebDownload.m: Removed.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@4293 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 15595cd..b6c698a 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,5 +1,11 @@
 2003-05-06  Darin Adler  <darin at apple.com>
 
+        - removed obsolete file that's still around for some reason
+
+        * Downloads.subproj/WebDownload.m: Removed.
+
+2003-05-06  Darin Adler  <darin at apple.com>
+
         - fixed crash on startup
 
         * History.subproj/WebHistoryItem.m:
diff --git a/WebKit/Downloads.subproj/WebDownload.m b/WebKit/Downloads.subproj/WebDownload.m
deleted file mode 100644
index 0a6bbde..0000000
--- a/WebKit/Downloads.subproj/WebDownload.m
+++ /dev/null
@@ -1,995 +0,0 @@
-//
-//  WebDownload.m
-//  WebKit
-//
-//  Created by Chris Blumenberg on Thu Apr 11 2002.
-//  Copyright (c) 2003 Apple Computer, Inc.
-//
-
-#import <WebKit/WebDownloadPrivate.h>
-
-#import <WebKit/WebBinHexDecoder.h>
-#import <WebKit/WebDownloadDecoder.h>
-#import <WebKit/WebGZipDecoder.h>
-#import <WebKit/WebKitErrorsPrivate.h>
-#import <WebKit/WebKitLogging.h>
-#import <WebKit/WebMacBinaryDecoder.h>
-#import <WebKit/WebMainResourceClient.h>
-#import <WebKit/WebNSWorkspaceExtras.h>
-
-#import <WebFoundation/WebNSErrorExtras.h>
-#import <WebFoundation/WebNSFileManagerExtras.h>
-#import <WebFoundation/WebNSStringExtras.h>
-#import <WebFoundation/NSURLRequest.h>
-#import <WebFoundation/NSURLConnection.h>
-#import <WebFoundation/NSURLResponse.h>
-#import <WebFoundation/NSURLResponsePrivate.h>
-
-typedef struct WebFSForkIOParam
-{
-    FSForkIOParam paramBlock;
-    WebDownload *download;
-    NSData *data;
-} WebFSForkIOParam;
-
-typedef struct WebFSRefParam
-{
-    FSRefParam paramBlock;
-    WebDownload *download;
-} WebFSRefParam;
-
- at interface WebDownloadPrivate : NSObject
-{
- at public
-    NSMutableArray *decoderSequence;
-    NSMutableData *bufferedData;
-
-    FSRefPtr fileRefPtr;
-
-    SInt16 dataForkRefNum;
-    SInt16 resourceForkRefNum;
-
-    BOOL deleteFile;
-    BOOL isDownloading;
-    BOOL areWritesCancelled;
-    BOOL encounteredCloseError;
-
-    NSURLConnection *connection;
-    NSURLRequest *request;
-    NSURLResponse *response;
-    WebResourceDelegateProxy *proxy;
-
-    id delegate;
-
-    NSString *path;
-    NSString *tempPath;
-    NSString *directoryPath;
-}
- at end
-
-static NSArray *decoderClasses = nil;
-
-static void WriteCompletionCallback(ParmBlkPtr paramBlock);
-static void CloseCompletionCallback(ParmBlkPtr paramBlock);
-static void DeleteCompletionCallback(ParmBlkPtr paramBlock);
-
- at interface WebDownload (ForwardDeclarations)
-#pragma mark LOADING
-- (void)_downloadStarted;
-- (void)_downloadEnded;
-- (void)_setRequest:(NSURLRequest *)request;
-- (void)_setResponse:(NSURLResponse *)response;
-#pragma mark CREATING
-- (NSString *)_pathWithUniqueFilenameForPath:(NSString *)path;
-- (BOOL)_createFSRefForPath:(NSString *)path;
-- (BOOL)_createFileIfNecessary;
-#pragma mark DECODING
-- (void)_decodeHeaderData:(NSData *)headerData dataForkData:(NSData **)dataForkData resourceForkData:(NSData **)resourceForkData;
-- (BOOL)_decodeData:(NSData *)data dataForkData:(NSData **)dataForkData resourceForkData:(NSData **)resourceForkData;
-- (NSError *)_decodeData:(NSData *)data;
-- (NSData *)_dataIfDoneBufferingData:(NSData *)data;
-- (BOOL)_finishDecoding;
-#pragma mark WRITING
-- (BOOL)_writeForkData:(NSData *)data isDataFork:(BOOL)isDataFork;
-- (NSError *)_writeDataForkData:(NSData *)dataForkData resourceForkData:(NSData *)resourceForkData;
-#pragma mark CLOSING;
-- (BOOL)_isFileClosed;
-- (void)_didCloseFile:(NSError *)error;
-- (void)_closeForkAsync:(SInt16)forkRefNum;
-- (BOOL)_closeForkSync:(SInt16)forkRefNum;
-- (void)_closeFileAsync;
-- (BOOL)_closeFileSync;
-#pragma mark DELETING
-- (void)_didDeleteFile;
-- (void)_deleteFileAsnyc;
-- (void)_closeAndDeleteFileAsync;
-- (void)_cancelWithError:(NSError *)error;
-- (void)_cancelWithErrorCode:(int)code;
-#pragma mark MISC
-- (void)_setDelegate:(id)delegate;
-- (void)_setPath:(NSString *)path;
-- (NSString *)_currentPath;
-- (NSError *)_errorWithCode:(int)code;
-- (SInt16)_dataForkReferenceNumber;
-- (void)_setDataForkReferenceNumber:(SInt16)forkRefNum;
-- (SInt16)_resourceForkReferenceNumber;
-- (void)_setResourceForkReferenceNumber:(SInt16)forkRefNum;
-- (BOOL)_areWritesCancelled;
-- (void)_setWritesCancelled:(BOOL)cancelled;
-- (BOOL)_encounteredCloseError;
-- (void)_setEncounteredCloseError:(BOOL)encounteredCloseError;
- at end
-
- at implementation WebDownloadPrivate
-
-+ (void)initialize
-{
-    decoderClasses = [[NSArray arrayWithObjects:
-        [WebBinHexDecoder class],
-        [WebMacBinaryDecoder class],
-        [WebGZipDecoder class],
-        nil] retain];
-}
-
-- (void)dealloc
-{
-    ASSERT(!connection);
-    ASSERT(!delegate);
-    ASSERT(!isDownloading);
-
-    free(fileRefPtr);
-    
-    [bufferedData release];
-    [decoderSequence release];
-    [request release];
-    [connection release];
-    [response release];
-    [proxy setDelegate:nil];
-    [proxy release];
-    [path release];
-    [tempPath release];
-    [directoryPath release];
-    [super dealloc];
-}
-
- at end
-
- at implementation WebDownload
-
-- initWithRequest:(NSURLRequest *)request
-{
-    ASSERT(request);
-    
-    [super init];
-    
-    _private = [[WebDownloadPrivate alloc] init];
-    _private->request = [request retain];
-    
-    return self;
-}
-
-- _initWithLoadingResource:(NSURLConnection *)connection
-                   request:(NSURLRequest *)request
-                  response:(NSURLResponse *)response
-                  delegate:(id)delegate
-                     proxy:(WebResourceDelegateProxy *)proxy
-{
-    [super init];
-     
-    _private = [[WebDownloadPrivate alloc] init];
-    [self _downloadStarted];
-    
-    _private->request =  [request retain];
-    _private->connection = [connection retain];
-    _private->response = [response retain];
-    _private->proxy = 	 [proxy retain];
-    [self _setDelegate:delegate];
-    [_private->proxy setDelegate:self];
-
-    // Replay the delegate methods that would be called in the standalone download case.
-    if ([_private->delegate respondsToSelector:@selector(download:didStartFromRequest:)]) {
-        [_private->delegate download:self didStartFromRequest:_private->request];
-    }
-
-    if ([_private->delegate respondsToSelector:@selector(download:willSendRequest:redirectResponse:)]) {
-        NSURLRequest *request = [_private->delegate download:self willSendRequest:_private->request redirectResponse:nil];
-        if (request != _private->request) {
-            // If the request is altered, cancel the connection and start a new one.
-            [self cancel];
-            if (request) {
-                [self _setRequest:request];
-                [self _setResponse:nil];
-                [_private->connection release];
-                _private->connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
-                [self _downloadStarted];
-            }
-            return self;
-        }
-    }
-
-    if ([_private->delegate respondsToSelector:@selector(download:didReceiveResponse:)]) {
-        [_private->delegate download:self didReceiveResponse:_private->response];
-    }
-    
-    return self;
-}
-
-+ _downloadWithLoadingResource:(NSURLConnection *)connection
-                       request:(NSURLRequest *)request
-                      response:(NSURLResponse *)response
-                      delegate:(id)delegate
-                         proxy:(WebResourceDelegateProxy *)proxy
-{
-    return [[[WebDownload alloc] _initWithLoadingResource:connection
-                                                  request:request
-                                                 response:response
-                                                 delegate:delegate
-                                                    proxy:proxy] autorelease];
-}
-
-- (void)dealloc
-{
-    [_private release];
-    [super dealloc];
-}
-
-- (void)loadWithDelegate:(id)delegate
-{
-    if (!_private->isDownloading) {
-        [self _setDelegate:delegate];
-        // send this synthetic delegate callback since clients expect it, and
-        // we no longer send the callback from within NSURLConnection for
-        // initial requests.
-        NSURLRequest *request = [self connection:nil willSendRequest:_private->request redirectResponse:nil];
-        _private->connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
-        [self _downloadStarted];
-        
-        if ([_private->delegate respondsToSelector:@selector(download:didStartFromRequest:)]) {
-            [_private->delegate download:self didStartFromRequest:request];
-        }
-    }
-}
-
-- (void)cancel
-{
-    [self _cancelWithError:nil];
-}
-
-- (NSString *)path
-{
-    return _private->path;
-}
-
-// setPath: is not public. This is the WebDownloadDecisionListener method.
-- (void)setPath:(NSString *)path
-{
-    [self _setPath:path];
-}
-
-#pragma mark LOADING
-
-- (void)_downloadStarted
-{
-    if (!_private->isDownloading) {
-        _private->isDownloading = YES;
-        
-        // Retain self while loading so we aren't released during the load.
-        [self retain];
-    }
-}
-
-- (void)_downloadEnded
-{
-    if (_private->isDownloading) {
-        _private->isDownloading = NO;
-
-        [_private->connection release];
-        _private->connection = nil;
-
-        [self _setDelegate:nil];
-
-        // Balance the retain from when the load started.
-        [self release];
-    }
-}
-
-- (void)_setRequest:(NSURLRequest *)request
-{
-    if (_private->request != request) {
-        [_private->request release];
-        _private->request = [request retain];
-    }
-}
-
-- (void)_setResponse:(NSURLResponse *)response
-{
-    if (_private->response != response) {
-        [_private->response release];
-        _private->response = [response retain];
-    }
-}
-
-- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)theRequest redirectResponse:(NSURLResponse *)redirectResponse
-{
-    NSURLRequest *request = nil;
-    
-    if ([_private->delegate respondsToSelector:@selector(download:willSendRequest:redirectResponse:)]) {
-        request = [_private->delegate download:self willSendRequest:theRequest redirectResponse:redirectResponse];
-    } else {
-        request = theRequest;
-    }
-
-    [self _setRequest:request];
-    
-    if (!request) {
-        [self _downloadEnded];
-    }
-
-    return request;
-}
-
-- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
-{
-    [self _setResponse:response];
-    
-    if ([_private->delegate respondsToSelector:@selector(download:didReceiveResponse:)]) {
-        [_private->delegate download:self didReceiveResponse:response];
-    }
-}
-
-- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
-{
-    if ([_private->delegate respondsToSelector:@selector(download:didReceiveDataOfLength:)]) {
-        [_private->delegate download:self didReceiveDataOfLength:[data length]];
-    }
-    
-    NSError *error = [self _decodeData:[self _dataIfDoneBufferingData:data]];
-    if (error) {
-        [self _cancelWithError:error];
-    }
-}
-
-- (void)connectionDidFinishLoading:(NSURLConnection *)connection
-{    
-    NSError *error = [self _decodeData:_private->bufferedData];
-    [_private->bufferedData release];
-    _private->bufferedData = nil;
-    if (error) {
-        [self _cancelWithError:error];
-        return;
-    }
-
-    if (![self _finishDecoding]) {
-        ERROR("Download decoding failed.");
-        [self _cancelWithErrorCode:WebKitErrorDownloadDecodingFailedToComplete];
-        return;
-    }
-
-    [self _closeFileAsync];
-}
-
-- (void)connection:(NSURLConnection *)connection didFailLoadingWithError:(NSError *)error
-{    
-    [self _cancelWithError:error];
-}
-
-#pragma mark CREATING
-
-- (NSString *)_pathWithUniqueFilenameForPath:(NSString *)path
-{
-    // "Fix" the filename of the path.
-    NSString *filename = [[path lastPathComponent] _web_filenameByFixingIllegalCharacters];
-    path = [[path stringByDeletingLastPathComponent] stringByAppendingPathComponent:filename];
-        
-    NSFileManager *fileManager = [NSFileManager defaultManager];
-    if ([fileManager fileExistsAtPath:path]) {
-        // Don't overwrite existing files by appending "-n" or "-n.ext" to the filename.
-        NSString *pathWithoutExtension = [path stringByDeletingPathExtension];
-        NSString *extension = [path pathExtension];
-        NSString *pathWithAppendedNumber;
-        unsigned i;
-
-        for (i = 1; 1; i++) {
-            pathWithAppendedNumber = [NSString stringWithFormat:@"%@-%d", pathWithoutExtension, i];
-            if (extension && [extension length]) {
-                path = [pathWithAppendedNumber stringByAppendingPathExtension:extension];
-            } else {
-                path = pathWithAppendedNumber;
-            }
-            if (![fileManager fileExistsAtPath:path]) {
-                break;
-            }
-        }
-    }
-
-    return path;
-}
-
-- (BOOL)_createFSRefForPath:(NSString *)path
-{
-    free(_private->fileRefPtr);    
-    _private->fileRefPtr = malloc(sizeof(FSRef));
-    
-    OSErr result = FSPathMakeRef((const UInt8 *)[path fileSystemRepresentation], _private->fileRefPtr, NULL);
-    if (result != noErr) {
-        ERROR("FSPathMakeRef failed.");
-        free(_private->fileRefPtr);
-        _private->fileRefPtr = NULL;
-        return NO;
-    }
-
-    return YES;
-}
-
-- (BOOL)_createFileIfNecessary
-{
-    if (_private->fileRefPtr) {
-        // File is already created.
-        return YES;
-    }
-
-    NSObject <WebDownloadDecoder> *lastDecoder = [_private->decoderSequence lastObject];
-    NSMutableDictionary *attributes = [[lastDecoder fileAttributes] mutableCopy];
-    NSFileManager *fileManager = [NSFileManager defaultManager];
-
-    if (!attributes) {
-        attributes = [[NSMutableDictionary alloc] init];
-    }
-    if (![attributes objectForKey:NSFileCreationDate]) {
-        [attributes setObject:[_private->response _createdDate] forKey:NSFileCreationDate];
-    }
-    if (![attributes objectForKey:NSFileModificationDate]) {
-        [attributes setObject:[_private->response _createdDate] forKey:NSFileModificationDate];
-    }
-
-    NSString *filename = [[lastDecoder filename] _web_filenameByFixingIllegalCharacters];
-    if ([filename length] == 0) {
-        filename = [_private->response suggestedFilename];
-    }
-
-    ASSERT(!_private->path);
-
-    NSString *path = nil;
-        
-    // Check if the directory is predetermined. If not, ask for a path.
-    if (_private->directoryPath) {
-        path = [_private->directoryPath stringByAppendingPathComponent:filename];
-        [self _setPath:path];
-    } else {
-        if ([_private->delegate respondsToSelector:@selector(download:decidePathWithListener:suggestedFilename:)]) {
-            [_private->delegate download:self
-                  decidePathWithListener:(id <WebDownloadDecisionListener>)self
-                       suggestedFilename:filename];
-        }
-    }
-
-    if (_private->path) {
-        // Path was immeditately set.
-        path = _private->path;
-    } else {
-        // Path wasn't immeditately set. Create the file in /tmp.
-        // FIXME: Consider downloading the file to the default download directory or some other location.
-        char *pathC = strdup("/tmp/WebKitDownload.XXXXXX");
-        if (mktemp(pathC)) {
-            _private->tempPath = [[NSString alloc] initWithCString:pathC];
-            path = _private->tempPath;
-        }
-        free(pathC);
-        if (!path) {
-            ERROR("mktemp failed to create a unique filename in /tmp.");
-            return NO;
-        }
-    }
-
-    if (![fileManager _web_createFileAtPath:path contents:nil attributes:attributes]) {
-        ERROR("-[NSFileManager _web_createFileAtPath:contents:attributes:] failed.");
-        return NO;
-    }
-
-    if (![self _createFSRefForPath:path]) {
-        return NO;
-    }
-
-    [[NSWorkspace sharedWorkspace] _web_noteFileChangedAtPath:path];
-
-    if (_private->path && [_private->delegate respondsToSelector:@selector(download:didCreateFileAtPath:)]) {
-        [_private->delegate download:self didCreateFileAtPath:_private->path];
-    }
-    
-    return YES;
-}
-
-
-#pragma mark DECODING
-
-- (void)_decodeHeaderData:(NSData *)headerData
-             dataForkData:(NSData **)dataForkData
-         resourceForkData:(NSData **)resourceForkData
-{
-    ASSERT(headerData);
-    ASSERT([headerData length]);
-    ASSERT(dataForkData);
-    ASSERT(resourceForkData);
-
-    unsigned i;
-    for (i = 0; i < [decoderClasses count]; i++) {
-        Class decoderClass = [decoderClasses objectAtIndex:i];
-        
-        if ([decoderClass canDecodeHeaderData:headerData]) {
-            NSObject <WebDownloadDecoder> *decoder = [[[decoderClass alloc] init] autorelease];
-            BOOL didDecode = [decoder decodeData:headerData dataForkData:dataForkData resourceForkData:resourceForkData];
-            if (!didDecode) {
-                // Though the decoder said it could decode the header, actual decoding failed. Shouldn't happen.
-                ERROR("Download decoder \"%s\" failed to decode header even though it claimed to handle it.",
-                      [[decoder className] lossyCString]);
-                continue;
-            }
-
-            [_private->decoderSequence addObject:decoder];
-
-            [self _decodeHeaderData:*dataForkData dataForkData:dataForkData resourceForkData:resourceForkData];
-            break;
-        }
-    }
-}
-
-- (BOOL)_decodeData:(NSData *)data
-      dataForkData:(NSData **)dataForkData
-  resourceForkData:(NSData **)resourceForkData
-{
-    ASSERT(data);
-    ASSERT([data length]);
-    ASSERT(dataForkData);
-    ASSERT(resourceForkData);
-
-    if (!_private->decoderSequence) {
-        _private->decoderSequence = [[NSMutableArray array] retain];
-        [self _decodeHeaderData:data dataForkData:dataForkData resourceForkData:resourceForkData];
-
-        if ([_private->decoderSequence count] > 0 &&
-            [_private->delegate respondsToSelector:@selector(downloadShouldDecodeEncodedFile:)] &&
-            ![_private->delegate downloadShouldDecodeEncodedFile:self]) {
-            [_private->decoderSequence removeAllObjects];
-        }
-    } else {
-        unsigned i;
-        for (i = 0; i< [_private->decoderSequence count]; i++) {
-            NSObject <WebDownloadDecoder> *decoder = [_private->decoderSequence objectAtIndex:i];
-            BOOL didDecode = [decoder decodeData:data dataForkData:dataForkData resourceForkData:resourceForkData];
-
-            if (!didDecode) {
-                return NO;
-            }
-
-            data = *dataForkData;
-        }
-    }
-
-    if ([_private->decoderSequence count] == 0) {
-        *dataForkData = data;
-        *resourceForkData = nil;
-    }
-
-    return YES;
-}
-
-- (NSError *)_decodeData:(NSData *)data
-{
-    if ([data length] == 0) {
-        return nil;
-    }
-
-    NSData *dataForkData = nil;
-    NSData *resourceForkData = nil;
-
-    if (![self _decodeData:data dataForkData:&dataForkData resourceForkData:&resourceForkData]) {
-        ERROR("Download decoding failed.");
-        return [self _errorWithCode:WebKitErrorDownloadDecodingFailedMidStream];
-    }
-
-    NSError *error = [self _writeDataForkData:dataForkData resourceForkData:resourceForkData];
-    if (error) {
-        return error;
-    }
-
-    return nil;
-}
-
-- (NSData *)_dataIfDoneBufferingData:(NSData *)data
-{
-    ASSERT([data length] > 0);
-    
-    if (!_private->bufferedData) {
-        _private->bufferedData = [data mutableCopy];
-    } else if ([_private->bufferedData length] == 0) {
-        // When bufferedData's length is 0, we're done buffering.
-        return data;
-    } else {
-        // Append new data.
-        [_private->bufferedData appendData:data];
-    }
-
-    if ([_private->bufferedData length] >= WEB_DOWNLOAD_DECODER_MINIMUM_HEADER_LENGTH) {
-        // We've have enough now. Make a copy so we can set bufferedData's length to 0,
-        // so we're know we're done buffering.
-        data = [[_private->bufferedData copy] autorelease];
-        [_private->bufferedData release];
-        _private->bufferedData = [[NSMutableData alloc] init];
-        return data;
-    } else {
-        // Keep buffering. The header is not big enough to determine the encoding sequence.
-        return nil;
-    }
-}
-
-- (BOOL)_finishDecoding
-{
-    NSObject <WebDownloadDecoder> *decoder;
-    unsigned i;
-
-    for (i = 0; i < [_private->decoderSequence count]; i++) {
-        decoder = [_private->decoderSequence objectAtIndex:i];
-        if (![decoder finishDecoding]) {
-            return NO;
-        }
-    }
-
-    return YES;
-}
-
-#pragma mark WRITING
-
-- (BOOL)_writeForkData:(NSData *)data isDataFork:(BOOL)isDataFork
-{
-    SInt16 *forkRefNum = isDataFork ? &_private->dataForkRefNum : &_private->resourceForkRefNum;
-
-    if (*forkRefNum == 0) {
-        HFSUniStr255 forkName;
-        OSErr result = isDataFork ? FSGetDataForkName(&forkName) : FSGetResourceForkName(&forkName);
-        if (result != noErr) {
-            ERROR("Couldn't get fork name of download file.");
-            return NO;
-        }
-
-        result = FSOpenFork(_private->fileRefPtr, forkName.length, forkName.unicode, fsWrPerm, forkRefNum);
-        if (result != noErr) {
-            ERROR("Couldn't open fork of download file.");
-            return NO;
-        }
-    }
-
-    data = [data copy];
-    WebFSForkIOParam *block = malloc(sizeof(WebFSForkIOParam));
-    block->paramBlock.ioCompletion = WriteCompletionCallback;
-    block->paramBlock.forkRefNum = *forkRefNum;
-    block->paramBlock.positionMode = fsAtMark;
-    block->paramBlock.positionOffset = 0;
-    block->paramBlock.requestCount = [data length];
-    block->paramBlock.buffer = (Ptr)[data bytes];
-    block->download = [self retain];
-    block->data = data;
-    PBWriteForkAsync(&block->paramBlock);
-
-    return YES;
-}
-
-- (NSError *)_writeDataForkData:(NSData *)dataForkData resourceForkData:(NSData *)resourceForkData
-{
-    if (![self _createFileIfNecessary]) {
-        return [self _errorWithCode:WebKitErrorCannotCreateFile];
-    }
-
-    BOOL didWrite = YES;
-
-    if ([dataForkData length]) {
-        didWrite = [self _writeForkData:dataForkData isDataFork:YES];
-    }
-
-    if (didWrite && [resourceForkData length]) {
-        didWrite = [self _writeForkData:resourceForkData isDataFork:NO];
-    }
-
-    if (!didWrite) {
-        [self _closeAndDeleteFileAsync];
-        return [self _errorWithCode:WebKitErrorCannotWriteToFile];
-    }
-
-    return nil;
-}
-
-#pragma mark CLOSING
-
-- (BOOL)_isFileClosed
-{
-    return (_private->dataForkRefNum == 0 && _private->resourceForkRefNum == 0);
-}
-
-- (void)_didCloseFile:(NSError *)error
-{        
-    if (_private->deleteFile) {
-        [self _deleteFileAsnyc];
-    } else if (error) {
-        [self _cancelWithError:error];
-    } else {
-        [[NSWorkspace sharedWorkspace] _web_noteFileChangedAtPath:[self _currentPath]];
-        if ([_private->delegate respondsToSelector:@selector(downloadDidFinishDownloading:)]) {
-            [_private->delegate downloadDidFinishDownloading:self];
-        }
-        [self _downloadEnded];
-    }
-}
-
-- (void)_closeForkAsync:(SInt16)forkRefNum
-{
-    if (forkRefNum) {
-        WebFSForkIOParam *block = malloc(sizeof(WebFSForkIOParam));
-        block->paramBlock.ioCompletion = CloseCompletionCallback;
-        block->paramBlock.forkRefNum = forkRefNum;
-        block->download = [self retain];
-        PBCloseForkAsync(&block->paramBlock);
-    }
-}
-
-- (BOOL)_closeForkSync:(SInt16)forkRefNum
-{
-    if (forkRefNum) {
-        OSErr error = FSCloseFork(forkRefNum);
-        if (error != noErr) {
-            ERROR("FSCloseFork failed to close fork of download file with error %d", error);
-            return NO;
-        }
-    }
-
-    return YES;
-}
-
-- (void)_closeFileAsync
-{
-    [self _closeForkAsync:_private->dataForkRefNum];
-    [self _closeForkAsync:_private->resourceForkRefNum];
-}
-
-- (BOOL)_closeFileSync
-{
-    BOOL result = YES;
-
-    if (![self _closeForkSync:_private->dataForkRefNum]) {
-        result = NO;
-    }
-    
-    if (![self _closeForkSync:_private->resourceForkRefNum]) {
-        result = NO;
-    }
-    
-    _private->dataForkRefNum = 0;
-    _private->resourceForkRefNum = 0;
-
-    return result;
-}
-
-#pragma mark DELETING
-
-- (void)_didDeleteFile
-{
-    [[NSWorkspace sharedWorkspace] _web_noteFileChangedAtPath:[self _currentPath]];
-}
-
-- (void)_deleteFileAsnyc
-{
-    if (_private->fileRefPtr) {
-        WebFSRefParam *deleteBlock = malloc(sizeof(WebFSRefParam));
-        deleteBlock->paramBlock.ioCompletion = DeleteCompletionCallback;
-        deleteBlock->paramBlock.ref = _private->fileRefPtr;
-        deleteBlock->download = [self retain];
-        PBDeleteObjectAsync(&deleteBlock->paramBlock);
-        free(_private->fileRefPtr);
-        _private->fileRefPtr = NULL;
-    }
-}
-
-- (void)_closeAndDeleteFileAsync
-{
-    if ([self _isFileClosed]) {
-        [self _deleteFileAsnyc];
-    } else {
-        [self _closeFileAsync];
-        _private->deleteFile = YES;
-    }
-}
-
-- (void)_cancelWithError:(NSError *)error
-{
-    [_private->connection cancel];
-    
-    if (error) {
-        if ([_private->delegate respondsToSelector:@selector(download:didFailDownloadingWithError:)]) {
-            [_private->delegate download:self didFailDownloadingWithError:error];
-        }
-    }
-
-    [self _closeAndDeleteFileAsync];
-    [self _downloadEnded];
-}
-
-- (void)_cancelWithErrorCode:(int)code
-{
-    [self _cancelWithError:[self _errorWithCode:code]];
-}
-
-#pragma mark MISCELLANEOUS
-
-- (void)_setDelegate:(id)delegate;
-{
-    [delegate retain];
-    [_private->delegate release];
-    _private->delegate = delegate;
-}
-
-- (void)_setPath:(NSString *)path
-{
-    ASSERT(path);
-    ASSERT(!_private->path);
-    ASSERT([path isAbsolutePath]);
-
-    // Path has already been set.
-    if (_private->path) {
-        return;
-    }
-
-    if (!path || ![path isAbsolutePath]) {
-        ERROR("setPath: cannot be called with a nil or non-absolute path.");
-        [self cancel];
-        return;
-    }
-
-    // Make sure we don't overwrite an existing file.
-    _private->path = [[self _pathWithUniqueFilenameForPath:path] retain];
-
-    // FIXME: Moving the downloading file synchronously may block the main thread for a long time
-    // if the move is across volumes.
-    if (_private->tempPath && ![_private->tempPath isEqualToString:_private->path]) {
-        if (![self _closeFileSync]) {
-            [self _cancelWithErrorCode:WebKitErrorCannotCloseFile];
-            return;
-        }
-        if (![[NSFileManager defaultManager] movePath:_private->tempPath toPath:_private->path handler:nil]) {
-            [self _cancelWithErrorCode:WebKitErrorCannotMoveFile];
-            return;
-        }
-        if (![self _createFSRefForPath:_private->path]) {
-            [self _cancelWithErrorCode:WebKitErrorCannotCreateFile];
-            return;
-        }
-
-        [[NSWorkspace sharedWorkspace] _web_noteFileChangedAtPath:_private->path];
-
-        if ([_private->delegate respondsToSelector:@selector(download:didCreateFileAtPath:)]) {
-            [_private->delegate download:self didCreateFileAtPath:_private->path];
-        }
-    }
-}
-
-- (void)_setDirectoryPath:(NSString *)directoryPath
-{
-    NSString *copy = [directoryPath copy];
-    [_private->directoryPath release];
-    _private->directoryPath = copy;
-}
-
-- (NSString *)_currentPath
-{
-    return _private->path ? _private->path : _private->tempPath;
-}
-
-- (NSError *)_errorWithCode:(int)code
-{
-    return [NSError _webKitErrorWithCode:code failingURL:[[_private->request URL] absoluteString]];
-}
-
-- (SInt16)_dataForkReferenceNumber
-{
-    return _private->dataForkRefNum;
-}
-
-- (void)_setDataForkReferenceNumber:(SInt16)forkRefNum
-{
-    _private->dataForkRefNum = forkRefNum;
-}
-
-- (SInt16)_resourceForkReferenceNumber
-{
-    return _private->resourceForkRefNum;
-}
-
-- (void)_setResourceForkReferenceNumber:(SInt16)forkRefNum
-{
-    _private->resourceForkRefNum = forkRefNum;
-}
-
-- (BOOL)_areWritesCancelled
-{
-    return _private->areWritesCancelled;
-}
-
-- (void)_setWritesCancelled:(BOOL)cancelled
-{
-    _private->areWritesCancelled = cancelled;
-}
-
-- (BOOL)_encounteredCloseError
-{
-    return _private->encounteredCloseError;
-}
-
-- (void)_setEncounteredCloseError:(BOOL)encounteredCloseError
-{
-    _private->encounteredCloseError = encounteredCloseError;
-}
-
- at end
-
-static void WriteCompletionCallback(ParmBlkPtr paramBlock)
-{
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    WebFSForkIOParam *block = (WebFSForkIOParam *)paramBlock;
-    WebDownload *download = block->download;
-    
-    if (block->paramBlock.ioResult != noErr && ![download _areWritesCancelled]) {
-        ERROR("Writing to fork of download file failed with error: %d", block->paramBlock.ioResult);
-        // Prevent multiple errors from being reported by setting the areWritesCancelled boolean.
-        [download _setWritesCancelled:YES];
-        [download performSelectorOnMainThread:@selector(_cancelWithError:)
-                                   withObject:[download _errorWithCode:WebKitErrorCannotWriteToFile]
-                                waitUntilDone:NO];
-    }
-
-    [download release];
-    [block->data release];
-    [pool release];
-    free(block);
-}
-
-static void CloseCompletionCallback(ParmBlkPtr paramBlock)
-{
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    WebFSForkIOParam *block = (WebFSForkIOParam *)paramBlock;
-    WebDownload *download = block->download;
-    
-    if (block->paramBlock.ioResult != noErr) {
-        ERROR("Closing fork of download file failed with error: %d", block->paramBlock.ioResult);
-        [download _setEncounteredCloseError:YES];
-    }
-
-    if (block->paramBlock.forkRefNum == [download _dataForkReferenceNumber]) {
-        [download _setDataForkReferenceNumber:0];
-    } else {
-        [download _setResourceForkReferenceNumber:0];
-    }
-
-    if ([download _isFileClosed]) {
-        NSError *error = [download _encounteredCloseError] ? [download _errorWithCode:WebKitErrorCannotCloseFile] : nil;
-        [download performSelectorOnMainThread:@selector(_didCloseFile:) withObject:error waitUntilDone:NO];
-    }
-    
-    [download release];
-    [pool release];
-    free(block);
-}
-
-static void DeleteCompletionCallback(ParmBlkPtr paramBlock)
-{
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    WebFSRefParam *block = (WebFSRefParam *)paramBlock;
-    WebDownload *download = block->download;
-    
-    if (block->paramBlock.ioResult != noErr) {
-        ERROR("Removal of download file failed with error: %d", block->paramBlock.ioResult);
-    } else {
-        [download performSelectorOnMainThread:@selector(_didDeleteFile) withObject:nil waitUntilDone:NO];
-    }
-    
-    [download release];
-    [pool release];
-    free(block);
-}
-

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list