summaryrefslogtreecommitdiffstats
path: root/WebKit/mac/Misc/WebDownload.m
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/mac/Misc/WebDownload.m')
-rw-r--r--WebKit/mac/Misc/WebDownload.m249
1 files changed, 0 insertions, 249 deletions
diff --git a/WebKit/mac/Misc/WebDownload.m b/WebKit/mac/Misc/WebDownload.m
deleted file mode 100644
index 2c53c1b..0000000
--- a/WebKit/mac/Misc/WebDownload.m
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/WebDownload.h>
-
-#import <Foundation/NSURLAuthenticationChallenge.h>
-#import <Foundation/NSURLDownload.h>
-#import <WebKit/WebPanelAuthenticationHandler.h>
-#import <wtf/Assertions.h>
-
-#import "WebTypesInternal.h"
-
-@class NSURLConnectionDelegateProxy;
-
-// FIXME: The following are NSURLDownload SPI - it would be nice to not have to override them at
-// some point in the future
-@interface NSURLDownload (WebDownloadCapability)
-- (id)_initWithLoadingConnection:(NSURLConnection *)connection
- request:(NSURLRequest *)request
- response:(NSURLResponse *)response
- delegate:(id)delegate
- proxy:(NSURLConnectionDelegateProxy *)proxy;
-- (id)_initWithRequest:(NSURLRequest *)request
- delegate:(id)delegate
- directory:(NSString *)directory;
-@end
-
-@interface WebDownloadInternal : NSObject
-{
-@public
- id realDelegate;
-}
-
-- (void)setRealDelegate:(id)rd;
-
-@end
-
-@implementation WebDownloadInternal
-
-- (void)dealloc
-{
- [realDelegate release];
- [super dealloc];
-}
-
-- (void)setRealDelegate:(id)rd
-{
- [rd retain];
- [realDelegate release];
- realDelegate = rd;
-}
-
-- (BOOL)respondsToSelector:(SEL)selector
-{
- if (selector == @selector(downloadDidBegin:) ||
- selector == @selector(download:willSendRequest:redirectResponse:) ||
- selector == @selector(download:didReceiveResponse:) ||
- selector == @selector(download:didReceiveDataOfLength:) ||
- selector == @selector(download:shouldDecodeSourceDataOfMIMEType:) ||
- selector == @selector(download:decideDestinationWithSuggestedFilename:) ||
- selector == @selector(download:didCreateDestination:) ||
- selector == @selector(downloadDidFinish:) ||
- selector == @selector(download:didFailWithError:) ||
- selector == @selector(download:shouldBeginChildDownloadOfSource:delegate:) ||
- selector == @selector(download:didBeginChildDownload:)) {
- return [realDelegate respondsToSelector:selector];
- }
-
- return [super respondsToSelector:selector];
-}
-
-- (void)downloadDidBegin:(NSURLDownload *)download
-{
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
- [[NSProcessInfo processInfo] disableSuddenTermination];
-#endif
- [realDelegate downloadDidBegin:download];
-}
-
-- (NSURLRequest *)download:(NSURLDownload *)download willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
-{
- return [realDelegate download:download willSendRequest:request redirectResponse:redirectResponse];
-}
-
-- (void)download:(NSURLDownload *)download didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
-{
- if ([realDelegate respondsToSelector:@selector(download:didReceiveAuthenticationChallenge:)]) {
- [realDelegate download:download didReceiveAuthenticationChallenge:challenge];
- } else {
- NSWindow *window = nil;
- if ([realDelegate respondsToSelector:@selector(downloadWindowForAuthenticationSheet:)]) {
- window = [realDelegate downloadWindowForAuthenticationSheet:(WebDownload *)download];
- }
-
- [[WebPanelAuthenticationHandler sharedHandler] startAuthentication:challenge window:window];
- }
-}
-
-- (void)download:(NSURLDownload *)download didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
-{
- if ([realDelegate respondsToSelector:@selector(download:didCancelAuthenticationChallenge:)]) {
- [realDelegate download:download didCancelAuthenticationChallenge:challenge];
- } else {
- [[WebPanelAuthenticationHandler sharedHandler] cancelAuthentication:challenge];
- }
-}
-
-- (void)download:(NSURLDownload *)download didReceiveResponse:(NSURLResponse *)response
-{
- [realDelegate download:download didReceiveResponse:response];
-}
-
-- (void)download:(NSURLDownload *)download didReceiveDataOfLength:(NSUInteger)length
-{
- [realDelegate download:download didReceiveDataOfLength:length];
-}
-
-- (BOOL)download:(NSURLDownload *)download shouldDecodeSourceDataOfMIMEType:(NSString *)encodingType
-{
- return [realDelegate download:download shouldDecodeSourceDataOfMIMEType:encodingType];
-}
-
-- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename
-{
- [realDelegate download:download decideDestinationWithSuggestedFilename:filename];
-}
-
-- (void)download:(NSURLDownload *)download didCreateDestination:(NSString *)path
-{
- [realDelegate download:download didCreateDestination:path];
-}
-
-- (void)downloadDidFinish:(NSURLDownload *)download
-{
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
- [[NSProcessInfo processInfo] enableSuddenTermination];
-#endif
- [realDelegate downloadDidFinish:download];
-}
-
-- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error
-{
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
- [[NSProcessInfo processInfo] enableSuddenTermination];
-#endif
- [realDelegate download:download didFailWithError:error];
-}
-
-- (NSURLRequest *)download:(NSURLDownload *)download shouldBeginChildDownloadOfSource:(NSURLRequest *)child delegate:(id *)childDelegate
-{
- return [realDelegate download:download shouldBeginChildDownloadOfSource:child delegate:childDelegate];
-}
-
-- (void)download:(NSURLDownload *)parent didBeginChildDownload:(NSURLDownload *)child
-{
- [realDelegate download:parent didBeginChildDownload:child];
-}
-
-@end
-
-@implementation WebDownload
-
-- (void)_setRealDelegate:(id)delegate
-{
- if (_webInternal == nil) {
- _webInternal = [[WebDownloadInternal alloc] init];
- [_webInternal setRealDelegate:delegate];
- } else {
- ASSERT(_webInternal == delegate);
- }
-}
-
-- (id)init
-{
- self = [super init];
- if (self != nil) {
- // _webInternal can be set up before init by _setRealDelegate
- if (_webInternal == nil) {
- _webInternal = [[WebDownloadInternal alloc] init];
- }
- }
- return self;
-}
-
-- (void)dealloc
-{
- [_webInternal release];
- [super dealloc];
-}
-
-- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate
-{
- [self _setRealDelegate:delegate];
- return [super initWithRequest:request delegate:_webInternal];
-}
-
-- (id)_initWithLoadingConnection:(NSURLConnection *)connection
- request:(NSURLRequest *)request
- response:(NSURLResponse *)response
- delegate:(id)delegate
- proxy:(NSURLConnectionDelegateProxy *)proxy
-{
- [self _setRealDelegate:delegate];
- return [super _initWithLoadingConnection:connection request:request response:response delegate:_webInternal proxy:proxy];
-}
-
-- (id)_initWithRequest:(NSURLRequest *)request
- delegate:(id)delegate
- directory:(NSString *)directory
-{
- [self _setRealDelegate:delegate];
- return [super _initWithRequest:request delegate:_webInternal directory:directory];
-}
-
-- (void)connection:(NSURLConnection *)connection willStopBufferingData:(NSData *)data
-{
- // NSURLConnection calls this method even if it is not implemented.
- // This happens because NSURLConnection caches the results of respondsToSelector.
- // Those results become invalid when the delegate of NSURLConnectionDelegateProxy is changed.
- // This is a workaround since this problem needs to be fixed in NSURLConnectionDelegateProxy.
- // <rdar://problem/3913270> NSURLConnection calls unimplemented delegate method in WebDownload
-}
-
-@end