Changeset 18184 in webkit
- Timestamp:
- Dec 12, 2006, 1:14:50 PM (18 years ago)
- Location:
- trunk
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r18181 r18184 1 2006-12-12 Anders Carlsson <acarlsson@apple.com> 2 3 Reviewed by Darin. 4 5 Turn ResourceLoader into a ResourceHandleClient and stop using NSURLConnection in the loader. 6 7 * WebCore.exp: 8 Add new methods needed by WebKit. 9 10 * WebCore.xcodeproj/project.pbxproj: 11 Make ResourceHandle.h a private header. 12 13 * loader/FrameLoaderClient.h: 14 Change the download method to take a ResourceHandle instead of an NSURLConnection. 15 16 * loader/MainResourceLoader.h: 17 Get rid of the proxy instance variable, that's handled by ResourceHandlw now. 18 19 * loader/ResourceLoader.h: 20 (WebCore::ResourceLoader::didReceiveAuthenticationChallenge): 21 (WebCore::ResourceLoader::didCancelAuthenticationChallenge): 22 (WebCore::ResourceLoader::willStopBufferingData): 23 (WebCore::ResourceLoader::willCacheResponse): 24 (WebCore::ResourceLoader::receivedCredential): 25 (WebCore::ResourceLoader::receivedRequestToContinueWithoutCredential): 26 (WebCore::ResourceLoader::receivedCancellation): 27 (WebCore::ResourceLoader::handle): 28 * loader/SubresourceLoader.h: 29 Make ResourceLoader a ResourceHandleClient, moving the methods from SubresourceLoader. 30 31 * loader/mac/MainResourceLoaderMac.mm: 32 (WebCore::MainResourceLoader::MainResourceLoader): 33 (WebCore::MainResourceLoader::continueAfterContentPolicy): 34 (WebCore::MainResourceLoader::loadNow): 35 (WebCore::MainResourceLoader::load): 36 Use a ResourceHandle instead of an NSURLConnection. 37 38 * loader/mac/ResourceLoaderMac.mm: 39 (WebCore::ResourceLoader::~ResourceLoader): 40 (WebCore::ResourceLoader::releaseResources): 41 (WebCore::ResourceLoader::load): 42 (WebCore::ResourceLoader::setDefersLoading): 43 (WebCore::ResourceLoader::resourceData): 44 (WebCore::ResourceLoader::didReceiveAuthenticationChallenge): 45 (WebCore::ResourceLoader::didCancel): 46 (WebCore::ResourceLoader::willSendRequest): 47 (WebCore::ResourceLoader::didReceiveResponse): 48 (WebCore::ResourceLoader::didReceiveData): 49 (WebCore::ResourceLoader::didFinishLoading): 50 (WebCore::ResourceLoader::didFail): 51 Remove the WebCoreResourceLoaderAsDelegate class, use a ResourceHandle instead of an NSURLConnection. 52 53 * loader/mac/SubresourceLoaderMac.mm: 54 Remove ResourceHandleClient methods. 55 56 * platform/network/ResourceHandle.cpp: 57 (WebCore::ResourceHandle::ResourceHandle): 58 (WebCore::ResourceHandle::create): 59 * platform/network/ResourceHandle.h: 60 * platform/network/ResourceHandleInternal.h: 61 (WebCore::ResourceHandleInternal::ResourceHandleInternal): 62 Add an extra argument denoting whether this ResourceHandle can possibly be "converted" into one used for downloads. 63 64 * platform/network/mac/ResourceHandleMac.mm: 65 (WebCore::ResourceHandle::~ResourceHandle): 66 (WebCore::ResourceHandle::start): 67 (WebCore::ResourceHandle::releaseProxy): 68 (WebCore::ResourceHandle::connection): 69 New methods for creating a NSURLConnectionDelegateProxy which is used when creating a NSURLDownload from an existing 70 connection. 71 1 72 2006-12-12 Anders Carlsson <acarlsson@apple.com> 2 73 -
trunk/WebCore/WebCore.exp
r18165 r18184 204 204 __ZN7WebCore14DocumentLoaderD2Ev 205 205 __ZN7WebCore14RenderListItem17markerStringValueEv 206 __ZN7WebCore14ResourceHandle12releaseProxyEv 206 207 __ZN7WebCore14ResourceLoader14cancelledErrorEv 207 208 __ZN7WebCore16DeprecatedString6appendENS_14DeprecatedCharE … … 363 364 __ZNK7WebCore14DocumentLoader8responseEv 364 365 __ZNK7WebCore14DocumentLoader9isLoadingEv 366 __ZNK7WebCore14ResourceHandle10connectionEv 365 367 __ZNK7WebCore14ResourceLoader11frameLoaderEv 366 368 __ZNK7WebCore15ContextMenuItem19platformDescriptionEv -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r18177 r18184 346 346 656B84E30AEA1D3100A095B4 /* ResourceHandleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 656B84DF0AEA1D3100A095B4 /* ResourceHandleInternal.h */; }; 347 347 656B84EB0AEA1DDA00A095B4 /* ResourceHandleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 656B84EA0AEA1DDA00A095B4 /* ResourceHandleMac.mm */; }; 348 656B85380AEA1F9A00A095B4 /* ResourceHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 656B85370AEA1F9A00A095B4 /* ResourceHandle.h */; };348 656B85380AEA1F9A00A095B4 /* ResourceHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 656B85370AEA1F9A00A095B4 /* ResourceHandle.h */; settings = {ATTRIBUTES = (Private, ); }; }; 349 349 656D37320ADBA5DE00A4554D /* LoaderNSURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D371A0ADBA5DE00A4554D /* LoaderNSURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; 350 350 656D37330ADBA5DE00A4554D /* LoaderNSURLExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 656D371B0ADBA5DE00A4554D /* LoaderNSURLExtras.m */; }; -
trunk/WebCore/loader/FrameLoaderClient.h
r17906 r18184 51 51 class NavigationAction; 52 52 class String; 53 class ResourceHandle; 53 54 class ResourceLoader; 54 55 class ResourceRequest; … … 108 109 109 110 #if PLATFORM(MAC) 110 virtual void download( NSURLConnection *, NSURLRequest *, NSURLResponse *, id proxy) = 0;111 virtual void download(ResourceHandle*, NSURLRequest *, NSURLResponse *) = 0; 111 112 112 113 virtual id dispatchIdentifierForInitialRequest(DocumentLoader*, NSURLRequest *) = 0; -
trunk/WebCore/loader/MainResourceLoader.h
r17442 r18184 61 61 virtual void didCancel(NSError *); 62 62 63 virtual void releaseDelegate();64 65 63 NSURLRequest *loadNow(NSURLRequest *); 66 64 … … 78 76 79 77 RetainPtr<NSURLResponse> m_response; 80 RetainPtr<id> m_proxy;81 78 RetainPtr<NSURLRequest> m_initialRequest; 82 79 #endif -
trunk/WebCore/loader/ResourceLoader.h
r18047 r18184 32 32 #include "Shared.h" 33 33 #include <wtf/RefPtr.h> 34 #include "ResourceHandleClient.h" 34 35 35 36 #if PLATFORM(MAC) … … 45 46 @class NSURLRequest; 46 47 @class NSURLResponse; 47 @class WebCoreResourceLoaderAsDelegate;48 48 #else 49 49 class NSCachedURLResponse; … … 58 58 class NSURLRequest; 59 59 class NSURLResponse; 60 class WebCoreResourceLoaderAsDelegate;61 60 #endif 62 61 … … 67 66 class Frame; 68 67 class FrameLoader; 69 70 class ResourceLoader : public Shared<ResourceLoader> { 68 class ResourceHandle; 69 70 class ResourceLoader : public Shared<ResourceLoader>, protected ResourceHandleClient { 71 71 public: 72 72 virtual ~ResourceLoader(); … … 112 112 #endif 113 113 114 // Used to work around the fact that you don't get any more NSURLConnection callbacks until you return from the one you're in. 115 static bool loadsBlocked(); 114 // ResourceHandleClient 115 virtual void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse& redirectResponse); 116 117 virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&); 118 virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived); 119 virtual void didFinishLoading(ResourceHandle*); 120 virtual void didFail(ResourceHandle*, const ResourceError&); 121 122 #if PLATFORM(MAC) 123 virtual void didReceiveAuthenticationChallenge(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { didReceiveAuthenticationChallenge(challenge); } 124 virtual void didCancelAuthenticationChallenge(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { didCancelAuthenticationChallenge(challenge); } 125 126 virtual void willStopBufferingData(ResourceHandle*, NSData *data) { willStopBufferingData(data); } 127 128 virtual NSCachedURLResponse *willCacheResponse(ResourceHandle*, NSCachedURLResponse *cachedResponse) { return willCacheResponse(cachedResponse); } 129 130 virtual void receivedCredential(ResourceHandle*, NSURLAuthenticationChallenge *challenge, NSURLCredential *credential) { receivedCredential(challenge, credential); } 131 virtual void receivedRequestToContinueWithoutCredential(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { receivedRequestToContinueWithoutCredential(challenge); } 132 virtual void receivedCancellation(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { receivedCancellation(challenge); } 133 #endif 134 135 ResourceHandle* handle() const { return m_handle.get(); } 116 136 117 137 protected: … … 119 139 120 140 #if PLATFORM(MAC) 121 WebCoreResourceLoaderAsDelegate *delegate();122 virtual void releaseDelegate();123 124 141 virtual void didCancel(NSError *); 125 142 void didFinishLoadingOnePart(); 126 143 127 NSURLConnection *connection() const { return m_connection.get(); }128 144 NSURLRequest *request() const { return m_request.get(); } 129 145 #endif … … 132 148 bool defersLoading() const { return m_defersLoading; } 133 149 134 #if PLATFORM(MAC) 135 RetainPtr<NSURLConnection> m_connection; 136 #endif 137 150 RefPtr<ResourceHandle> m_handle; 151 138 152 private: 139 153 #if PLATFORM(MAC) … … 155 169 RetainPtr<NSURL> m_originalURL; 156 170 RetainPtr<NSMutableData> m_resourceData; 157 RetainPtr<WebCoreResourceLoaderAsDelegate> m_delegate;158 171 #endif 159 172 bool m_defersLoading; -
trunk/WebCore/loader/SubresourceLoader.h
r18069 r18184 48 48 class SubresourceLoaderClient; 49 49 50 class SubresourceLoader : public ResourceLoader , ResourceHandleClient{50 class SubresourceLoader : public ResourceLoader { 51 51 public: 52 52 static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&); … … 57 57 58 58 #if PLATFORM(MAC) 59 // FIXME: These should go away once ResourceLoader uses ResourceHandle.60 59 virtual bool load(NSURLRequest *); 61 virtual NSData *resourceData();62 virtual void setDefersLoading(bool);63 60 64 61 virtual NSURLRequest *willSendRequest(NSURLRequest *, NSURLResponse *redirectResponse); … … 73 70 #endif 74 71 75 // ResourceHandleClient76 virtual void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse& redirectResponse);77 78 virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);79 virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);80 virtual void didFinishLoading(ResourceHandle*);81 virtual void didFail(ResourceHandle*, const ResourceError&);82 83 #if PLATFORM(MAC)84 virtual void didReceiveAuthenticationChallenge(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { ResourceLoader::didReceiveAuthenticationChallenge(challenge); }85 virtual void didCancelAuthenticationChallenge(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { ResourceLoader::didCancelAuthenticationChallenge(challenge); }86 87 virtual void willStopBufferingData(ResourceHandle*, NSData *data) { ResourceLoader::willStopBufferingData(data); }88 89 virtual NSCachedURLResponse *willCacheResponse(ResourceHandle*, NSCachedURLResponse *cachedResponse) { return ResourceLoader::willCacheResponse(cachedResponse); }90 91 virtual void receivedCredential(ResourceHandle*, NSURLAuthenticationChallenge *challenge, NSURLCredential *credential) { ResourceLoader::receivedCredential(challenge, credential); }92 virtual void receivedRequestToContinueWithoutCredential(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { ResourceLoader::receivedRequestToContinueWithoutCredential(challenge); }93 virtual void receivedCancellation(ResourceHandle*, NSURLAuthenticationChallenge *challenge) { ResourceLoader::receivedCancellation(challenge); }94 #endif95 96 ResourceHandle* handle() const { return m_handle.get(); }97 72 private: 98 73 SubresourceLoader(Frame*, SubresourceLoaderClient*); … … 102 77 #endif 103 78 SubresourceLoaderClient* m_client; 104 RefPtr<ResourceHandle> m_handle;105 79 bool m_loadingMultipartContent; 106 80 }; -
trunk/WebCore/loader/mac/MainResourceLoaderMac.mm
r17622 r18184 34 34 #import "KURL.h" 35 35 #import "PlatformString.h" 36 #import "ResourceHandle.h" 37 #import "ResourceRequest.h" 36 38 #import "WebCoreSystemInterface.h" 37 39 #import "WebDataProtocol.h" … … 54 56 MainResourceLoader::MainResourceLoader(Frame* frame) 55 57 : ResourceLoader(frame) 56 , m_proxy(wkCreateNSURLConnectionDelegateProxy())57 58 , m_loadingMultipartContent(false) 58 59 , m_waitingForContentPolicy(false) 59 60 { 60 [m_proxy.get() setDelegate:delegate()];61 [m_proxy.get() release];62 61 } 63 62 64 63 MainResourceLoader::~MainResourceLoader() 65 64 { 66 }67 68 void MainResourceLoader::releaseDelegate()69 {70 [m_proxy.get() setDelegate:nil];71 ResourceLoader::releaseDelegate();72 65 } 73 66 … … 227 220 228 221 case PolicyDownload: 229 [m_proxy.get() setDelegate:nil]; 230 frameLoader()->client()->download(connection(), request(), r, m_proxy.get()); 231 m_proxy = nil; 222 frameLoader()->client()->download(m_handle.get(), request(), r); 232 223 receivedError(interruptionForPolicyChangeError()); 233 224 return; … … 343 334 bool shouldLoadEmptyBeforeRedirect = shouldLoadAsEmptyDocument([r URL]); 344 335 345 ASSERT(! connection());336 ASSERT(!m_handle); 346 337 ASSERT(shouldLoadEmptyBeforeRedirect || !defersLoading()); 347 338 … … 374 365 [resp release]; 375 366 } else { 376 NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:r delegate:m_proxy.get()]; 377 m_connection = conn; 378 [conn release]; 367 m_handle = ResourceHandle::create(r, this, m_frame.get(), false, true); 379 368 } 380 369 … … 384 373 bool MainResourceLoader::load(NSURLRequest *r) 385 374 { 386 ASSERT(! connection());375 ASSERT(!m_handle); 387 376 388 377 bool defer = defersLoading(); -
trunk/WebCore/loader/mac/ResourceLoaderMac.mm
r18047 r18184 33 33 #import "FrameMac.h" 34 34 #import "Page.h" 35 #import "ResourceError.h" 35 36 #import "ResourceHandle.h" 37 #import "ResourceRequest.h" 38 #import "ResourceResponse.h" 36 39 #import "WebCoreSystemInterface.h" 37 40 #import "WebDataProtocol.h" … … 45 48 using namespace WebCore; 46 49 47 @interface WebCoreResourceLoaderAsDelegate : NSObject <NSURLAuthenticationChallengeSender>48 {49 ResourceLoader* m_loader;50 }51 - (id)initWithLoader:(ResourceLoader*)loader;52 - (void)detachLoader;53 @end54 55 @interface NSURLConnection (NSURLConnectionTigerPrivate)56 - (NSData *)_bufferedData;57 @end58 59 50 @interface NSURLProtocol (WebFoundationSecret) 60 51 + (void)_removePropertyForKey:(NSString *)key inRequest:(NSMutableURLRequest *)request; … … 62 53 63 54 namespace WebCore { 64 65 static unsigned inNSURLConnectionCallback;66 67 #ifndef NDEBUG68 static bool isInitializingConnection;69 #endif70 55 71 56 ResourceLoader::ResourceLoader(Frame* frame) … … 82 67 { 83 68 ASSERT(m_reachedTerminalState); 84 releaseDelegate();85 69 } 86 70 … … 102 86 103 87 m_identifier = nil; 104 m_ connection = nil;88 m_handle = 0; 105 89 m_resourceData = nil; 106 107 releaseDelegate();108 90 } 109 91 110 92 bool ResourceLoader::load(NSURLRequest *r) 111 93 { 112 ASSERT( m_connection == nil);94 ASSERT(!m_handle); 113 95 ASSERT(!frameLoader()->isArchiveLoadPending(this)); 114 96 … … 125 107 return true; 126 108 127 #ifndef NDEBUG 128 isInitializingConnection = YES; 129 #endif 130 NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:r delegate:delegate()]; 131 #ifndef NDEBUG 132 isInitializingConnection = NO; 133 #endif 134 m_connection = connection; 135 [connection release]; 136 if (m_defersLoading) 137 wkSetNSURLConnectionDefersCallbacks(m_connection.get(), YES); 109 m_handle = ResourceHandle::create(r, this, m_frame.get(), m_defersLoading); 138 110 139 111 return true; … … 143 115 { 144 116 m_defersLoading = defers; 145 wkSetNSURLConnectionDefersCallbacks(m_connection.get(), defers); 117 if (m_handle) 118 m_handle->setDefersLoading(defers); 146 119 } 147 120 … … 183 156 return [[m_resourceData.get() retain] autorelease]; 184 157 185 if (ResourceHandle::supportsBufferedData() )186 return [m_connection.get() _bufferedData];187 158 if (ResourceHandle::supportsBufferedData() && m_handle) 159 return m_handle->bufferedData(); 160 188 161 return nil; 189 162 } … … 260 233 261 234 m_currentConnectionChallenge = challenge; 262 NSURLAuthenticationChallenge *webChallenge = [[NSURLAuthenticationChallenge alloc] initWithAuthenticationChallenge:challenge sender: delegate()];235 NSURLAuthenticationChallenge *webChallenge = [[NSURLAuthenticationChallenge alloc] initWithAuthenticationChallenge:challenge sender:(id<NSURLAuthenticationChallengeSender>)m_handle->delegate()]; 263 236 m_currentWebChallenge = webChallenge; 264 237 … … 392 365 393 366 frameLoader()->cancelPendingArchiveLoad(this); 394 [m_connection.get() cancel]; 367 if (m_handle) 368 m_handle->cancel(); 395 369 396 370 frameLoader()->didFailToLoad(this, error); … … 424 398 } 425 399 426 // FIXME: We should move this to ResourceHandle, once it implements all the connection callbacks427 bool ResourceLoader::loadsBlocked()428 {429 return inNSURLConnectionCallback != 0;430 }431 432 400 NSError *ResourceLoader::cancelledError() 433 401 { … … 467 435 } 468 436 469 WebCoreResourceLoaderAsDelegate *ResourceLoader::delegate() 470 { 471 if (!m_delegate) { 472 WebCoreResourceLoaderAsDelegate *d = [[WebCoreResourceLoaderAsDelegate alloc] initWithLoader:this]; 473 m_delegate = d; 474 [d release]; 475 } 476 return m_delegate.get(); 477 } 478 479 void ResourceLoader::releaseDelegate() 480 { 481 if (!m_delegate) 482 return; 483 [m_delegate.get() detachLoader]; 484 m_delegate = nil; 485 } 486 487 } 488 489 @implementation WebCoreResourceLoaderAsDelegate 490 491 - (id)initWithLoader:(ResourceLoader*)loader 492 { 493 self = [self init]; 494 if (!self) 495 return nil; 496 m_loader = loader; 497 return self; 498 } 499 500 - (void)detachLoader 501 { 502 m_loader = nil; 503 } 504 505 - (NSURLRequest *)connection:(NSURLConnection *)con willSendRequest:(NSURLRequest *)newRequest redirectResponse:(NSURLResponse *)redirectResponse 506 { 507 if (!m_loader) 508 return nil; 509 ++inNSURLConnectionCallback; 510 NSURLRequest *result = m_loader->willSendRequest(newRequest, redirectResponse); 511 --inNSURLConnectionCallback; 512 return result; 513 } 514 515 - (void)connection:(NSURLConnection *)con didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 516 { 517 if (!m_loader) 518 return; 519 ++inNSURLConnectionCallback; 520 m_loader->didReceiveAuthenticationChallenge(challenge); 521 --inNSURLConnectionCallback; 522 } 523 524 - (void)connection:(NSURLConnection *)con didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 525 { 526 if (!m_loader) 527 return; 528 ++inNSURLConnectionCallback; 529 m_loader->didCancelAuthenticationChallenge(challenge); 530 --inNSURLConnectionCallback; 531 } 532 533 - (void)connection:(NSURLConnection *)con didReceiveResponse:(NSURLResponse *)r 534 { 535 if (!m_loader) 536 return; 537 ++inNSURLConnectionCallback; 538 m_loader->didReceiveResponse(r); 539 --inNSURLConnectionCallback; 540 } 541 542 - (void)connection:(NSURLConnection *)con didReceiveData:(NSData *)data lengthReceived:(long long)lengthReceived 543 { 544 if (!m_loader) 545 return; 546 ++inNSURLConnectionCallback; 547 m_loader->didReceiveData(data, lengthReceived, false); 548 --inNSURLConnectionCallback; 549 } 550 551 - (void)connection:(NSURLConnection *)con willStopBufferingData:(NSData *)data 552 { 553 if (!m_loader) 554 return; 555 ++inNSURLConnectionCallback; 556 m_loader->willStopBufferingData(data); 557 --inNSURLConnectionCallback; 558 } 559 560 - (void)connectionDidFinishLoading:(NSURLConnection *)con 561 { 562 if (!m_loader) 563 return; 564 ++inNSURLConnectionCallback; 565 m_loader->didFinishLoading(); 566 --inNSURLConnectionCallback; 567 } 568 569 - (void)connection:(NSURLConnection *)con didFailWithError:(NSError *)error 570 { 571 if (!m_loader) 572 return; 573 ++inNSURLConnectionCallback; 574 m_loader->didFail(error); 575 --inNSURLConnectionCallback; 576 } 577 578 - (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse 579 { 580 #ifndef NDEBUG 581 if (isInitializingConnection) 582 LOG_ERROR("connection:willCacheResponse: was called inside of [NSURLConnection initWithRequest:delegate:] (40676250)"); 583 #endif 584 if (!m_loader) 585 return nil; 586 ++inNSURLConnectionCallback; 587 NSCachedURLResponse *result = m_loader->willCacheResponse(cachedResponse); 588 --inNSURLConnectionCallback; 589 return result; 590 } 591 592 - (void)useCredential:(NSURLCredential *)credential forAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 593 { 594 if (!m_loader) 595 return; 596 m_loader->receivedCredential(challenge, credential); 597 } 598 599 - (void)continueWithoutCredentialForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 600 { 601 if (!m_loader) 602 return; 603 m_loader->receivedRequestToContinueWithoutCredential(challenge); 604 } 605 606 - (void)cancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 607 { 608 if (!m_loader) 609 return; 610 m_loader->receivedCancellation(challenge); 611 } 612 613 @end 437 void ResourceLoader::willSendRequest(ResourceHandle*, ResourceRequest& request, const ResourceResponse& redirectResponse) 438 { 439 request = willSendRequest(request.nsURLRequest(), redirectResponse.nsURLResponse()); 440 } 441 442 void ResourceLoader::didReceiveResponse(ResourceHandle*, const ResourceResponse& response) 443 { 444 didReceiveResponse(response.nsURLResponse()); 445 } 446 447 void ResourceLoader::didReceiveData(ResourceHandle*, const char* data, int length, int lengthReceived) 448 { 449 NSData *nsData = [[NSData alloc] initWithBytesNoCopy:(void*)data length:length freeWhenDone:NO]; 450 didReceiveData(nsData, lengthReceived, false); 451 [nsData release]; 452 } 453 454 void ResourceLoader::didFinishLoading(ResourceHandle*) 455 { 456 didFinishLoading(); 457 } 458 459 void ResourceLoader::didFail(ResourceHandle*, const ResourceError& error) 460 { 461 didFail(error); 462 } 463 464 } 465 -
trunk/WebCore/loader/mac/SubresourceLoaderMac.mm
r18181 r18184 60 60 } 61 61 62 void SubresourceLoader::setDefersLoading(bool defers)63 {64 m_defersLoading = defers;65 m_handle->setDefersLoading(defers);66 }67 68 NSData *SubresourceLoader::resourceData()69 {70 if (ResourceHandle::supportsBufferedData())71 return m_handle->bufferedData();72 73 return ResourceLoader::resourceData();74 }75 76 62 bool SubresourceLoader::load(NSURLRequest *r) 77 63 { 78 ASSERT(m_handle == nil); 79 ASSERT(!frameLoader()->isArchiveLoadPending(this)); 80 81 m_originalURL = [r URL]; 82 83 NSURLRequest *clientRequest = willSendRequest(r, nil); 84 if (clientRequest == nil) { 85 didFail(frameLoader()->cancelledError(r)); 86 return false; 87 } 88 r = clientRequest; 89 90 if (frameLoader()->willUseArchive(this, r, m_originalURL.get())) 91 return true; 92 93 m_frame->loader()->didTellBridgeAboutLoad(KURL([r URL]).url()); 94 m_handle = ResourceHandle::create(r, this, m_frame->document()->docLoader(), m_defersLoading); 95 96 return true; 64 m_frame->loader()->didTellBridgeAboutLoad(KURL([r URL]).url()); 65 66 return ResourceLoader::load(r); 97 67 } 98 68 … … 275 245 } 276 246 277 void SubresourceLoader::willSendRequest(ResourceHandle*, ResourceRequest& request, const ResourceResponse& redirectResponse) 278 { 279 NSURLRequest* newRequest = willSendRequest(request.nsURLRequest(), redirectResponse.nsURLResponse()); 280 281 request = newRequest; 282 } 283 284 void SubresourceLoader::didReceiveResponse(ResourceHandle*, const ResourceResponse& response) 285 { 286 didReceiveResponse(response.nsURLResponse()); 287 } 288 289 void SubresourceLoader::didReceiveData(ResourceHandle*, const char* data, int length, int lengthReceived) 290 { 291 NSData *nsData = [[NSData alloc] initWithBytesNoCopy:(void*)data length:length freeWhenDone:NO]; 292 didReceiveData(nsData, lengthReceived, false); 293 [nsData release]; 294 } 295 296 void SubresourceLoader::didFinishLoading(ResourceHandle*) 297 { 298 didFinishLoading(); 299 } 300 301 void SubresourceLoader::didFail(ResourceHandle*, const ResourceError& error) 302 { 303 didFail(error); 304 } 305 306 } 247 } -
trunk/WebCore/page/Chrome.cpp
r17931 r18184 25 25 #include "FloatRect.h" 26 26 #include "Page.h" 27 #include "Resource Loader.h"27 #include "ResourceHandle.h" 28 28 #include <wtf/PassRefPtr.h> 29 29 #include <wtf/RefPtr.h> … … 98 98 // If loads are blocked, we can't run modal because the contents 99 99 // of the modal dialog will never show up! 100 return canRunModal() && !Resource Loader::loadsBlocked();100 return canRunModal() && !ResourceHandle::loadsBlocked(); 101 101 } 102 102 -
trunk/WebCore/platform/network/ResourceHandle.cpp
r18124 r18184 33 33 namespace WebCore { 34 34 35 ResourceHandle::ResourceHandle(const ResourceRequest& request, ResourceHandleClient* client, bool defersLoading )36 : d(new ResourceHandleInternal(this, request, client, defersLoading ))35 ResourceHandle::ResourceHandle(const ResourceRequest& request, ResourceHandleClient* client, bool defersLoading, bool mightDownloadFromHandle) 36 : d(new ResourceHandleInternal(this, request, client, defersLoading, mightDownloadFromHandle)) 37 37 { 38 38 } 39 39 40 PassRefPtr<ResourceHandle> ResourceHandle::create(const ResourceRequest& request, ResourceHandleClient* client, DocLoader* dl, bool defersLoading)40 PassRefPtr<ResourceHandle> ResourceHandle::create(const ResourceRequest& request, ResourceHandleClient* client, Frame* frame, bool defersLoading, bool mightDownloadFromHandle) 41 41 { 42 RefPtr<ResourceHandle> newLoader(new ResourceHandle(request, client, defersLoading ));42 RefPtr<ResourceHandle> newLoader(new ResourceHandle(request, client, defersLoading, mightDownloadFromHandle)); 43 43 44 if (newLoader->start( dl))44 if (newLoader->start(frame)) 45 45 return newLoader.release(); 46 46 -
trunk/WebCore/platform/network/ResourceHandle.h
r18124 r18184 47 47 @class NSData; 48 48 @class NSError; 49 @class NSURLConnection; 49 50 @class NSURLRequest; 50 51 @class NSURLResponse; … … 53 54 class NSData; 54 55 class NSError; 56 class NSURLConnection; 55 57 class NSURLRequest; 56 58 class NSURLResponse; 57 59 class WebCoreResourceHandleAsDelegate; 60 typedef struct objc_object *id; 58 61 #endif 59 62 #endif … … 61 64 namespace WebCore { 62 65 63 class DocLoader;64 66 class FormData; 67 class Frame; 65 68 class KURL; 66 69 class ResourceHandleClient; … … 75 78 class ResourceHandle : public Shared<ResourceHandle> { 76 79 private: 77 ResourceHandle(const ResourceRequest&, ResourceHandleClient*, bool defersLoading );80 ResourceHandle(const ResourceRequest&, ResourceHandleClient*, bool defersLoading, bool mightDownloadFromHandle); 78 81 79 82 public: 80 // FIXME: should not need the DocLoader81 static PassRefPtr<ResourceHandle> create(const ResourceRequest&, ResourceHandleClient*, DocLoader*, bool defersLoading);83 // FIXME: should not need the Frame 84 static PassRefPtr<ResourceHandle> create(const ResourceRequest&, ResourceHandleClient*, Frame*, bool defersLoading, bool mightDownloadFromHandle = false); 82 85 83 86 ~ResourceHandle(); 84 87 85 88 #if PLATFORM(MAC) 89 NSURLConnection *connection() const; 86 90 WebCoreResourceHandleAsDelegate *delegate(); 87 91 void releaseDelegate(); 88 92 NSData* bufferedData(); 89 93 90 94 static bool supportsBufferedData(); 95 96 id releaseProxy(); 91 97 #endif 92 98 … … 106 112 #endif 107 113 114 // Used to work around the fact that you don't get any more NSURLConnection callbacks until you return from the one you're in. 115 static bool loadsBlocked(); 116 108 117 void cancel(); 109 118 … … 118 127 119 128 private: 120 bool start( DocLoader*);129 bool start(Frame*); 121 130 122 131 OwnPtr<ResourceHandleInternal> d; -
trunk/WebCore/platform/network/ResourceHandleInternal.h
r18163 r18184 64 64 class ResourceHandleInternal : Noncopyable { 65 65 public: 66 ResourceHandleInternal(ResourceHandle* loader, const ResourceRequest& request, ResourceHandleClient* c, bool defersLoading )66 ResourceHandleInternal(ResourceHandle* loader, const ResourceRequest& request, ResourceHandleClient* c, bool defersLoading, bool mightDownloadFromHandle) 67 67 : m_client(c) 68 68 , m_request(request) 69 69 , status(0) 70 70 , m_defersLoading(defersLoading) 71 , m_mightDownloadFromHandle(mightDownloadFromHandle) 71 72 #if USE(CFNETWORK) 72 73 , m_connection(0) … … 101 102 102 103 bool m_defersLoading; 104 bool m_mightDownloadFromHandle; 103 105 #if USE(CFNETWORK) 104 106 CFURLConnectionRef m_connection; … … 106 108 RetainPtr<NSURLConnection> m_connection; 107 109 RetainPtr<WebCoreResourceHandleAsDelegate> m_delegate; 110 RetainPtr<id> m_proxy; 108 111 #endif 109 112 #if USE(WININET) -
trunk/WebCore/platform/network/mac/ResourceHandleMac.mm
r18181 r18184 73 73 } 74 74 75 bool ResourceHandle::start(DocLoader* docLoader) 76 { 77 ASSERT(docLoader); 78 79 FrameMac* frame = Mac(docLoader->frame()); 75 bool ResourceHandle::start(Frame* frame) 76 { 80 77 if (!frame) 81 78 return false; … … 91 88 isInitializingConnection = YES; 92 89 #endif 93 NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:d->m_request.nsURLRequest() delegate:delegate()]; 90 id delegate; 91 92 if (d->m_mightDownloadFromHandle) { 93 ASSERT(!d->m_proxy); 94 d->m_proxy = wkCreateNSURLConnectionDelegateProxy(); 95 [d->m_proxy.get() setDelegate:ResourceHandle::delegate()]; 96 [d->m_proxy.get() release]; 97 98 delegate = d->m_proxy.get(); 99 } else 100 delegate = ResourceHandle::delegate(); 101 102 NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:d->m_request.nsURLRequest() delegate:delegate]; 94 103 #ifndef NDEBUG 95 104 isInitializingConnection = NO; … … 156 165 } 157 166 167 id ResourceHandle::releaseProxy() 168 { 169 id proxy = [[d->m_proxy.get() retain] autorelease]; 170 d->m_proxy = nil; 171 [proxy setDelegate:nil]; 172 return proxy; 173 } 174 175 NSURLConnection *ResourceHandle::connection() const 176 { 177 return d->m_connection.get(); 178 } 179 180 bool ResourceHandle::loadsBlocked() 181 { 182 return inNSURLConnectionCallback != 0; 183 } 184 158 185 } // namespace WebCore 159 186 -
trunk/WebKit/ChangeLog
r18169 r18184 1 2006-12-12 Anders Carlsson <acarlsson@apple.com> 2 3 Reviewed by Darin. 4 5 * WebCoreSupport/WebFrameLoaderClient.h: 6 * WebCoreSupport/WebFrameLoaderClient.mm: 7 (WebFrameLoaderClient::download): 8 Get the handle and proxy from the ResourceHandle now that they aren't passed to us. 9 1 10 2006-12-11 Darin Adler <darin@apple.com> 2 11 -
trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.h
r17906 r18184 98 98 virtual void loadedFromPageCache(); 99 99 100 virtual void download( NSURLConnection *, NSURLRequest *, NSURLResponse *, id proxy);100 virtual void download(WebCore::ResourceHandle*, NSURLRequest *, NSURLResponse *); 101 101 102 102 virtual id dispatchIdentifierForInitialRequest(WebCore::DocumentLoader*, NSURLRequest *); -
trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm
r18163 r18184 80 80 #import <WebCore/PageState.h> 81 81 #import <WebCore/PlatformString.h> 82 #import <WebCore/ResourceHandle.h> 82 83 #import <WebCore/ResourceLoader.h> 83 84 #import <WebCore/ResourceRequest.h> … … 415 416 } 416 417 417 void WebFrameLoaderClient::download(NSURLConnection *connection, NSURLRequest *request, 418 NSURLResponse *response, id proxy) 419 { 420 [WebDownload _downloadWithLoadingConnection:connection 418 void WebFrameLoaderClient::download(ResourceHandle* handle, NSURLRequest *request, NSURLResponse *response) 419 { 420 id proxy = handle->releaseProxy(); 421 ASSERT(proxy); 422 [WebDownload _downloadWithLoadingConnection:handle->connection() 421 423 request:request 422 424 response:response
Note:
See TracChangeset
for help on using the changeset viewer.