- move more code from WebDataSource to WebFrameLoader
Also marked a few more methods in WebDataSource as likely MOVABLE in a future round, since they do not
use any of WebDataSource's private data.
* Loader/WebFrameLoader.h:
* Loader/WebFrameLoader.m:
(-[WebFrameLoader addPlugInStreamLoader:]):
(-[WebFrameLoader removePlugInStreamLoader:]):
(-[WebFrameLoader addSubresourceLoader:]):
(-[WebFrameLoader removeSubresourceLoader:]):
(-[WebFrameLoader _didReceiveAuthenticationChallenge:forResource:]):
(-[WebFrameLoader _didCancelAuthenticationChallenge:forResource:]):
(-[WebFrameLoader _didReceiveResponse:forResource:]):
(-[WebFrameLoader _didReceiveData:contentLength:forResource:]):
(-[WebFrameLoader _didFinishLoadingForResource:]):
(-[WebFrameLoader _didFailLoadingWithError:forResource:]):
(-[WebFrameLoader _privateBrowsingEnabled]):
(-[WebFrameLoader _finishedLoadingResource]):
(-[WebFrameLoader _receivedError:]):
(-[WebFrameLoader _finishedLoading]):
* Loader/WebMainResourceLoader.m:
(-[WebMainResourceLoader didReceiveData:lengthReceived:allAtOnce:]):
(-[WebMainResourceLoader didFinishLoading]):
* Loader/WebNetscapePlugInStreamLoader.m:
(-[WebNetscapePlugInStreamLoader didFinishLoading]):
(-[WebNetscapePlugInStreamLoader didFailWithError:]):
(-[WebNetscapePlugInStreamLoader cancelWithError:]):
* Loader/WebSubresourceLoader.m:
(+[WebSubresourceLoader startLoadingResource:withRequest:customHeaders:referrer:forFrameLoader:]):
(-[WebSubresourceLoader signalFinish]):
(-[WebSubresourceLoader didFailWithError:]):
(-[WebSubresourceLoader cancel]):
* Plugins/WebNetscapePluginStream.m:
(-[WebNetscapePluginStream start]):
* WebView/WebDataSource.m:
(-[WebDataSource _replaceSelectionWithArchive:selectReplacement:]):
(-[WebDataSource _updateIconDatabaseWithURL:]):
(-[WebDataSource _loadIcon]):
(-[WebDataSource _setPrimaryLoadComplete:]):
(-[WebDataSource _cancelledError]):
(+[WebDataSource _repTypesAllowImageTypeOmission:]):
(+[WebDataSource _representationClassForMIMEType:]):
(-[WebDataSource _commitLoadWithData:]):
(-[WebDataSource _receivedMainResourceError:complete:]):
(-[WebDataSource _iconLoaderReceivedPageIcon:]):
(-[WebDataSource _isDocumentHTML]):
* WebView/WebDataSourceInternal.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15962
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2006-08-21 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Brady.
+
+ - move more code from WebDataSource to WebFrameLoader
+
+ Also marked a few more methods in WebDataSource as likely MOVABLE in a future round, since they do not
+ use any of WebDataSource's private data.
+
+ * Loader/WebFrameLoader.h:
+ * Loader/WebFrameLoader.m:
+ (-[WebFrameLoader addPlugInStreamLoader:]):
+ (-[WebFrameLoader removePlugInStreamLoader:]):
+ (-[WebFrameLoader addSubresourceLoader:]):
+ (-[WebFrameLoader removeSubresourceLoader:]):
+ (-[WebFrameLoader _didReceiveAuthenticationChallenge:forResource:]):
+ (-[WebFrameLoader _didCancelAuthenticationChallenge:forResource:]):
+ (-[WebFrameLoader _didReceiveResponse:forResource:]):
+ (-[WebFrameLoader _didReceiveData:contentLength:forResource:]):
+ (-[WebFrameLoader _didFinishLoadingForResource:]):
+ (-[WebFrameLoader _didFailLoadingWithError:forResource:]):
+ (-[WebFrameLoader _privateBrowsingEnabled]):
+ (-[WebFrameLoader _finishedLoadingResource]):
+ (-[WebFrameLoader _receivedError:]):
+ (-[WebFrameLoader _finishedLoading]):
+ * Loader/WebMainResourceLoader.m:
+ (-[WebMainResourceLoader didReceiveData:lengthReceived:allAtOnce:]):
+ (-[WebMainResourceLoader didFinishLoading]):
+ * Loader/WebNetscapePlugInStreamLoader.m:
+ (-[WebNetscapePlugInStreamLoader didFinishLoading]):
+ (-[WebNetscapePlugInStreamLoader didFailWithError:]):
+ (-[WebNetscapePlugInStreamLoader cancelWithError:]):
+ * Loader/WebSubresourceLoader.m:
+ (+[WebSubresourceLoader startLoadingResource:withRequest:customHeaders:referrer:forFrameLoader:]):
+ (-[WebSubresourceLoader signalFinish]):
+ (-[WebSubresourceLoader didFailWithError:]):
+ (-[WebSubresourceLoader cancel]):
+ * Plugins/WebNetscapePluginStream.m:
+ (-[WebNetscapePluginStream start]):
+ * WebView/WebDataSource.m:
+ (-[WebDataSource _replaceSelectionWithArchive:selectReplacement:]):
+ (-[WebDataSource _updateIconDatabaseWithURL:]):
+ (-[WebDataSource _loadIcon]):
+ (-[WebDataSource _setPrimaryLoadComplete:]):
+ (-[WebDataSource _cancelledError]):
+ (+[WebDataSource _repTypesAllowImageTypeOmission:]):
+ (+[WebDataSource _representationClassForMIMEType:]):
+ (-[WebDataSource _commitLoadWithData:]):
+ (-[WebDataSource _receivedMainResourceError:complete:]):
+ (-[WebDataSource _iconLoaderReceivedPageIcon:]):
+ (-[WebDataSource _isDocumentHTML]):
+ * WebView/WebDataSourceInternal.h:
+
2006-08-21 Brady Eidson <beidson@apple.com>
Reviewed by John
- (void)_didFailLoadingWithError:(NSError *)error forResource:(id)identifier;
- (BOOL)_privateBrowsingEnabled;
- (void)_didFailLoadingWithError:(NSError *)error forResource:(id)identifier;
-- (void)_addPlugInStreamLoader:(WebLoader *)loader;
-- (void)_removePlugInStreamLoader:(WebLoader *)loader;
- (void)_finishedLoadingResource;
- (void)_receivedError:(NSError *)error;
-- (void)_addSubresourceLoader:(WebLoader *)loader;
-- (void)_removeSubresourceLoader:(WebLoader *)loader;
- (NSURLRequest *)_originalRequest;
- (WebFrame *)webFrame;
- (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete;
- (void)_setResponse:(NSURLResponse *)response;
- (void)_mainReceivedError:(NSError *)error complete:(BOOL)isComplete;
- (void)_finishedLoading;
-- (void)_mainReceivedBytesSoFar:(unsigned)bytesSoFar complete:(BOOL)isComplete;
- (void)_iconLoaderReceivedPageIcon:(WebIconLoader *)iconLoader;
- (NSURL *)_URL;
#import <WebKit/WebResourcePrivate.h>
#import <WebKit/DOMHTML.h>
#import <WebKit/WebFrameBridge.h>
+#import <WebKit/WebPreferences.h>
@implementation WebFrameLoader
if (!plugInStreamLoaders)
plugInStreamLoaders = [[NSMutableArray alloc] init];
[plugInStreamLoaders addObject:loader];
+ [[self activeDataSource] _setLoading:YES];
}
- (void)removePlugInStreamLoader:(WebLoader *)loader
{
[plugInStreamLoaders removeObject:loader];
+ [[self activeDataSource] _updateLoading];
}
- (void)setDefersCallbacks:(BOOL)defers
if (subresourceLoaders == nil)
subresourceLoaders = [[NSMutableArray alloc] init];
[subresourceLoaders addObject:loader];
+ [[self activeDataSource] _setLoading:YES];
}
- (void)removeSubresourceLoader:(WebLoader *)loader
{
[subresourceLoaders removeObject:loader];
+ [[self activeDataSource] _updateLoading];
}
- (NSData *)mainResourceData
- (void)_didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)currentWebChallenge forResource:(id)identifier
{
- return [[self activeDataSource] _didReceiveAuthenticationChallenge:currentWebChallenge forResource:identifier];
+ [[self activeDataSource] _didReceiveAuthenticationChallenge:currentWebChallenge forResource:identifier];
}
- (void)_didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)currentWebChallenge forResource:(id)identifier
{
- return [[self activeDataSource] _didCancelAuthenticationChallenge:currentWebChallenge forResource:identifier];
+ [[self activeDataSource] _didCancelAuthenticationChallenge:currentWebChallenge forResource:identifier];
}
- (void)_didReceiveResponse:(NSURLResponse *)r forResource:(id)identifier
{
- return [[self activeDataSource] _didReceiveResponse:r forResource:identifier];
+ [[self activeDataSource] _didReceiveResponse:r forResource:identifier];
}
- (void)_didReceiveData:(NSData *)data contentLength:(int)lengthReceived forResource:(id)identifier
{
- return [[self activeDataSource] _didReceiveData:data contentLength:lengthReceived forResource:identifier];
+ [[self activeDataSource] _didReceiveData:data contentLength:lengthReceived forResource:identifier];
}
- (void)_didFinishLoadingForResource:(id)identifier
{
- return [[self activeDataSource] _didFinishLoadingForResource:identifier];
+ [[self activeDataSource] _didFinishLoadingForResource:identifier];
}
- (void)_didFailLoadingWithError:(NSError *)error forResource:(id)identifier
{
- return [[self activeDataSource] _didFailLoadingWithError:error forResource:identifier];
+ [[self activeDataSource] _didFailLoadingWithError:error forResource:identifier];
}
- (BOOL)_privateBrowsingEnabled
{
- return [[self activeDataSource] _privateBrowsingEnabled];
-}
-
-- (void)_addPlugInStreamLoader:(WebLoader *)loader
-{
- return [[self activeDataSource] _addPlugInStreamLoader:loader];
-}
-
-- (void)_removePlugInStreamLoader:(WebLoader *)loader
-{
- return [[self activeDataSource] _removePlugInStreamLoader:loader];
+ return [[[webFrame webView] preferences] privateBrowsingEnabled];
}
- (void)_finishedLoadingResource
{
- return [[self activeDataSource] _finishedLoadingResource];
+ [webFrame _checkLoadComplete];
}
- (void)_receivedError:(NSError *)error
{
- [[self webFrame] _checkLoadComplete];
-}
-
-- (void)_addSubresourceLoader:(WebLoader *)loader
-{
- return [[self activeDataSource] _addSubresourceLoader:loader];
-}
-
-- (void)_removeSubresourceLoader:(WebLoader *)loader
-{
- return [[self activeDataSource] _removeSubresourceLoader:loader];
+ [webFrame _checkLoadComplete];
}
- (NSURLRequest *)_originalRequest
- (void)_finishedLoading
{
- [[self activeDataSource] _finishedLoading];
-}
+ WebDataSource *ds = [self activeDataSource];
+
+ [self retain];
+ [ds _finishedLoading];
-- (void)_mainReceivedBytesSoFar:(unsigned)bytesSoFar complete:(BOOL)isComplete
-{
- [[self activeDataSource] _mainReceivedBytesSoFar:bytesSoFar complete:isComplete];
+ if ([ds _mainDocumentError] || ![ds webFrame]) {
+ [self release];
+ return;
+ }
+
+ [ds _setPrimaryLoadComplete:YES];
+ [webFrame _checkLoadComplete];
+
+ [self release];
}
- (void)_iconLoaderReceivedPageIcon:(WebIconLoader *)iLoader
// retain/release self in this delegate method since the additional processing can do
// anything including possibly releasing self; one example of this is 3266216
[self retain];
- [frameLoader _mainReceivedBytesSoFar:_bytesReceived complete:NO];
[super didReceiveData:data lengthReceived:lengthReceived allAtOnce:allAtOnce];
_bytesReceived += [data length];
[self retain];
[frameLoader _finishedLoading];
- [frameLoader _mainReceivedBytesSoFar:_bytesReceived complete:YES];
[super didFinishLoading];
[self release];
// Calling _removePlugInStreamLoader will likely result in a call to release, so we must retain.
[self retain];
- [frameLoader _removePlugInStreamLoader:self];
+ [frameLoader removePlugInStreamLoader:self];
[frameLoader _finishedLoadingResource];
[stream finishedLoadingWithData:[self resourceData]];
[super didFinishLoading];
// one example of this is 3266216
[self retain];
- [[self frameLoader] _removePlugInStreamLoader:self];
+ [[self frameLoader] removePlugInStreamLoader:self];
[[self frameLoader] _receivedError:error];
[stream destroyStreamWithError:error];
[super didFailWithError:error];
// Calling _removePlugInStreamLoader will likely result in a call to release, so we must retain.
[self retain];
- [[self frameLoader] _removePlugInStreamLoader:self];
+ [[self frameLoader] removePlugInStreamLoader:self];
[stream destroyStreamWithError:error];
[super cancelWithError:error];
{
WebSubresourceLoader *loader = [[[self alloc] initWithLoader:rLoader frameLoader:fl] autorelease];
- [fl _addSubresourceLoader:loader];
+ [fl addSubresourceLoader:loader];
NSEnumerator *e = [customHeaders keyEnumerator];
NSString *key;
- (void)signalFinish
{
- [frameLoader _removeSubresourceLoader:self];
+ [frameLoader removeSubresourceLoader:self];
[frameLoader _finishedLoadingResource];
[super signalFinish];
}
[self retain];
[coreLoader reportError];
- [frameLoader _removeSubresourceLoader:self];
+ [frameLoader removeSubresourceLoader:self];
[self receivedError:error];
[super didFailWithError:error];
[self retain];
[coreLoader cancel];
- [frameLoader _removeSubresourceLoader:self];
+ [frameLoader removeSubresourceLoader:self];
[self receivedError:[self cancelledError]];
[super cancel];
{
ASSERT(request);
- [[_loader frameLoader] _addPlugInStreamLoader:_loader];
+ [[_loader frameLoader] addPlugInStreamLoader:_loader];
BOOL succeeded = [_loader loadWithRequest:request];
if (!succeeded) {
- [[_loader frameLoader] _removePlugInStreamLoader:_loader];
+ [[_loader frameLoader] removePlugInStreamLoader:_loader];
}
}
- (void)_replaceSelectionWithArchive:(WebArchive *)archive selectReplacement:(BOOL)selectReplacement
{
DOMDocumentFragment *fragment = [self _documentFragmentWithArchive:archive];
- if (fragment) {
+ if (fragment)
[[self _bridge] replaceSelectionWithFragment:fragment selectReplacement:selectReplacement smartReplace:NO matchStyle:NO];
- }
}
- (WebView *)_webView
- (void)_updateIconDatabaseWithURL:(NSURL *)iconURL
{
+ // MOVABLE
ASSERT([[WebIconDatabase sharedIconDatabase] _isEnabled]);
WebIconDatabase *iconDB = [WebIconDatabase sharedIconDatabase];
{
// Don't load an icon if 1) this is not the main frame 2) we ended in error
// 3) they aren't saved by the DB
- if ([self webFrame] != [[self _webView] mainFrame] || _private->mainDocumentError || ![[WebIconDatabase sharedIconDatabase] _isEnabled]) {
+ if ([self webFrame] != [[self _webView] mainFrame] || _private->mainDocumentError || ![[WebIconDatabase sharedIconDatabase] _isEnabled])
return;
- }
if (!_private->iconURL) {
// No icon URL from the LINK tag so try the server's root.
}
}
-- (void)_setPrimaryLoadComplete: (BOOL)flag
+- (void)_setPrimaryLoadComplete:(BOOL)flag
{
_private->primaryLoadComplete = flag;
- (NSError *)_cancelledError
{
+ // MOVABLE
return [NSError _webKitErrorWithDomain:NSURLErrorDomain
code:NSURLErrorCancelled
URL:[self _URL]];
[self _updateLoading];
}
-- (void)_addSubresourceLoader:(WebLoader *)loader
-{
- [[_private->webFrame _frameLoader] addSubresourceLoader:loader];
- [self _setLoading:YES];
-}
-
-- (void)_removeSubresourceLoader:(WebLoader *)loader
-{
- [[_private->webFrame _frameLoader] removeSubresourceLoader:loader];
- [self _updateLoading];
-}
-
-- (void)_addPlugInStreamLoader:(WebLoader *)loader
-{
- [[_private->webFrame _frameLoader] addPlugInStreamLoader:loader];
- [self _setLoading:YES];
-}
-
-- (void)_removePlugInStreamLoader:(WebLoader *)loader
-{
- [[_private->webFrame _frameLoader] removePlugInStreamLoader:loader];
- [self _updateLoading];
-}
-
- (BOOL)_isStopping
{
return _private->stopping;
+ (NSMutableDictionary *)_repTypesAllowImageTypeOmission:(BOOL)allowImageTypeOmission
{
+ // MOVABLE
static NSMutableDictionary *repTypes = nil;
static BOOL addedImageTypes = NO;
+ (Class)_representationClassForMIMEType:(NSString *)MIMEType
{
+ // MOVABLE
Class repClass;
return [WebView _viewClass:nil andRepresentationClass:&repClass forMIMEType:MIMEType] ? repClass : nil;
}
- (void)_commitLoadWithData:(NSData *)data
{
+ // MOVABLE
// Both unloading the old page and parsing the new page may execute JavaScript which destroys the datasource
// by starting a new load, so retain temporarily.
[self retain];
- (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete
{
+ // MOVABLE
WebFrameBridge *bridge = [[self webFrame] _bridge];
// Retain the bridge because the stop may release the last reference to it.
- (void)_iconLoaderReceivedPageIcon:(WebIconLoader *)iconLoader
{
+ // MOVABLE
[self _updateIconDatabaseWithURL:_private->iconURL];
[self _notifyIconChanged:_private->iconURL];
}
proxy:proxy];
}
-- (BOOL)_privateBrowsingEnabled
-{
- return [[[self _webView] preferences] privateBrowsingEnabled];
-}
-
- (NSURLRequest *)_originalRequest
{
return _private->originalRequestCopy;
- (BOOL)_isDocumentHTML
{
+ // MOVABLE
NSString *MIMEType = [[self response] MIMEType];
return [WebView canShowMIMETypeAsHTML:MIMEType];
}
}
}
-- (void)_finishedLoadingResource
-{
- [[self webFrame] _checkLoadComplete];
-}
-
-- (void)_mainReceivedBytesSoFar:(unsigned)bytesSoFar complete:(BOOL)isComplete
-{
- WebFrame *frame = [self webFrame];
-
- // The frame may be nil if a previously cancelled load is still making progress callbacks.
- if (frame == nil)
- return;
-
- // This resource has completed, so check if the load is complete for this frame and its ancestors
- if (isComplete) {
- // If the load is complete, mark the primary load as done. The primary load is the load
- // of the main document. Other resources may still be arriving.
- [self _setPrimaryLoadComplete:YES];
- [frame _checkLoadComplete];
- }
-}
-
- (void)_mainReceivedError:(NSError *)error complete:(BOOL)isComplete
{
if (![self webFrame])
@protocol WebDocumentRepresentation;
@interface WebDataSource (WebInternal)
-- (void)_addPlugInStreamLoader:(WebLoader *)loader;
-- (void)_removePlugInStreamLoader:(WebLoader *)loader;
- (void)_stopLoadingWithError:(NSError *)error;
- (void)_setTitle:(NSString *)title;
- (NSString *)_overrideEncoding;
- (NSString *)_overrideEncoding;
- (void)_setIconURL:(NSURL *)URL;
- (void)_setIconURL:(NSURL *)URL withType:(NSString *)iconType;
-- (void)_addSubresourceLoader:(WebLoader *)loader;
-- (void)_removeSubresourceLoader:(WebLoader *)loader;
- (NSURLRequest *)_originalRequest;
- (WebView *)_webView;
- (WebResource *)_archivedSubresourceForURL:(NSURL *)URL;
- (void)_startLoading;
- (void)_loadFromPageCache:(NSDictionary *)pageCache;
- (DOMElement *)_imageElementWithImageResource:(WebResource *)resource;
-- (void)_finishedLoadingResource;
-- (void)_mainReceivedBytesSoFar:(unsigned)bytesSoFar complete:(BOOL)isComplete;
- (void)_mainReceivedError:(NSError *)error complete:(BOOL)isComplete;
- (BOOL)_defersCallbacks;
- (id)_identifierForInitialRequest:(NSURLRequest *)clientRequest;
- (void)_downloadWithLoadingConnection:(NSURLConnection *)connection request:(NSURLRequest *)request response:(NSURLResponse *)r proxy:(WKNSURLConnectionDelegateProxyPtr) proxy;
- (BOOL)_privateBrowsingEnabled;
- (void)_decidePolicyForMIMEType:(NSString *)MIMEType decisionListener:(WebPolicyDecisionListener *)listener;
-
+- (void)_setLoading:(BOOL)loading;
+- (void)_updateLoading;
@end