Reviewed by Oliver.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Oct 2006 08:44:58 +0000 (08:44 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Oct 2006 08:44:58 +0000 (08:44 +0000)
        - remove WebDataSource from the WebFrameLoader interface (and thereby from a lot of internal use)

        * Loader/WebDocumentLoader.h:
        * Loader/WebDocumentLoader.m:
        (-[WebDocumentLoader dealloc]):
        (-[WebDocumentLoader initialRequest]):
        (-[WebDocumentLoader URL]):
        (-[WebDocumentLoader unreachableURL]):
        * Loader/WebFrameLoader.h:
        * Loader/WebFrameLoader.m:
        (-[WebFrameLoader setState:]):
        (-[WebFrameLoader startLoading]):
        (-[WebFrameLoader startProvisionalLoad:]):
        (-[WebFrameLoader clientRedirectedTo:delay:fireDate:lockHistory:isJavaScriptFormAction:]):
        (-[WebFrameLoader loadURL:referrer:loadType:target:triggeringEvent:form:formValues:]):
        (-[WebFrameLoader opened]):
        (-[WebFrameLoader commitProvisionalLoad:]):
        (-[WebFrameLoader initialRequest]):
        (-[WebFrameLoader _finishedLoading]):
        (-[WebFrameLoader _notifyIconChanged:]):
        (-[WebFrameLoader _URL]):
        (-[WebFrameLoader willUseArchiveForRequest:originalURL:loader:]):
        (-[WebFrameLoader _checkNavigationPolicyForRequest:andCall:withSelector:]):
        (-[WebFrameLoader shouldReloadToHandleUnreachableURLFromRequest:]):
        (-[WebFrameLoader _loadRequest:archive:]):
        (-[WebFrameLoader _loadRequest:triggeringAction:loadType:formState:]):
        (-[WebFrameLoader _reloadAllowingStaleDataWithOverrideEncoding:]):
        (-[WebFrameLoader reload]):
        (-[WebFrameLoader checkNavigationPolicyForRequest:documentLoader:formState:andCall:withSelector:]):
        (-[WebFrameLoader continueLoadRequestAfterNavigationPolicy:formState:]):
        (-[WebFrameLoader loadDocumentLoader:withLoadType:formState:]):
        (-[WebFrameLoader frameLoadCompleted]):
        (-[WebFrameLoader transitionToCommitted:]):
        (-[WebFrameLoader checkLoadCompleteForThisFrame]):
        (-[WebFrameLoader safeLoadURL:]):
        * Loader/WebFrameLoaderClient.h:
        * Plugins/WebBaseNetscapePluginView.m:
        (-[WebBaseNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
        * WebCoreSupport/WebFrameBridge.m:
        (-[WebFrameBridge originalRequestURL]):
        * WebView/WebDataSource.m:
        (-[WebDataSource _URL]):
        (-[WebDataSource dealloc]):
        (-[WebDataSource initialRequest]):
        (-[WebDataSource unreachableURL]):
        * WebView/WebFrame.m:
        (-[WebFrame _loadItem:withLoadType:]):
        (-[WebFrame _prepareForDataSourceReplacement]):
        (-[WebFrame provisionalDataSource]):
        (-[WebFrame dataSource]):
        (-[WebFrame _makeDocumentView]):
        (-[WebFrame _updateHistoryForReload]):
        (-[WebFrame _updateHistoryForStandardLoad]):
        (-[WebFrame _updateHistoryForInternalLoad]):
        (-[WebFrame _forceLayoutForNonHTML]):
        (-[WebFrame _clearLoadingFromPageCacheForDocumentLoader:]):
        (-[WebFrame _isDocumentLoaderLoadingFromPageCache:]):
        (-[WebFrame _archivedSubresourceForURL:fromDocumentLoader:]):
        (-[WebFrame _makeRepresentationForDocumentLoader:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16922 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/Loader/WebDocumentLoader.h
WebKit/Loader/WebDocumentLoader.m
WebKit/Loader/WebFrameLoader.h
WebKit/Loader/WebFrameLoader.m
WebKit/Loader/WebFrameLoaderClient.h
WebKit/Plugins/WebBaseNetscapePluginView.m
WebKit/WebCoreSupport/WebFrameBridge.m
WebKit/WebView/WebDataSource.m
WebKit/WebView/WebFrame.m

index c75924ad232a2fc2c03fb956c827c814a6f39de0..b21699a632ef2d73f42d9783f4c6cfbcc860b151 100644 (file)
@@ -1,3 +1,67 @@
+2006-10-09  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Oliver.
+        
+        - remove WebDataSource from the WebFrameLoader interface (and thereby from a lot of internal use)
+
+        * Loader/WebDocumentLoader.h:
+        * Loader/WebDocumentLoader.m:
+        (-[WebDocumentLoader dealloc]):
+        (-[WebDocumentLoader initialRequest]):
+        (-[WebDocumentLoader URL]):
+        (-[WebDocumentLoader unreachableURL]):
+        * Loader/WebFrameLoader.h:
+        * Loader/WebFrameLoader.m:
+        (-[WebFrameLoader setState:]):
+        (-[WebFrameLoader startLoading]):
+        (-[WebFrameLoader startProvisionalLoad:]):
+        (-[WebFrameLoader clientRedirectedTo:delay:fireDate:lockHistory:isJavaScriptFormAction:]):
+        (-[WebFrameLoader loadURL:referrer:loadType:target:triggeringEvent:form:formValues:]):
+        (-[WebFrameLoader opened]):
+        (-[WebFrameLoader commitProvisionalLoad:]):
+        (-[WebFrameLoader initialRequest]):
+        (-[WebFrameLoader _finishedLoading]):
+        (-[WebFrameLoader _notifyIconChanged:]):
+        (-[WebFrameLoader _URL]):
+        (-[WebFrameLoader willUseArchiveForRequest:originalURL:loader:]):
+        (-[WebFrameLoader _checkNavigationPolicyForRequest:andCall:withSelector:]):
+        (-[WebFrameLoader shouldReloadToHandleUnreachableURLFromRequest:]):
+        (-[WebFrameLoader _loadRequest:archive:]):
+        (-[WebFrameLoader _loadRequest:triggeringAction:loadType:formState:]):
+        (-[WebFrameLoader _reloadAllowingStaleDataWithOverrideEncoding:]):
+        (-[WebFrameLoader reload]):
+        (-[WebFrameLoader checkNavigationPolicyForRequest:documentLoader:formState:andCall:withSelector:]):
+        (-[WebFrameLoader continueLoadRequestAfterNavigationPolicy:formState:]):
+        (-[WebFrameLoader loadDocumentLoader:withLoadType:formState:]):
+        (-[WebFrameLoader frameLoadCompleted]):
+        (-[WebFrameLoader transitionToCommitted:]):
+        (-[WebFrameLoader checkLoadCompleteForThisFrame]):
+        (-[WebFrameLoader safeLoadURL:]):
+        * Loader/WebFrameLoaderClient.h:
+        * Plugins/WebBaseNetscapePluginView.m:
+        (-[WebBaseNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
+        * WebCoreSupport/WebFrameBridge.m:
+        (-[WebFrameBridge originalRequestURL]):
+        * WebView/WebDataSource.m:
+        (-[WebDataSource _URL]):
+        (-[WebDataSource dealloc]):
+        (-[WebDataSource initialRequest]):
+        (-[WebDataSource unreachableURL]):
+        * WebView/WebFrame.m:
+        (-[WebFrame _loadItem:withLoadType:]):
+        (-[WebFrame _prepareForDataSourceReplacement]):
+        (-[WebFrame provisionalDataSource]):
+        (-[WebFrame dataSource]):
+        (-[WebFrame _makeDocumentView]):
+        (-[WebFrame _updateHistoryForReload]):
+        (-[WebFrame _updateHistoryForStandardLoad]):
+        (-[WebFrame _updateHistoryForInternalLoad]):
+        (-[WebFrame _forceLayoutForNonHTML]):
+        (-[WebFrame _clearLoadingFromPageCacheForDocumentLoader:]):
+        (-[WebFrame _isDocumentLoaderLoadingFromPageCache:]):
+        (-[WebFrame _archivedSubresourceForURL:fromDocumentLoader:]):
+        (-[WebFrame _makeRepresentationForDocumentLoader:]):
+
 2006-10-09  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Darin.
index 0edd6cf5628bd559aeb8e66c4cbd60ab9cbb939e..8641702d5126ea27eddd21f568a54f9b5f9c273b 100644 (file)
@@ -98,6 +98,9 @@
 - (NSMutableURLRequest *)request;
 - (void)setRequest:(NSURLRequest *)request;
 - (NSMutableURLRequest *)actualRequest;
+- (NSURLRequest *)initialRequest;
+- (NSURL *)URL;
+- (NSURL *)unreachableURL;
 - (void)replaceRequestURLForAnchorScrollWithURL:(NSURL *)URL;
 - (BOOL)isStopping;
 - (void)stopLoading;
index ab032d4552eb327c5271d8a0a4c670dabd54a364..daf4f5504e7a5af2d8bb4746d1fcdcbf3a7922bc 100644 (file)
@@ -52,6 +52,9 @@
 
 - (void)dealloc
 {
+    ASSERT([frameLoader activeDocumentLoader] != self || ![frameLoader isLoading]);
+    
+
     [mainResourceData release];
     [originalRequest release];
     [originalRequestCopy release];
     return clientRequest;
 }
 
+- (NSURLRequest *)initialRequest
+{
+    NSURLRequest *clientRequest = [[self originalRequest] _webDataRequestExternalRequest];
+    if (!clientRequest)
+        clientRequest = [self originalRequest];
+    return clientRequest;
+}
+
 - (NSMutableURLRequest *)actualRequest
 {
     return request;
 }
 
+- (NSURL *)URL
+{
+    return [[self request] URL];
+}
+
+- (NSURL *)unreachableURL
+{
+    return [[self originalRequest] _webDataRequestUnreachableURL];
+}
+
 - (void)replaceRequestURLForAnchorScrollWithURL:(NSURL *)URL
 {
     // assert that URLs differ only by fragment ID
index 385ae813698a67e05132107b67cc3c24fcdf5884..d989a1ea47e2facde3bf3989f843d0638d041776 100644 (file)
@@ -30,7 +30,6 @@
 
 @class DOMElement;
 @class WebArchive;
-@class WebDataSource;
 @class WebDocumentLoader;
 @class WebFormState;
 @class WebFrame;
@@ -139,11 +138,7 @@ BOOL isBackForwardLoadType(FrameLoadType type);
 - (void)markLoadComplete;
 - (void)commitProvisionalLoad;
 - (void)startLoading;
-- (void)startProvisionalLoad:(WebDataSource *)dataSource;
-- (WebDataSource *)dataSource;
-- (WebDataSource *)provisionalDataSource;
-- (WebDataSource *)policyDataSource;
-- (WebDataSource *)activeDataSource;
+- (void)startProvisionalLoad:(WebDocumentLoader *)loader;
 - (WebDocumentLoader *)activeDocumentLoader;
 - (WebDocumentLoader *)documentLoader;
 - (WebDocumentLoader *)provisionalDocumentLoader;
@@ -225,10 +220,10 @@ BOOL isBackForwardLoadType(FrameLoadType type);
 
 - (void)invalidatePendingPolicyDecisionCallingDefaultAction:(BOOL)call;
 - (void)checkNewWindowPolicyForRequest:(NSURLRequest *)request action:(NSDictionary *)action frameName:(NSString *)frameName formState:(WebFormState *)formState andCall:(id)target withSelector:(SEL)selector;
-- (void)checkNavigationPolicyForRequest:(NSURLRequest *)request dataSource:(WebDataSource *)dataSource formState:(WebFormState *)formState andCall:(id)target withSelector:(SEL)selector;
+- (void)checkNavigationPolicyForRequest:(NSURLRequest *)request documentLoader:(WebDocumentLoader *)loader formState:(WebFormState *)formState andCall:(id)target withSelector:(SEL)selector;
 - (void)continueAfterWillSubmitForm:(WebPolicyAction)policy;
 - (void)continueLoadRequestAfterNavigationPolicy:(NSURLRequest *)request formState:(WebFormState *)formState;
-- (void)loadDataSource:(WebDataSource *)newDataSource withLoadType:(FrameLoadType)loadType formState:(WebFormState *)formState;
+- (void)loadDocumentLoader:(WebDocumentLoader *)loader withLoadType:(FrameLoadType)loadType formState:(WebFormState *)formState;
 - (void)handleUnimplementablePolicyWithErrorCode:(int)code forURL:(NSURL *)URL;
 
 - (void)didFirstLayout;
index e84256df137f901d6b58ed5e01bb86806213331e..3a5549d6a43145ada5db6703a627042a56f900d4 100644 (file)
@@ -106,11 +106,6 @@ BOOL isBackForwardLoadType(FrameLoadType type)
     return documentLoader;    
 }
 
-- (WebDataSource *)activeDataSource
-{
-    return [client _dataSourceForDocumentLoader:[self activeDocumentLoader]];
-}
-
 - (void)addPlugInStreamLoader:(WebLoader *)loader
 {
     if (!plugInStreamLoaders)
@@ -241,11 +236,6 @@ BOOL isBackForwardLoadType(FrameLoadType type)
     [mainResourceLoader cancelWithError:error];
 }
 
-- (WebDataSource *)dataSource
-{
-    return [client _dataSourceForDocumentLoader:documentLoader]; 
-}
-
 - (void)setDocumentLoader:(WebDocumentLoader *)loader
 {
     if (loader == nil && documentLoader == nil)
@@ -266,11 +256,6 @@ BOOL isBackForwardLoadType(FrameLoadType type)
     return documentLoader;
 }
 
-- (WebDataSource *)policyDataSource
-{
-    return [client _dataSourceForDocumentLoader:policyDocumentLoader];     
-}
-
 - (void)setPolicyDocumentLoader:(WebDocumentLoader *)loader
 {
     if (policyDocumentLoader == loader)
@@ -284,11 +269,6 @@ BOOL isBackForwardLoadType(FrameLoadType type)
     policyDocumentLoader = loader;
 }
    
-- (WebDataSource *)provisionalDataSource 
-{
-    return [client _dataSourceForDocumentLoader:provisionalDocumentLoader]; 
-}
-
 - (WebDocumentLoader *)provisionalDocumentLoader
 {
     return provisionalDocumentLoader;
@@ -343,7 +323,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
             CFAbsoluteTimeGetCurrent() - [[[[[client webView] mainFrame] dataSource] _documentLoader] loadingStartedTime]);
     
     if (newState == WebFrameStateComplete && client == [[client webView] mainFrame])
-        LOG(DocumentLoad, "completed %@ (%f seconds)", [[[self dataSource] request] URL], CFAbsoluteTimeGetCurrent() - [[[self dataSource] _documentLoader] loadingStartedTime]);
+        LOG(DocumentLoad, "completed %@ (%f seconds)", [[documentLoader request] URL], CFAbsoluteTimeGetCurrent() - [documentLoader loadingStartedTime]);
     
     state = newState;
     
@@ -410,8 +390,8 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         
     if ([self isLoadingMainResource])
         return;
-        
-    [[self provisionalDataSource] _setLoadingFromPageCache:NO];
+
+    [client _clearLoadingFromPageCacheForDocumentLoader:provisionalDocumentLoader];
 
     id identifier = [client _dispatchIdentifierForInitialRequest:[provisionalDocumentLoader originalRequest] fromDocumentLoader:provisionalDocumentLoader];
         
@@ -419,9 +399,9 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         [provisionalDocumentLoader updateLoading];
 }
 
-- (void)startProvisionalLoad:(WebDataSource *)ds
+- (void)startProvisionalLoad:(WebDocumentLoader *)loader
 {
-    [self setProvisionalDocumentLoader:[ds _documentLoader]];
+    [self setProvisionalDocumentLoader:loader];
     [self setState:WebFrameStateProvisional];
 }
 
@@ -581,7 +561,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 
 - (void)clientRedirectedTo:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction
 {
-    LOG(Redirect, "%@(%p) Client redirect to: %@, [self dataSource] = %p, lockHistory = %d, isJavaScriptFormAction = %d", [client name], self, URL, [self dataSource], (int)lockHistory, (int)isJavaScriptFormAction);
+    LOG(Redirect, "%@(%p) Client redirect to: %@, [self documentLoader] = %p, lockHistory = %d, isJavaScriptFormAction = %d", [client name], self, URL, [self documentLoader], (int)lockHistory, (int)isJavaScriptFormAction);
     
     [client _dispatchWillPerformClientRedirectToURL:URL delay:seconds fireDate:date];
     
@@ -646,7 +626,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         return;
     }
     
-    WebDataSource *oldDataSource = [[self dataSource] retain];
+    WebDocumentLoader *oldDocumentLoader = [documentLoader retain];
     
     BOOL sameURL = [client _shouldTreatURLAsSameAsCurrent:URL];
     
@@ -670,11 +650,11 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         
         // FIXME: What about load types other than Standard and Reload?
         
-        [[oldDataSource _documentLoader] setTriggeringAction:action];
+        [oldDocumentLoader setTriggeringAction:action];
         [self invalidatePendingPolicyDecisionCallingDefaultAction:YES];
         [self checkNavigationPolicyForRequest:request
-                                                    dataSource:oldDataSource formState:formState
-                                                       andCall:self withSelector:@selector(continueFragmentScrollAfterNavigationPolicy:formState:)];
+                                   documentLoader:oldDocumentLoader formState:formState
+                                      andCall:self withSelector:@selector(continueFragmentScrollAfterNavigationPolicy:formState:)];
     } else {
         // must grab this now, since this load may stop the previous load and clear this flag
         BOOL isRedirect = quickRedirectComing;
@@ -692,7 +672,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     }
     
     [request release];
-    [oldDataSource release];
+    [oldDocumentLoader release];
     [formState release];
 }
 
@@ -752,10 +732,10 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 // Called after we send an openURL:... down to WebCore.
 - (void)opened
 {
-    if ([self loadType] == FrameLoadTypeStandard && [[[self dataSource] _documentLoader] isClientRedirect])
+    if ([self loadType] == FrameLoadTypeStandard && [documentLoader isClientRedirect])
         [client _updateHistoryAfterClientRedirect];
 
-    if ([[self dataSource] _loadingFromPageCache]) {
+    if ([client _isDocumentLoaderLoadingFromPageCache:documentLoader]) {
         // Force a layout to update view size and thereby update scrollbars.
         [client _forceLayout];
 
@@ -786,8 +766,9 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 {
     bool reload = loadType == FrameLoadTypeReload || loadType == FrameLoadTypeReloadAllowingStaleData;
     
-    WebDataSource *provisionalDataSource = [[self provisionalDataSource] retain];
-    NSURLResponse *response = [provisionalDataSource response];
+    WebDocumentLoader *pdl = [provisionalDocumentLoader retain];
+    
+    NSURLResponse *response = [pdl response];
     
     NSDictionary *headers = [response isKindOfClass:[NSHTTPURLResponse class]]
         ? [(NSHTTPURLResponse *)response allHeaderFields] : nil;
@@ -796,7 +777,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         [self closeOldDataSources];
     
     if (!pageCache)
-        [provisionalDataSource _makeRepresentation];
+        [client _makeRepresentationForDocumentLoader:pdl];
     
     [self transitionToCommitted:pageCache];
     
@@ -807,7 +788,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     if (sentRedirectNotification)
         [self clientRedirectCancelledOrFinished:NO];
     
-    NSURL *baseURL = [[provisionalDataSource request] _webDataRequestBaseURL];        
+    NSURL *baseURL = [[provisionalDocumentLoader request] _webDataRequestBaseURL];        
     NSURL *URL = baseURL ? baseURL : [response URL];
     
     if (!URL || [URL _web_isEmpty])
@@ -822,12 +803,12 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     
     [self opened];
     
-    [provisionalDataSource release];
+    [pdl release];
 }
 
 - (NSURLRequest *)initialRequest
 {
-    return [[self activeDataSource] initialRequest];
+    return [[self activeDocumentLoader] initialRequest];
 }
 
 - (void)_receivedData:(NSData *)data
@@ -878,20 +859,20 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 
 - (void)_finishedLoading
 {
-    WebDataSource *ds = [self activeDataSource];
+    WebDocumentLoader *dl = [self activeDocumentLoader];
     
     WebFrameBridge *bridge = [self bridge];
 
     [bridge retain];
-    [[self activeDocumentLoader] finishedLoading];
+    [dl finishedLoading];
 
-    if ([ds _mainDocumentError] || ![ds webFrame]) {
+    if ([dl mainDocumentError] || ![dl frameLoader]) {
         [bridge release];
         return;
     }
 
-    [[self activeDocumentLoader] setPrimaryLoadComplete:YES];
-    [client _dispatchDidLoadMainResourceForDocumentLoader:[self activeDocumentLoader]];
+    [dl setPrimaryLoadComplete:YES];
+    [client _dispatchDidLoadMainResourceForDocumentLoader:dl];
     [self checkLoadComplete];
 
     [bridge release];
@@ -904,7 +885,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 
     [[client webView] _willChangeValueForKey:_WebMainFrameIconKey];
     
-    NSImage *icon = [[WebIconDatabase sharedIconDatabase] iconForURL:[[[self activeDataSource] _URL] _web_originalDataAsString] withSize:WebIconSmallSize];
+    NSImage *icon = [[WebIconDatabase sharedIconDatabase] iconForURL:[[[self activeDocumentLoader] URL] _web_originalDataAsString] withSize:WebIconSmallSize];
     
     [client _dispatchDidReceiveIcon:icon];
     
@@ -913,7 +894,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 
 - (NSURL *)_URL
 {
-    return [[self activeDataSource] _URL];
+    return [[self activeDocumentLoader] URL];
 }
 
 - (NSError *)cancelledErrorWithRequest:(NSURLRequest *)request
@@ -1005,7 +986,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 - (BOOL)willUseArchiveForRequest:(NSURLRequest *)r originalURL:(NSURL *)originalURL loader:(WebLoader *)loader
 {
     if ([[r URL] isEqual:originalURL] && [self _canUseResourceForRequest:r]) {
-        WebResource *resource = [[self activeDataSource] _archivedSubresourceForURL:originalURL];
+        WebResource *resource = [client _archivedSubresourceForURL:originalURL fromDocumentLoader:[self activeDocumentLoader]];
         if (resource && [self _canUseResourceWithResponse:[resource _response]]) {
             CFDictionarySetValue((CFMutableDictionaryRef)[self pendingArchivedResources], loader, resource);
             // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
@@ -1069,7 +1050,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 - (void)_checkNavigationPolicyForRequest:(NSURLRequest *)newRequest andCall:(id)obj withSelector:(SEL)sel
 {
     [self checkNavigationPolicyForRequest:newRequest
-                              dataSource:[self activeDataSource]
+                           documentLoader:[self activeDocumentLoader]
                                 formState:nil
                                   andCall:obj
                              withSelector:sel];
@@ -1108,13 +1089,13 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     // case handles well-formed URLs that can't be loaded, and the latter
     // case handles malformed URLs and unknown schemes. Loading alternate content
     // at other times behaves like a standard load.
-    WebDataSource *compareDataSource = nil;
+    WebDocumentLoader *compareDocumentLoader = nil;
     if (delegateIsDecidingNavigationPolicy || delegateIsHandlingUnimplementablePolicy)
-        compareDataSource = [self policyDataSource];
+        compareDocumentLoader = policyDocumentLoader;
     else if (delegateIsHandlingProvisionalLoadError)
-        compareDataSource = [self provisionalDataSource];
+        compareDocumentLoader = [self provisionalDocumentLoader];
     
-    return compareDataSource != nil && [unreachableURL isEqual:[[compareDataSource request] URL]];
+    return compareDocumentLoader != nil && [unreachableURL isEqual:[[compareDocumentLoader request] URL]];
 }
 
 - (void)_loadRequest:(NSURLRequest *)request archive:(WebArchive *)archive
@@ -1144,54 +1125,50 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         type = FrameLoadTypeReload;
     }
     
-    [self loadDataSource:newDataSource withLoadType:type formState:nil];
+    [self loadDocumentLoader:policyDocumentLoader withLoadType:type formState:nil];
 }
 
 - (void)_loadRequest:(NSURLRequest *)request triggeringAction:(NSDictionary *)action loadType:(FrameLoadType)type formState:(WebFormState *)formState
 {
     ASSERT(!policyDocumentLoader);
     policyDocumentLoader = [client _createDocumentLoaderWithRequest:request];
-    WebDataSource *newDataSource = [client _dataSourceForDocumentLoader:policyDocumentLoader];
 
     [policyDocumentLoader setTriggeringAction:action];
     [policyDocumentLoader setOverrideEncoding:[[self documentLoader] overrideEncoding]];
 
-    [self loadDataSource:newDataSource withLoadType:type formState:formState];
+    [self loadDocumentLoader:policyDocumentLoader withLoadType:type formState:formState];
 }
 
 - (void)_reloadAllowingStaleDataWithOverrideEncoding:(NSString *)encoding
 {
-    WebDataSource *ds = [self dataSource];
-    if (ds == nil)
+    if (documentLoader == nil)
         return;
 
-    NSMutableURLRequest *request = [[ds request] mutableCopy];
-    NSURL *unreachableURL = [ds unreachableURL];
+    NSMutableURLRequest *request = [[documentLoader request] mutableCopy];
+    NSURL *unreachableURL = [documentLoader unreachableURL];
     if (unreachableURL != nil)
         [request setURL:unreachableURL];
 
     [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
     ASSERT(!policyDocumentLoader);
     policyDocumentLoader = [client _createDocumentLoaderWithRequest:request];
-    WebDataSource *newDataSource = [client _dataSourceForDocumentLoader:policyDocumentLoader];
     [request release];
     
     [policyDocumentLoader setOverrideEncoding:encoding];
 
-    [self loadDataSource:newDataSource withLoadType:FrameLoadTypeReloadAllowingStaleData formState:nil];
+    [self loadDocumentLoader:policyDocumentLoader withLoadType:FrameLoadTypeReloadAllowingStaleData formState:nil];
 }
 
 - (void)reload
 {
-    WebDataSource *ds = [self dataSource];
-    if (ds == nil)
+    if (documentLoader == nil)
         return;
 
-    NSMutableURLRequest *initialRequest = [ds request];
+    NSMutableURLRequest *initialRequest = [documentLoader request];
     
     // If a window is created by javascript, its main frame can have an empty but non-nil URL.
     // Reloading in this case will lose the current contents (see 4151001).
-    if ([[[[ds request] URL] absoluteString] length] == 0)
+    if ([[[[documentLoader request] URL] absoluteString] length] == 0)
         return;
 
     // Replace error-page URL with the URL we were trying to reach.
@@ -1201,8 +1178,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     
     ASSERT(!policyDocumentLoader);
     policyDocumentLoader = [client _createDocumentLoaderWithRequest:initialRequest];
-    WebDataSource *newDataSource = [client _dataSourceForDocumentLoader:policyDocumentLoader];
-    NSMutableURLRequest *request = [newDataSource request];
+    NSMutableURLRequest *request = [policyDocumentLoader request];
 
     [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
 
@@ -1213,9 +1189,9 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         [policyDocumentLoader setTriggeringAction:action];
     }
 
-    [policyDocumentLoader setOverrideEncoding:[[ds _documentLoader] overrideEncoding]];
+    [policyDocumentLoader setOverrideEncoding:[documentLoader overrideEncoding]];
     
-    [self loadDataSource:newDataSource withLoadType:FrameLoadTypeReload formState:nil];
+    [self loadDocumentLoader:policyDocumentLoader withLoadType:FrameLoadTypeReload formState:nil];
 }
 
 - (void)didReceiveServerRedirectForProvisionalLoadForFrame
@@ -1395,21 +1371,21 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 }
 
 - (void)checkNavigationPolicyForRequest:(NSURLRequest *)request
-                             dataSource:(WebDataSource *)dataSource
+                         documentLoader:(WebDocumentLoader *)loader
                               formState:(WebFormState *)formState
                                 andCall:(id)target
                            withSelector:(SEL)selector
 {
-    NSDictionary *action = [[dataSource _documentLoader] triggeringAction];
+    NSDictionary *action = [loader triggeringAction];
     if (action == nil) {
         action = [self actionInformationForNavigationType:WebNavigationTypeOther
             event:nil originalURL:[request URL]];
-        [[dataSource _documentLoader]  setTriggeringAction:action];
+        [loader setTriggeringAction:action];
     }
         
     // Don't ask more than once for the same request or if we are loading an empty URL.
     // This avoids confusion on the part of the client.
-    if ([request isEqual:[[dataSource _documentLoader] lastCheckedRequest]] || [[request URL] _web_isEmpty]) {
+    if ([request isEqual:[loader lastCheckedRequest]] || [[request URL] _web_isEmpty]) {
         [target performSelector:selector withObject:request withObject:nil];
         return;
     }
@@ -1423,7 +1399,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
         return;
     }
     
-    [[dataSource _documentLoader] setLastCheckedRequest:request];
+    [loader setLastCheckedRequest:request];
 
     WebPolicyDecisionListener *decisionListener = [[WebPolicyDecisionListener alloc] _initWithTarget:self action:@selector(continueAfterNavigationPolicy:)];
     
@@ -1493,7 +1469,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     // If we loaded an alternate page to replace an unreachableURL, we'll get in here with a
     // nil policyDataSource because loading the alternate page will have passed
     // through this method already, nested; otherwise, policyDataSource should still be set.
-    ASSERT([self policyDataSource] || [[self provisionalDataSource] unreachableURL] != nil);
+    ASSERT(policyDocumentLoader || [provisionalDocumentLoader unreachableURL] != nil);
 
     BOOL isTargetItem = [client _provisionalItemIsTarget];
 
@@ -1522,18 +1498,18 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     }
     
     FrameLoadType type = policyLoadType;
-    WebDataSource *dataSource = [[self policyDataSource] retain];
+    WebDocumentLoader *dl = [policyDocumentLoader retain];
     
     [self stopLoading];
     loadType = type;
 
-    [self startProvisionalLoad:dataSource];
+    [self startProvisionalLoad:dl];
 
-    [dataSource release];
+    [dl release];
     [self setPolicyDocumentLoader:nil];
     
     if (client == [[client webView] mainFrame])
-        LOG(DocumentLoad, "loading %@", [[[self provisionalDataSource] request] URL]);
+        LOG(DocumentLoad, "loading %@", [[[self provisionalDocumentLoader] request] URL]);
 
     if (isBackForwardLoadType(type)) {
         if ([client _loadProvisionalItemFromPageCache])
@@ -1551,7 +1527,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     }
 }
 
-- (void)loadDataSource:(WebDataSource *)newDataSource withLoadType:(FrameLoadType)type formState:(WebFormState *)formState
+- (void)loadDocumentLoader:(WebDocumentLoader *)loader withLoadType:(FrameLoadType)type formState:(WebFormState *)formState
 {
     ASSERT([client webView] != nil);
 
@@ -1562,8 +1538,6 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 
     policyLoadType = type;
 
-    WebDocumentLoader *loader = [newDataSource _documentLoader];
-
     WebFrame *parentFrame = [client parentFrame];
     if (parentFrame)
         [loader setOverrideEncoding:[[[parentFrame dataSource] _documentLoader] overrideEncoding]];
@@ -1574,8 +1548,8 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 
     [self setPolicyDocumentLoader:loader];
 
-    [self checkNavigationPolicyForRequest:[newDataSource request]
-                               dataSource:newDataSource
+    [self checkNavigationPolicyForRequest:[loader request]
+                           documentLoader:loader
                                 formState:formState
                                   andCall:self
                              withSelector:@selector(continueLoadRequestAfterNavigationPolicy:formState:)];
@@ -1605,7 +1579,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     [client _frameLoadCompleted];
 
     // After a canceled provisional load, firstLayoutDone is NO. Reset it to YES if we're displaying a page.
-    if ([self dataSource])
+    if (documentLoader)
         firstLayoutDone = YES;
 }
 
@@ -1643,16 +1617,16 @@ keepGoing:
     // The call to closeURL invokes the unload event handler, which can execute arbitrary
     // JavaScript. If the script initiates a new load, we need to abandon the current load,
     // or the two will stomp each other.
-    WebDataSource *pd = [self provisionalDataSource];
+    WebDocumentLoader *pdl = provisionalDocumentLoader;
     [[client _bridge] closeURL];
-    if (pd != [self provisionalDataSource])
+    if (pdl != provisionalDocumentLoader)
         return;
 
     [self commitProvisionalLoad];
 
     // Handle adding the URL to the back/forward list.
-    WebDataSource *ds = [self dataSource];
-    NSString *ptitle = [ds pageTitle];
+    WebDocumentLoader *dl = documentLoader;
+    NSString *ptitle = [dl title];
 
     switch (loadType) {
     case WebFrameLoadTypeForward:
@@ -1716,17 +1690,17 @@ keepGoing:
             if (delegateIsHandlingProvisionalLoadError)
                 return;
 
-            WebDataSource *pd = [[self provisionalDataSource] retain];
+            WebDocumentLoader *pdl = [provisionalDocumentLoader retain];
 
             LOG(Loading, "%@:  checking complete in WebFrameStateProvisional", [client name]);
             // If we've received any errors we may be stuck in the provisional state and actually complete.
-            NSError *error = [pd _mainDocumentError];
+            NSError *error = [pdmainDocumentError];
             if (error != nil) {
                 // Check all children first.
                 LOG(Loading, "%@:  checking complete, current state WebFrameStateProvisional", [client name]);
                 LoadErrorResetToken *resetToken = [client _tokenForLoadErrorReset];
                 BOOL shouldReset = YES;
-                if (![pd isLoading]) {
+                if (![pdl isLoadingInAPISense]) {
                     LOG(Loading, "%@:  checking complete in WebFrameStateProvisional, load done", [client name]);
                     [[client webView] _didFailProvisionalLoadWithError:error forFrame:client];
                     delegateIsHandlingProvisionalLoadError = YES;
@@ -1740,15 +1714,15 @@ keepGoing:
                     // must be, to be in this branch of the if? And is it ok to just do 
                     // a full-on stopLoading?
                     [self stopLoadingSubframes];
-                    [[pd _documentLoader] stopLoading];
+                    [pdl stopLoading];
 
                     // Finish resetting the load state, but only if another load hasn't been started by the
                     // delegate callback.
-                    if (pd == [self provisionalDataSource])
+                    if (pdl == provisionalDocumentLoader)
                         [self clearProvisionalLoad];
                     else {
-                        NSURL *unreachableURL = [[self provisionalDataSource] unreachableURL];
-                        if (unreachableURL != nil && [unreachableURL isEqual:[[pd request] URL]])
+                        NSURL *unreachableURL = [provisionalDocumentLoader unreachableURL];
+                        if (unreachableURL != nil && [unreachableURL isEqual:[[pdl request] URL]])
                             shouldReset = NO;
                     }
                 }
@@ -1757,31 +1731,21 @@ keepGoing:
                 else
                     [client _doNotResetAfterLoadError:resetToken];
             }
-            [pd release];
+            [pdl release];
             return;
         }
         
         case WebFrameStateCommittedPage: {
-            WebDataSource *ds = [self dataSource];
+            WebDocumentLoader *dl = documentLoader;
             
-            if (![ds isLoading]) {
-                WebFrameView *thisView = [client frameView];
-                NSView <WebDocumentView> *thisDocumentView = [thisView documentView];
-                ASSERT(thisDocumentView != nil);
-
+            if (![dl isLoadingInAPISense]) {
                 [self markLoadComplete];
 
                 // FIXME: Is this subsequent work important if we already navigated away?
                 // Maybe there are bugs because of that, or extra work we can skip because
                 // the new page is ready.
 
-                // Tell the just loaded document to layout.  This may be necessary
-                // for non-html content that needs a layout message.
-                if (!([[self dataSource] _isDocumentHTML])) {
-                    [thisDocumentView setNeedsLayout:YES];
-                    [thisDocumentView layout];
-                    [thisDocumentView setNeedsDisplay:YES];
-                }
+                [client _forceLayoutForNonHTML];
                  
                 // If the user had a scroll point scroll to it.  This will override
                 // the anchor point.  After much discussion it was decided by folks
@@ -1809,7 +1773,7 @@ keepGoing:
                     }
                 }
 
-                NSError *error = [ds _mainDocumentError];
+                NSError *error = [dmainDocumentError];
                 if (error != nil) {
                     [[client webView] _didFailLoadWithError:error forFrame:client];
                     [client _dispatchDidFailLoadWithError:error];
@@ -2003,7 +1967,7 @@ exit:
 {
    // Call the bridge because this is where our security checks are made.
     [[self bridge] loadURL:URL 
-                  referrer:[[[[self dataSource] request] URL] _web_originalDataAsString]
+                  referrer:[[[documentLoader request] URL] _web_originalDataAsString]
                     reload:NO
                userGesture:YES       
                     target:nil
index 002af33223e24272be496e59b30d0183dc355b25..2ebd6a33e0e8f765ab528ab6d2f01c2b47978ef7 100644 (file)
@@ -32,6 +32,7 @@ typedef struct LoadErrorResetToken LoadErrorResetToken;
 
 @class WebDocumentLoader;
 @class WebPolicyDecisionListener;
+@class WebResource;
 
 @protocol WebFrameLoaderClient
 
@@ -44,8 +45,12 @@ typedef struct LoadErrorResetToken LoadErrorResetToken;
 - (BOOL)_privateBrowsingEnabled;
 
 - (void)_makeDocumentView;
+- (void)_makeRepresentationForDocumentLoader:(WebDocumentLoader *)loader;
 - (void)_setDocumentViewFromPageCache:(NSDictionary *)dictionary;
 - (void)_forceLayout;
+- (void)_forceLayoutForNonHTML;
+
+- (WebResource *)_archivedSubresourceForURL:(NSURL *)URL fromDocumentLoader:(WebDocumentLoader *)loader;
 
 - (void)_updateHistoryForCommit;
 
@@ -104,5 +109,7 @@ typedef struct LoadErrorResetToken LoadErrorResetToken;
 - (void)_dispatchUnableToImplementPolicyWithError:(NSError *)error;
 
 - (void)_dispatchDidLoadMainResourceForDocumentLoader:(WebDocumentLoader *)loader;
+- (void)_clearLoadingFromPageCacheForDocumentLoader:(WebDocumentLoader *)loader;
+- (BOOL)_isDocumentLoaderLoadingFromPageCache:(WebDocumentLoader *)documentLoader;
 
 @end
index 97e388f2d9d93a862ce2b78c9ab78fd4090a6b6f..333fdaa67c2fefc3cf2f072aeb1927256cd63ecf 100644 (file)
@@ -32,7 +32,7 @@
 #import <JavaScriptCore/Assertions.h>
 #import <WebKit/DOMPrivate.h>
 #import <WebKit/WebFrameBridge.h>
-#import <WebKit/WebDataSource.h>
+#import <WebKit/WebDataSourceInternal.h>
 #import <WebKit/WebDefaultUIDelegate.h>
 #import <WebKit/WebFrameInternal.h> 
 #import <WebKit/WebFrameLoader.h> 
@@ -1897,7 +1897,7 @@ static OSStatus TSMEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEve
 
     // don't let a plugin start any loads if it is no longer part of a document that is being
     // displayed
-    if ([self dataSource] !=  [[[self webFrame] _frameLoader] activeDataSource])
+    if ([[self dataSource] _documentLoader] !=  [[[self webFrame] _frameLoader] activeDocumentLoader])
         return NPERR_GENERIC_ERROR;
     
     NSString *JSString = [URL _webkit_scriptIfJavaScriptURL];
index 9faf1b4f40f41ec98ce5be4e9d7f25b1b9bf512f..dc7d4bcc626dbdef6cb9c01e5a99efee1e238b5d 100644 (file)
@@ -1727,7 +1727,7 @@ static id <WebFormDelegate> formDelegate(WebFrameBridge *self)
 
 - (NSURL*)originalRequestURL
 {
-    return [[[_frameLoader activeDataSource] initialRequest] URL];
+    return [[[_frameLoader activeDocumentLoader] initialRequest] URL];
 }
 
 - (BOOL)isLoadTypeReload
index 71ee577a7318acc4e8fb12df00de9d6b0602cdee..18a1169917097f0d3b0634a5e37f18899f38dd88 100644 (file)
@@ -280,7 +280,7 @@ static inline void addTypesFromClass(NSMutableDictionary *allTypes, Class class,
 // May return nil if not initialized with a URL.
 - (NSURL *)_URL
 {
-    return [[self request] URL];
+    return [_private->loader URL];
 }
 
 - (void)_loadFromPageCache:(NSDictionary *)pageCache
@@ -385,8 +385,6 @@ static inline void addTypesFromClass(NSMutableDictionary *allTypes, Class class,
 
 - (void)dealloc
 {
-    ASSERT([[_private->loader frameLoader] activeDataSource] != self || ![[_private->loader frameLoader] isLoading]);
-
     --WebDataSourceCount;
     
     [_private release];
@@ -418,10 +416,7 @@ static inline void addTypesFromClass(NSMutableDictionary *allTypes, Class class,
 
 -(NSURLRequest *)initialRequest
 {
-    NSURLRequest *clientRequest = [[_private->loader originalRequest] _webDataRequestExternalRequest];
-    if (!clientRequest)
-        clientRequest = [_private->loader originalRequest];
-    return clientRequest;
+    return [_private->loader initialRequest];
 }
 
 -(NSMutableURLRequest *)request
@@ -457,7 +452,7 @@ static inline void addTypesFromClass(NSMutableDictionary *allTypes, Class class,
 
 - (NSURL *)unreachableURL
 {
-    return [[_private->loader originalRequest] _webDataRequestUnreachableURL];
+    return [_private->loader unreachableURL];
 }
 
 - (WebArchive *)webArchive
index 16149fe9bc12d080acbb3960813063bf64161fd2..f35833e672781c72a07a497b727d615b8254987c 100644 (file)
@@ -550,7 +550,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
             NSTimeInterval delta = [[NSDate date] timeIntervalSinceDate: cacheDate];
             if (delta <= [[[self webView] preferences] _backForwardCacheExpirationInterval]) {
                 newDataSource = [pageCache objectForKey: WebPageCacheDataSourceKey];
-                [[self _frameLoader] loadDataSource:newDataSource withLoadType:loadType formState:nil];   
+                [[self _frameLoader] loadDocumentLoader:[newDataSource _documentLoader] withLoadType:loadType formState:nil];   
                 inPageCache = YES;
             } else {
                 LOG (PageCache, "Not restoring page from back/forward cache because cache entry has expired, %@ (%3.5f > %3.5f seconds)\n", [_private->provisionalItem URL], delta, [[[self webView] preferences] _backForwardCacheExpirationInterval]);
@@ -1101,7 +1101,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
 - (void)_prepareForDataSourceReplacement
 {
-    if (![[self _frameLoader] dataSource]) {
+    if (![self dataSource]) {
         ASSERT(![self _childFrameCount]);
         return;
     }
@@ -1326,12 +1326,12 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
 
 - (WebDataSource *)provisionalDataSource
 {
-    return [[self _frameLoader] provisionalDataSource];
+    return dataSource([[self _frameLoader] provisionalDocumentLoader]);
 }
 
 - (WebDataSource *)dataSource
 {
-    return [[self _frameLoader] dataSource];
+    return dataSource([[self _frameLoader] documentLoader]);
 }
 
 - (void)loadRequest:(NSURLRequest *)request
@@ -1466,7 +1466,7 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
 
 - (void)_makeDocumentView
 {
-    NSView <WebDocumentView> *documentView = [_private->webFrameView _makeDocumentViewForDataSource:[[self _frameLoader] dataSource]];
+    NSView <WebDocumentView> *documentView = [_private->webFrameView _makeDocumentViewForDataSource:[self dataSource]];
     if (!documentView)
         return;
 
@@ -1478,7 +1478,7 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
 
     // Call setDataSource on the document view after it has been placed in the view hierarchy.
     // This what we for the top-level view, so should do this for views in subframes as well.
-    [documentView setDataSource:[[self _frameLoader] dataSource]];
+    [documentView setDataSource:[self dataSource]];
 }
 
 - (void)_forceLayout
@@ -1513,7 +1513,7 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
     [currItem setHasPageCache:NO];
     if ([[self _frameLoader] loadType] == WebFrameLoadTypeReload)
         [self _saveScrollPositionAndViewStateToItem:currItem];
-    WebDataSource *dataSource = [[self _frameLoader] dataSource];
+    WebDataSource *dataSource = [self dataSource];
     NSURLRequest *request = [dataSource request];
     // Sometimes loading a page again leads to a different result because of cookies. Bugzilla 4072
     if ([request _webDataRequestUnreachableURL] == nil)
@@ -1528,7 +1528,7 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
 
 - (void)_updateHistoryForStandardLoad
 {
-    WebDataSource *dataSource = [[self _frameLoader] dataSource];
+    WebDataSource *dataSource = [self dataSource];
     if (![[dataSource _documentLoader] isClientRedirect]) {
         NSURL *URL = [dataSource _URLForHistory];
         if (URL && ![URL _web_isEmpty]) {
@@ -1568,7 +1568,7 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
 - (void)_updateHistoryForInternalLoad
 {
     // Add an item to the item tree for this frame
-    ASSERT(![[[[self _frameLoader] dataSource] _documentLoader] isClientRedirect]);
+    ASSERT(![[[self _frameLoader] documentLoader] isClientRedirect]);
     WebFrame *parentFrame = [self parentFrame];
     if (parentFrame) {
         WebHistoryItem *parentItem = parentFrame->_private->currentItem;
@@ -1890,4 +1890,39 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
             didLoadMainResourceForDataSource:dataSource(loader)];
 }
 
+- (void)_forceLayoutForNonHTML
+{
+    WebFrameView *thisView = [self frameView];
+    NSView <WebDocumentView> *thisDocumentView = [thisView documentView];
+    ASSERT(thisDocumentView != nil);
+    
+    // Tell the just loaded document to layout.  This may be necessary
+    // for non-html content that needs a layout message.
+    if (!([[self dataSource] _isDocumentHTML])) {
+        [thisDocumentView setNeedsLayout:YES];
+        [thisDocumentView layout];
+        [thisDocumentView setNeedsDisplay:YES];
+    }
+}
+
+- (void)_clearLoadingFromPageCacheForDocumentLoader:(WebDocumentLoader *)loader
+{
+    [dataSource(loader) _setLoadingFromPageCache:NO];
+}
+
+- (BOOL)_isDocumentLoaderLoadingFromPageCache:(WebDocumentLoader *)loader
+{
+    return [dataSource(loader) _loadingFromPageCache];
+}
+
+- (WebResource *)_archivedSubresourceForURL:(NSURL *)URL fromDocumentLoader:(WebDocumentLoader *)loader
+{
+    return [dataSource(loader) _archivedSubresourceForURL:URL];
+}
+
+- (void)_makeRepresentationForDocumentLoader:(WebDocumentLoader *)loader
+{
+    [dataSource(loader) _makeRepresentation];
+}
+
 @end