Reviewed by Maciej.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 8 Oct 2006 22:47:03 +0000 (22:47 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 8 Oct 2006 22:47:03 +0000 (22:47 +0000)
        - move WebFrameLoader creation and ownership from WebFrame to WebFrameBridge

        * Loader/WebFrameLoader.m:
        (-[WebFrameLoader stopLoadingSubframes]):
        (-[WebFrameLoader closeOldDataSources]):
        * WebCoreSupport/WebFrameBridge.h:
        * WebCoreSupport/WebFrameBridge.m:
        (-[WebFrameBridge initMainFrameWithPage:frameName:view:]):
        (-[WebFrameBridge initSubframeWithOwnerElement:frameName:view:]):
        (-[WebFrameBridge dealloc]):
        (-[WebFrameBridge loader]):
        (-[WebFrameBridge setTitle:]):
        (-[WebFrameBridge receivedData:textEncodingName:]):
        (-[WebFrameBridge startLoadingResource:withMethod:URL:customHeaders:]):
        (-[WebFrameBridge startLoadingResource:withMethod:URL:customHeaders:postData:]):
        (-[WebFrameBridge reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:]):
        (-[WebFrameBridge reportClientRedirectCancelled:]):
        (-[WebFrameBridge loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:]):
        (-[WebFrameBridge didFirstLayout]):
        (-[WebFrameBridge imageTitleForFilename:size:]):
        (-[WebFrameBridge notifyIconChanged:]):
        (-[WebFrameBridge originalRequestURL]):
        (-[WebFrameBridge isLoadTypeReload]):
        * WebView/WebFrame.m:
        (-[NSView setWebFrame::]):
        (-[WebFramePrivate dealloc]):
        (-[WebFramePrivate setWebFrameView:]):
        (-[WebFramePrivate setProvisionalItem:]):
        (-[WebFrame _webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        (-[WebFrame _createItem:]):
        (-[WebFrame _createItemTreeWithTargetFrame:clippedAtTarget:]):
        (-[WebFrame _detachFromParent]):
        (-[WebFrame _makeDocumentView]):
        (-[WebFrame _transitionToCommitted:]):
        (-[WebFrame _provisionalLoadStarted]):
        (-[WebFrame _opened]):
        (-[WebFrame _checkLoadCompleteForThisFrame]):
        (-[WebFrame _loadItem:withLoadType:]):
        (-[WebFrame _recursiveGoToItem:fromItem:withLoadType:]):
        (-[WebFrame _continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
        (-[WebFrame _loadURL:referrer:intoChild:]):
        (-[WebFrame _postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]):
        (-[WebFrame _setTitle:]):
        (-[WebFrame _defersCallbacksChanged]):
        (-[WebFrame _currentBackForwardListItemToResetTo]):
        (-[WebFrame _itemForSavingDocState]):
        (-[WebFrame _itemForRestoringDocState]):
        (-[WebFrame _saveDocumentAndScrollState]):
        (-[WebFrame _shouldTreatURLAsSameAsCurrent:]):
        (-[WebFrame _loadRequest:inFrameNamed:]):
        (-[WebFrame _initWithWebFrameView:webView:bridge:]):
        (-[WebFrame _addExtraFieldsToRequest:mainResource:alwaysFromRequest:]):
        (-[WebFrame _frameLoader]):
        (-[WebFrame _prepareForDataSourceReplacement]):
        (-[WebFrame _restoreScrollPositionAndViewState]):
        (-[WebFrame _firstLayoutDone]):
        (-[WebFrame _loadType]):
        (-[WebFrame frameView]):
        (-[WebFrame provisionalDataSource]):
        (-[WebFrame dataSource]):
        (-[WebFrame loadRequest:]):
        (-[WebFrame loadArchive:]):
        (-[WebFrame stopLoading]):
        (-[WebFrame reload]):
        (-[WebFrame _resetBackForwardList]):
        (-[WebFrame _invalidateCurrentItemPageCache]):
        (-[WebFrame _provisionalItemIsTarget]):
        (-[WebFrame _loadProvisionalItemFromPageCache]):
        * WebView/WebFrameInternal.h:

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

WebKit/ChangeLog
WebKit/Loader/WebFrameLoader.m
WebKit/WebCoreSupport/WebFrameBridge.h
WebKit/WebCoreSupport/WebFrameBridge.m
WebKit/WebView/WebFrame.m
WebKit/WebView/WebFrameInternal.h

index 4081fef79e63727bb0bbaa3f36411e3e9f80a795..90a2088a86f463725e1ace5c7131552020683274 100644 (file)
@@ -1,3 +1,77 @@
+2006-10-08  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - move WebFrameLoader creation and ownership from WebFrame to WebFrameBridge
+
+        * Loader/WebFrameLoader.m:
+        (-[WebFrameLoader stopLoadingSubframes]):
+        (-[WebFrameLoader closeOldDataSources]):
+        * WebCoreSupport/WebFrameBridge.h:
+        * WebCoreSupport/WebFrameBridge.m:
+        (-[WebFrameBridge initMainFrameWithPage:frameName:view:]):
+        (-[WebFrameBridge initSubframeWithOwnerElement:frameName:view:]):
+        (-[WebFrameBridge dealloc]):
+        (-[WebFrameBridge loader]):
+        (-[WebFrameBridge setTitle:]):
+        (-[WebFrameBridge receivedData:textEncodingName:]):
+        (-[WebFrameBridge startLoadingResource:withMethod:URL:customHeaders:]):
+        (-[WebFrameBridge startLoadingResource:withMethod:URL:customHeaders:postData:]):
+        (-[WebFrameBridge reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:]):
+        (-[WebFrameBridge reportClientRedirectCancelled:]):
+        (-[WebFrameBridge loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:]):
+        (-[WebFrameBridge didFirstLayout]):
+        (-[WebFrameBridge imageTitleForFilename:size:]):
+        (-[WebFrameBridge notifyIconChanged:]):
+        (-[WebFrameBridge originalRequestURL]):
+        (-[WebFrameBridge isLoadTypeReload]):
+        * WebView/WebFrame.m:
+        (-[NSView setWebFrame::]):
+        (-[WebFramePrivate dealloc]):
+        (-[WebFramePrivate setWebFrameView:]):
+        (-[WebFramePrivate setProvisionalItem:]):
+        (-[WebFrame _webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
+        (-[WebFrame _createItem:]):
+        (-[WebFrame _createItemTreeWithTargetFrame:clippedAtTarget:]):
+        (-[WebFrame _detachFromParent]):
+        (-[WebFrame _makeDocumentView]):
+        (-[WebFrame _transitionToCommitted:]):
+        (-[WebFrame _provisionalLoadStarted]):
+        (-[WebFrame _opened]):
+        (-[WebFrame _checkLoadCompleteForThisFrame]):
+        (-[WebFrame _loadItem:withLoadType:]):
+        (-[WebFrame _recursiveGoToItem:fromItem:withLoadType:]):
+        (-[WebFrame _continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
+        (-[WebFrame _loadURL:referrer:intoChild:]):
+        (-[WebFrame _postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]):
+        (-[WebFrame _setTitle:]):
+        (-[WebFrame _defersCallbacksChanged]):
+        (-[WebFrame _currentBackForwardListItemToResetTo]):
+        (-[WebFrame _itemForSavingDocState]):
+        (-[WebFrame _itemForRestoringDocState]):
+        (-[WebFrame _saveDocumentAndScrollState]):
+        (-[WebFrame _shouldTreatURLAsSameAsCurrent:]):
+        (-[WebFrame _loadRequest:inFrameNamed:]):
+        (-[WebFrame _initWithWebFrameView:webView:bridge:]):
+        (-[WebFrame _addExtraFieldsToRequest:mainResource:alwaysFromRequest:]):
+        (-[WebFrame _frameLoader]):
+        (-[WebFrame _prepareForDataSourceReplacement]):
+        (-[WebFrame _restoreScrollPositionAndViewState]):
+        (-[WebFrame _firstLayoutDone]):
+        (-[WebFrame _loadType]):
+        (-[WebFrame frameView]):
+        (-[WebFrame provisionalDataSource]):
+        (-[WebFrame dataSource]):
+        (-[WebFrame loadRequest:]):
+        (-[WebFrame loadArchive:]):
+        (-[WebFrame stopLoading]):
+        (-[WebFrame reload]):
+        (-[WebFrame _resetBackForwardList]):
+        (-[WebFrame _invalidateCurrentItemPageCache]):
+        (-[WebFrame _provisionalItemIsTarget]):
+        (-[WebFrame _loadProvisionalItemFromPageCache]):
+        * WebView/WebFrameInternal.h:
+
 2006-10-08  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Darin.
index 8cb8b598dd5a26dc402464edb70f2ea2bf2f1bcc..8cf5d651b13da82a102be3849f46b1b9e1a51f19 100644 (file)
@@ -373,7 +373,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 - (void)stopLoadingSubframes
 {
     for (WebCoreFrameBridge *child = [[client _bridge] firstChild]; child; child = [child nextSibling])
-        [[(WebFrameBridge *)child frameLoader] stopLoading];
+        [[(WebFrameBridge *)child loader] stopLoading];
 }
 
 - (void)stopLoading
@@ -779,7 +779,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     // FIXME: is it important for this traversal to be postorder instead of preorder?
     // FIXME: add helpers for postorder traversal?
     for (WebCoreFrameBridge *child = [[client _bridge] firstChild]; child; child = [child nextSibling])
-        [[(WebFrameBridge *)child frameLoader] closeOldDataSources];
+        [[(WebFrameBridge *)child loader] closeOldDataSources];
     
     if (documentLoader)
         [[[client webView] _frameLoadDelegateForwarder] webView:[client webView] willCloseFrame:client];
index 56e44a56353ce95b5b4ba031066b4c47346d30b0..80442d7244e0a6cb567d06ec68973b02ade48efd 100644 (file)
@@ -31,6 +31,7 @@
 @class WebPageBridge;
 @class WebCoreRenderPart;
 @class WebFrame;
+@class WebFrameLoader;
 @class WebFrameView;
 @class WebFrameLoader;
 
@@ -39,6 +40,7 @@
 @interface WebFrameBridge : WebCoreFrameBridge <WebCoreFrameBridge>
 {
     WebFrame *_frame;
+    WebFrameLoader *_loader;
 
     WebCoreKeyboardUIMode _keyboardUIMode;
     BOOL _keyboardUIModeAccessed;
@@ -57,6 +59,6 @@
 - (BOOL)inNextKeyViewOutsideWebFrameViews;
 
 - (WebFrame *)webFrame;
-- (WebFrameLoader *)frameLoader;
+- (WebFrameLoader *)loader;
 
 @end
index 63b4c23b730d83bf7189c969d6974d339da34cbb..3a85eb86e207c4a55129b208d0435eb04bcf502c 100644 (file)
@@ -121,6 +121,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
     ++WebBridgeCount;
     
     _frame = [[WebFrame alloc] _initWithWebFrameView:view webView:[self webView] bridge:self];
+    _loader = [[WebFrameLoader alloc] initWithClient:_frame];
 
     [self setName:name];
     [self initializeSettings:[[self webView] _settings]];
@@ -136,6 +137,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
     ++WebBridgeCount;
     
     _frame = [[WebFrame alloc] _initWithWebFrameView:view webView:[self webView] bridge:self];
+    _loader = [[WebFrameLoader alloc] initWithClient:_frame];
 
     [self setName:name];
     [self initializeSettings:[[self webView] _settings]];
@@ -164,6 +166,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
 {
     [lastDashboardRegions release];
     [_frame release];
+    [_loader release];
     
     [self fini];
     [super dealloc];
@@ -224,6 +227,11 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
     return _frame;
 }
 
+- (WebFrameLoader *)loader
+{
+    return _loader;
+}
+
 - (WebCoreFrameBridge *)mainFrame
 {
     ASSERT(_frame != nil);
@@ -476,14 +484,9 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
     return dataSource;
 }
 
-- (WebFrameLoader *)frameLoader
-{
-    return [_frame _frameLoader];
-}
-
 - (void)setTitle:(NSString *)title
 {
-    [[[self frameLoader] documentLoader] setTitle:[title _webkit_stringByCollapsingNonPrintingCharacters]];
+    [[_loader documentLoader] setTitle:[title _webkit_stringByCollapsingNonPrintingCharacters]];
 }
 
 - (void)setStatusText:(NSString *)status
@@ -496,7 +499,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
 - (void)receivedData:(NSData *)data textEncodingName:(NSString *)textEncodingName
 {
     // Set the encoding. This only needs to be done once, but it's harmless to do it again later.
-    NSString *encoding = [[[_frame _frameLoader] documentLoader] overrideEncoding];
+    NSString *encoding = [[_loader documentLoader] overrideEncoding];
     BOOL userChosen = encoding != nil;
     if (encoding == nil) {
         encoding = textEncodingName;
@@ -523,7 +526,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
                                                   URL:URL
                                         customHeaders:customHeaders
                                              referrer:(hideReferrer ? nil : [self referrer])
-                                       forFrameLoader:[[self webFrame] _frameLoader]];
+                                       forFrameLoader:_loader];
 }
 
 - (id <WebCoreResourceHandle>)startLoadingResource:(id <WebCoreResourceLoader>)resourceLoader withMethod:(NSString *)method URL:(NSURL *)URL customHeaders:(NSDictionary *)customHeaders postData:(NSArray *)postData
@@ -544,7 +547,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
                                         customHeaders:customHeaders
                                              postData:postData
                                              referrer:(hideReferrer ? nil : [self referrer])
-                                       forFrameLoader:[[self webFrame] _frameLoader]];
+                                       forFrameLoader:_loader];
 }
 
 - (void)objectLoadedFromCacheWithURL:(NSURL *)URL response:(NSURLResponse *)response data:(NSData *)data
@@ -653,12 +656,12 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
 
 - (void)reportClientRedirectToURL:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction
 {
-    [[self frameLoader] clientRedirectedTo:URL delay:seconds fireDate:date lockHistory:lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction];
+    [_loader clientRedirectedTo:URL delay:seconds fireDate:date lockHistory:lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction];
 }
 
 - (void)reportClientRedirectCancelled:(BOOL)cancelWithLoadInProgress
 {
-    [[self frameLoader] clientRedirectCancelledOrFinished:cancelWithLoadInProgress];
+    [_loader clientRedirectCancelledOrFinished:cancelWithLoadInProgress];
 }
 
 - (void)close
@@ -715,7 +718,7 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
         loadType = WebFrameLoadTypeInternal;
     else
         loadType = WebFrameLoadTypeStandard;
-    [[self frameLoader] loadURL:URL referrer:(hideReferrer ? nil : referrer) loadType:loadType target:target triggeringEvent:event form:form formValues:values];
+    [_loader loadURL:URL referrer:(hideReferrer ? nil : referrer) loadType:loadType target:target triggeringEvent:event form:form formValues:values];
 
     if (targetFrame != nil && _frame != targetFrame) {
         [[targetFrame _bridge] activateWindow];
@@ -1526,7 +1529,7 @@ static id <WebFormDelegate> formDelegate(WebFrameBridge *self)
 
 - (void)didFirstLayout
 {
-    [[_frame _frameLoader] didFirstLayout];
+    [_loader didFirstLayout];
 }
 
 - (BOOL)_compareDashboardRegions:(NSDictionary *)regions
@@ -1712,24 +1715,22 @@ static id <WebFormDelegate> formDelegate(WebFrameBridge *self)
 
 - (NSString*)imageTitleForFilename:(NSString*)filename size:(NSSize)size
 {
-    return [NSString stringWithFormat:UI_STRING("%@ %.0f×%.0f pixels", "window title for a standalone image (uses multiplication symbol, not x)"), filename, size.width, size.height];
+    return [NSString stringWithFormat:UI_STRING("%@ %.0f√ó%.0f pixels", "window title for a standalone image (uses multiplication symbol, not x)"), filename, size.width, size.height];
 }
 
 - (void)notifyIconChanged:(NSURL*)iconURL
 {
-    [[_frame _frameLoader] _notifyIconChanged:iconURL];
+    [_loader _notifyIconChanged:iconURL];
 }
 
 - (NSURL*)originalRequestURL
 {
-    return [[[[_frame _frameLoader] activeDataSource] initialRequest] URL];
+    return [[[_loader activeDataSource] initialRequest] URL];
 }
 
 - (BOOL)isLoadTypeReload
 {
-    return [[_frame _frameLoader] loadType] == WebFrameLoadTypeReload;
+    return [_loader loadType] == WebFrameLoadTypeReload;
 }
 
-
-
 @end
index 7ba1623b5956c2a086300421705518e4b0025339..c2ad26e369dc5ce9565aa3266eff8fbbead759bf 100644 (file)
@@ -40,7 +40,6 @@
 #import "WebFrameBridge.h"
 #import "WebFrameLoadDelegate.h"
 #import "WebFrameLoader.h"
-#import "WebFrameLoaderClient.h"
 #import "WebFrameViewInternal.h"
 #import "WebHTMLRepresentationPrivate.h"
 #import "WebHTMLViewInternal.h"
@@ -110,7 +109,7 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
 
 - (void)_saveScrollPositionAndViewStateToItem:(WebHistoryItem *)item;
 
-- (WebHistoryItem *)_createItem: (BOOL)useOriginal;
+- (WebHistoryItem *)_createItem:(BOOL)useOriginal;
 - (WebHistoryItem *)_createItemTreeWithTargetFrame:(WebFrame *)targetFrame clippedAtTarget:(BOOL)doClip;
 - (WebHistoryItem *)_currentBackForwardListItemToResetTo;
 @end
@@ -124,9 +123,6 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
 - (WebFrame *)_traverseNextFrameStayWithin:(WebFrame *)stayWithin;
 @end
 
-@interface WebFrame (WebFrameLoaderClient) <WebFrameLoaderClient>
-@end
-
 @interface NSView (WebFramePluginHosting)
 - (void)setWebFrame:(WebFrame *)webFrame;
 @end
@@ -135,7 +131,6 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
 {
 @public
     WebFrameView *webFrameView;
-    WebFrameLoader *frameLoader;
 
     WebFrameBridge *bridge;
     WebHistoryItem *currentItem;        // BF item for our current content
@@ -151,14 +146,10 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
 }
 
 - (void)setWebFrameView:(WebFrameView *)v;
-- (WebFrameView *)webFrameView;
 
 - (void)setProvisionalItem:(WebHistoryItem *)item;
-- (WebHistoryItem *)provisionalItem;
 - (void)setPreviousItem:(WebHistoryItem *)item;
-- (WebHistoryItem *)previousItem;
 - (void)setCurrentItem:(WebHistoryItem *)item;
-- (WebHistoryItem *)currentItem;
 
 @end
 
@@ -167,7 +158,6 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
 - (void)dealloc
 {
     [webFrameView release];
-    [frameLoader release];
 
     [currentItem release];
     [provisionalItem release];
@@ -182,23 +172,20 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
     [super dealloc];
 }
 
-- (WebFrameView *)webFrameView { return webFrameView; }
-- (void)setWebFrameView: (WebFrameView *)v 
+- (void)setWebFrameView:(WebFrameView *)v 
 { 
     [v retain];
     [webFrameView release];
     webFrameView = v;
 }
 
-- (WebHistoryItem *)provisionalItem { return provisionalItem; }
-- (void)setProvisionalItem: (WebHistoryItem *)item
+- (void)setProvisionalItem:(WebHistoryItem *)item
 {
     [item retain];
     [provisionalItem release];
     provisionalItem = item;
 }
 
-- (WebHistoryItem *)previousItem { return previousItem; }
 - (void)setPreviousItem:(WebHistoryItem *)item
 {
     [item retain];
@@ -206,7 +193,6 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
     previousItem = item;
 }
 
-- (WebHistoryItem *)currentItem { return currentItem; }
 - (void)setCurrentItem:(WebHistoryItem *)item
 {
     [item retain];
@@ -215,12 +201,14 @@ NSString *WebPageCacheDocumentViewKey = @"WebPageCacheDocumentViewKey";
 }
 
 @end
+
 static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 {
     return [(WebFrameBridge *)bridge webFrame];
 }
 
 @implementation WebFrame (FrameTraversal)
+
 - (WebFrame *)_firstChildFrame
 {
     return Frame([[self _bridge] firstChild]);
@@ -255,7 +243,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
 @implementation WebFrame (WebInternal)
 
-- (NSURLRequest *)_webDataRequestForData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName: (NSString *)encodingName baseURL:(NSURL *)URL unreachableURL:(NSURL *)unreachableURL
+- (NSURLRequest *)_webDataRequestForData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)URL unreachableURL:(NSURL *)unreachableURL
 {
     NSURL *fakeURL = [NSURL _web_uniqueWebDataURL];
     NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:fakeURL] autorelease];
@@ -330,7 +318,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
     [bfItem _setFormInfoFromRequest:request];
 
     // Set the item for which we will save document state
-    [_private setPreviousItem:[_private currentItem]];
+    [_private setPreviousItem:_private->currentItem];
     [_private setCurrentItem:bfItem];
 
     return bfItem;
@@ -346,7 +334,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 {
     WebHistoryItem *bfItem = [self _createItem:[self parentFrame] ? YES : NO];
 
-    [self _saveScrollPositionAndViewStateToItem:[_private previousItem]];
+    [self _saveScrollPositionAndViewStateToItem:_private->previousItem];
     if (!(doClip && self == targetFrame)) {
         // save frame state for items that aren't loading (khtml doesn't save those)
         [_private->bridge saveDocumentState];
@@ -381,13 +369,13 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
     [bridge closeURL];
     [self stopLoading];
 
-    [self _saveScrollPositionAndViewStateToItem:[_private currentItem]];
+    [self _saveScrollPositionAndViewStateToItem:_private->currentItem];
     [self _detachChildren];
     [_private->inspectors makeObjectsPerformSelector:@selector(_webFrameDetached:) withObject:self];
 
     [_private->webFrameView _setWebFrame:nil]; // needed for now to be compatible w/ old behavior
 
-    [_private->frameLoader clearDataSource];
+    [[self _frameLoader] clearDataSource];
     [_private setWebFrameView:nil];
 
     [self retain]; // retain self temporarily because dealloc can re-enter this method
@@ -405,7 +393,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
 - (void)_makeDocumentView
 {
-    NSView <WebDocumentView> *documentView = [_private->webFrameView _makeDocumentViewForDataSource:[_private->frameLoader dataSource]];
+    NSView <WebDocumentView> *documentView = [_private->webFrameView _makeDocumentViewForDataSource:[[self _frameLoader] dataSource]];
     if (!documentView)
         return;
 
@@ -417,43 +405,43 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
     // 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:[_private->frameLoader dataSource]];
+    [documentView setDataSource:[[self _frameLoader] dataSource]];
 }
 
 - (void)_transitionToCommitted:(NSDictionary *)pageCache
 {
     ASSERT([self webView] != nil);
     
-    switch ([_private->frameLoader state]) {
+    switch ([[self _frameLoader] state]) {
         case WebFrameStateProvisional:
         {
             [[[[self frameView] _scrollView] contentView] setCopiesOnScroll:YES];
 
-            WebFrameLoadType loadType = [_private->frameLoader loadType];
+            WebFrameLoadType loadType = [[self _frameLoader] loadType];
             if (loadType == WebFrameLoadTypeForward ||
                 loadType == WebFrameLoadTypeBack ||
                 loadType == WebFrameLoadTypeIndexedBackForward ||
-                (loadType == WebFrameLoadTypeReload && [[_private->frameLoader provisionalDataSource] unreachableURL] != nil))
+                (loadType == WebFrameLoadTypeReload && [[[self _frameLoader] provisionalDataSource] unreachableURL] != nil))
             {
                 // Once committed, we want to use current item for saving DocState, and
                 // the provisional item for restoring state.
                 // Note previousItem must be set before we close the URL, which will
                 // happen when the data source is made non-provisional below
-                [_private setPreviousItem:[_private currentItem]];
-                ASSERT([_private provisionalItem]);
-                [_private setCurrentItem:[_private provisionalItem]];
+                [_private setPreviousItem:_private->currentItem];
+                ASSERT(_private->provisionalItem);
+                [_private setCurrentItem:_private->provisionalItem];
                 [_private setProvisionalItem:nil];
             }
 
             // 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 = [_private->frameLoader provisionalDataSource];
+            WebDataSource *pd = [[self _frameLoader] provisionalDataSource];
             [[self _bridge] closeURL];
-            if (pd != [_private->frameLoader provisionalDataSource])
+            if (pd != [[self _frameLoader] provisionalDataSource])
                 return;
 
-            [_private->frameLoader commitProvisionalLoad];
+            [[self _frameLoader] commitProvisionalLoad];
 
             // Handle adding the URL to the back/forward list.
             WebDataSource *ds = [self dataSource];
@@ -465,7 +453,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
             case WebFrameLoadTypeIndexedBackForward:
                 if ([[self webView] backForwardList]) {
                     // Must grab the current scroll position before disturbing it
-                    [self _saveScrollPositionAndViewStateToItem:[_private previousItem]];
+                    [self _saveScrollPositionAndViewStateToItem:_private->previousItem];
                     
                     // Create a document view for this document, or used the cached view.
                     if (pageCache){
@@ -482,7 +470,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
             case WebFrameLoadTypeSame:
             case WebFrameLoadTypeReplace:
             {
-                WebHistoryItem *currItem = [_private currentItem];
+                WebHistoryItem *currItem = _private->currentItem;
                 LOG(PageCache, "Clearing back/forward cache, %@\n", [currItem URL]);
                 [currItem setHasPageCache:NO];
                 if (loadType == WebFrameLoadTypeReload) {
@@ -531,11 +519,11 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                     // this is alternate content for an unreachable URL (we want the BF list
                     // item to remember the unreachable URL in case it becomes reachable later)
                     if ([request _webDataRequestUnreachableURL] == nil) {
-                        [[_private currentItem] setURL:[request URL]];
+                        [_private->currentItem setURL:[request URL]];
 
                         // clear out the form data so we don't repost it to the wrong place if we
                         // ever go back/forward to this item
-                        [[_private currentItem] _setFormInfoFromRequest:request];
+                        [_private->currentItem _setFormInfoFromRequest:request];
 
                         // We must also clear out form data so we don't try to restore it into the incoming page,
                         // see -_opened
@@ -549,7 +537,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                 ASSERT(![[ds _documentLoader] isClientRedirect]);
                 WebFrame *parentFrame = [self parentFrame];
                 if (parentFrame) {
-                    WebHistoryItem *parentItem = [parentFrame->_private currentItem];
+                    WebHistoryItem *parentItem = parentFrame->_private->currentItem;
                     // The only case where parentItem==nil should be when a parent frame loaded an
                     // empty URL, which doesn't set up a current item in that parent.
                     if (parentItem)
@@ -651,7 +639,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
 - (void)_provisionalLoadStarted
 {
-    WebFrameLoadType loadType = [_private->frameLoader loadType];
+    WebFrameLoadType loadType = [[self _frameLoader] loadType];
     
     // FIXME: This is OK as long as no one resizes the window,
     // but in the case where someone does, it means garbage outside
@@ -663,16 +651,16 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
     // store the final page we end up on.
     // No point writing to the cache on a reload or loadSame, since we will just write
     // over it again when we leave that page.
-    WebHistoryItem *item = [_private currentItem];
+    WebHistoryItem *item = _private->currentItem;
     if ([self _canCachePage]
         && [_private->bridge canCachePage]
         && item
-        && ![_private->frameLoader isQuickRedirectComing]
+        && ![[self _frameLoader] isQuickRedirectComing]
         && loadType != WebFrameLoadTypeReload 
         && loadType != WebFrameLoadTypeReloadAllowingStaleData
         && loadType != WebFrameLoadTypeSame
         && ![[self dataSource] isLoading]
-        && ![[_private->frameLoader documentLoader] isStopping]) {
+        && ![[[self _frameLoader] documentLoader] isStopping]) {
         if ([[[self dataSource] representation] isKindOfClass:[WebHTMLRepresentation class]]) {
             if (![item pageCache]){
                 // Add the items to this page's cache.
@@ -696,10 +684,10 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 // Called after we send an openURL:... down to WebCore.
 - (void)_opened
 {
-    if ([_private->frameLoader loadType] == WebFrameLoadTypeStandard && [[[self dataSource] _documentLoader] isClientRedirect]) {
+    if ([[self _frameLoader] loadType] == WebFrameLoadTypeStandard && [[[self dataSource] _documentLoader] isClientRedirect]) {
         // Clear out form data so we don't try to restore it into the incoming page.  Must happen after
         // khtml has closed the URL and saved away the form state.
-        WebHistoryItem *item = [_private currentItem];
+        WebHistoryItem *item = _private->currentItem;
         [item setDocumentState:nil];
         [item setScrollPoint:NSZeroPoint];
     }
@@ -713,7 +701,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
         [view setNeedsLayout: YES];
         [view layout];
 
-        NSArray *responses = [[_private->frameLoader documentLoader] responses];
+        NSArray *responses = [[[self _frameLoader] documentLoader] responses];
         NSURLResponse *response;
         int i, count = [responses count];
         for (i = 0; i < count; i++){
@@ -731,9 +719,9 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
         // reset when we leave this page.  The core side of the page cache
         // will have already been invalidated by the bridge to prevent
         // premature release.
-        [[_private currentItem] setHasPageCache:NO];
+        [_private->currentItem setHasPageCache:NO];
 
-        [[_private->frameLoader documentLoader] setPrimaryLoadComplete:YES];
+        [[[self _frameLoader] documentLoader] setPrimaryLoadComplete:YES];
         // why only this frame and not parent frames?
         [self _checkLoadCompleteForThisFrame];
     }
@@ -743,10 +731,10 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 {
     ASSERT([self webView] != nil);
 
-    switch ([_private->frameLoader state]) {
+    switch ([[self _frameLoader] state]) {
         case WebFrameStateProvisional:
         {
-            if ([_private->frameLoader delegateIsHandlingProvisionalLoadError])
+            if ([[self _frameLoader] delegateIsHandlingProvisionalLoadError])
                 return;
 
             WebDataSource *pd = [self provisionalDataSource];
@@ -763,26 +751,26 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                 if (![pd isLoading]) {
                     LOG(Loading, "%@:  checking complete in WebFrameStateProvisional, load done", [self name]);
                     [[self webView] _didFailProvisionalLoadWithError:error forFrame:self];
-                    [_private->frameLoader setDelegateIsHandlingProvisionalLoadError:YES];
+                    [[self _frameLoader] setDelegateIsHandlingProvisionalLoadError:YES];
                     [[[self webView] _frameLoadDelegateForwarder] webView:[self webView]
                                           didFailProvisionalLoadWithError:error
                                                                  forFrame:self];
-                    [_private->frameLoader setDelegateIsHandlingProvisionalLoadError:NO];
+                    [[self _frameLoader] setDelegateIsHandlingProvisionalLoadError:NO];
                     [_private->internalLoadDelegate webFrame:self didFinishLoadWithError:error];
 
                     // FIXME: can stopping loading here possibly have
                     // any effect, if isLoading is false, which it
                     // must be, to be in this branch of the if? And is it ok to just do 
                     // a full-on stopLoading?
-                    [_private->frameLoader stopLoadingSubframes];
+                    [[self _frameLoader] stopLoadingSubframes];
                     [[pd _documentLoader] stopLoading];
 
                     // Finish resetting the load state, but only if another load hasn't been started by the
                     // delegate callback.
-                    if (pd == [_private->frameLoader provisionalDataSource])
-                        [_private->frameLoader clearProvisionalLoad];
+                    if (pd == [[self _frameLoader] provisionalDataSource])
+                        [[self _frameLoader] clearProvisionalLoad];
                     else {
-                        NSURL *unreachableURL = [[_private->frameLoader provisionalDataSource] unreachableURL];
+                        NSURL *unreachableURL = [[[self _frameLoader] provisionalDataSource] unreachableURL];
                         if (unreachableURL != nil && [unreachableURL isEqual:[[pd request] URL]]) {
                             shouldReset = NO;
                         }
@@ -805,7 +793,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                 NSView <WebDocumentView> *thisDocumentView = [thisView documentView];
                 ASSERT(thisDocumentView != nil);
 
-                [_private->frameLoader markLoadComplete];
+                [[self _frameLoader] 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
@@ -823,7 +811,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                 // the anchor point.  After much discussion it was decided by folks
                 // that the user scroll point should override the anchor point.
                 if ([[self webView] backForwardList]) {
-                    switch ([_private->frameLoader loadType]) {
+                    switch ([[self _frameLoader] loadType]) {
                     case WebFrameLoadTypeForward:
                     case WebFrameLoadTypeBack:
                     case WebFrameLoadTypeIndexedBackForward:
@@ -963,7 +951,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
     
     // FIXME: These checks don't match the ones in _loadURL:referrer:loadType:target:triggeringEvent:isFormSubmission:
     // Perhaps they should.
-    if (!formData && ![_private->frameLoader shouldReloadForCurrent:itemURL andDestination:currentURL] && [self _URLsMatchItem:item] )
+    if (!formData && ![[self _frameLoader] shouldReloadForCurrent:itemURL andDestination:currentURL] && [self _URLsMatchItem:item] )
     {
 #if 0
         // FIXME:  We need to normalize the code paths for anchor navigation.  Something
@@ -973,7 +961,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
         [self _loadURL:itemURL referrer:[[[self dataSource] request] HTTPReferrer] loadType:loadType target:nil triggeringEvent:nil form:nil formValues:nil];
 #endif
         // must do this maintenance here, since we don't go through a real page reload
-        [self _saveScrollPositionAndViewStateToItem:[_private currentItem]];
+        [self _saveScrollPositionAndViewStateToItem:_private->currentItem];
         // FIXME: form state might want to be saved here too
 
         // We always call scrollToAnchorWithURL here, even if the URL doesn't have an
@@ -986,7 +974,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
         // Fake the URL change by updating the data source's request.  This will no longer
         // be necessary if we do the better fix described above.
-        [[_private->frameLoader documentLoader] replaceRequestURLForAnchorScrollWithURL:itemURL];
+        [[[self _frameLoader] documentLoader] replaceRequestURLForAnchorScrollWithURL:itemURL];
         
         [[[self webView] _frameLoadDelegateForwarder] webView:[self webView]
                                didChangeLocationWithinPageForFrame:self];
@@ -1008,11 +996,11 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
 
             if (delta <= [[[self webView] preferences] _backForwardCacheExpirationInterval]){
                 newDataSource = [pageCache objectForKey: WebPageCacheDataSourceKey];
-                [_private->frameLoader loadDataSource:newDataSource withLoadType:loadType formState:nil];   
+                [[self _frameLoader] loadDataSource:newDataSource 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]);
+                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]);
                 [item setHasPageCache: NO];
             }
         }
@@ -1073,7 +1061,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                 action = [self _actionInformationForLoadType:loadType isFormSubmission:NO event:nil originalURL:itemOriginalURL];
             }
 
-            [_private->frameLoader _loadRequest:request triggeringAction:action loadType:loadType formState:nil];
+            [[self _frameLoader] _loadRequest:request triggeringAction:action loadType:loadType formState:nil];
             [request release];
         }
     }
@@ -1102,9 +1090,9 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
         // This content is good, so leave it alone and look for children that need reloading
 
         // Save form state (works from currentItem, since prevItem is nil)
-        ASSERT(![_private previousItem]);
+        ASSERT(!_private->previousItem);
         [_private->bridge saveDocumentState];
-        [self _saveScrollPositionAndViewStateToItem:[_private currentItem]];
+        [self _saveScrollPositionAndViewStateToItem:_private->currentItem];
         
         [_private setCurrentItem:item];
 
@@ -1243,7 +1231,7 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
     [[webView _UIDelegateForwarder] webViewShow:webView];
 
     [[frame _bridge] setOpener:[self _bridge]];
-    [frame->_private->frameLoader _loadRequest:request triggeringAction:nil loadType:WebFrameLoadTypeStandard formState:formState];
+    [[frame _frameLoader] _loadRequest:request triggeringAction:nil loadType:WebFrameLoadTypeStandard formState:formState];
 
     [frame release];
 
@@ -1253,9 +1241,9 @@ exit:
 
 - (void)_loadURL:(NSURL *)URL referrer:(NSString *)referrer intoChild:(WebFrame *)childFrame
 {
-    WebHistoryItem *parentItem = [_private currentItem];
+    WebHistoryItem *parentItem = _private->currentItem;
     NSArray *childItems = [parentItem children];
-    WebFrameLoadType loadType = [_private->frameLoader loadType];
+    WebFrameLoadType loadType = [[self _frameLoader] loadType];
     WebFrameLoadType childLoadType = WebFrameLoadTypeInternal;
     WebHistoryItem *childItem = nil;
 
@@ -1326,7 +1314,7 @@ exit:
         if (targetFrame != nil) {
             [[targetFrame _frameLoader] _loadRequest:request triggeringAction:action loadType:WebFrameLoadTypeStandard formState:formState];
         } else {
-            [_private->frameLoader checkNewWindowPolicyForRequest:request action:action frameName:target formState:formState andCall:self
+            [[self _frameLoader] checkNewWindowPolicyForRequest:request action:action frameName:target formState:formState andCall:self
                 withSelector:@selector(_continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
         }
         [request release];
@@ -1334,7 +1322,7 @@ exit:
         return;
     }
 
-    [_private->frameLoader _loadRequest:request triggeringAction:action loadType:WebFrameLoadTypeStandard formState:formState];
+    [[self _frameLoader] _loadRequest:request triggeringAction:action loadType:WebFrameLoadTypeStandard formState:formState];
 
     [request release];
     [formState release];
@@ -1342,7 +1330,7 @@ exit:
 
 - (void)_setTitle:(NSString *)title
 {
-    [[_private currentItem] setTitle:title];
+    [_private->currentItem setTitle:title];
 }
 
 - (void)_saveScrollPositionAndViewStateToItem:(WebHistoryItem *)item
@@ -1372,7 +1360,7 @@ exit:
 - (void)_defersCallbacksChanged
 {
     for (WebFrame *frame = self; frame; frame = [frame _traverseNextFrameStayWithin:self])
-        [frame->_private->frameLoader defersCallbacksChanged];
+        [[frame _frameLoader] defersCallbacksChanged];
 }
 
 - (void)_viewWillMoveToHostWindow:(NSWindow *)hostWindow
@@ -1399,12 +1387,12 @@ exit:
 // Return the item that we would reset to, so we can decide later whether to actually reset.
 - (WebHistoryItem *)_currentBackForwardListItemToResetTo
 {
-    WebFrameLoadType loadType = [_private->frameLoader loadType];
+    WebFrameLoadType loadType = [[self _frameLoader] loadType];
     if ((loadType == WebFrameLoadTypeForward
          || loadType == WebFrameLoadTypeBack
          || loadType == WebFrameLoadTypeIndexedBackForward)
         && self == [[self webView] mainFrame]) {
-        return [_private currentItem];
+        return _private->currentItem;
     }
     return nil;
 }
@@ -1422,13 +1410,12 @@ exit:
     // that previousItem be cleared at the end of a page transition.  We leverage the
     // checkLoadComplete recursion to achieve this goal.
 
-    WebHistoryItem *result = [_private previousItem] ? [_private previousItem] : [_private currentItem];
-    return result;
+    return _private->previousItem ? _private->previousItem : _private->currentItem;
 }
 
 - (WebHistoryItem *)_itemForRestoringDocState
 {
-    switch ([_private->frameLoader loadType]) {
+    switch ([[self _frameLoader] loadType]) {
         case WebFrameLoadTypeReload:
         case WebFrameLoadTypeReloadAllowingStaleData:
         case WebFrameLoadTypeSame:
@@ -1440,7 +1427,7 @@ exit:
         case WebFrameLoadTypeIndexedBackForward:
         case WebFrameLoadTypeInternal:
         case WebFrameLoadTypeStandard:
-            return [_private currentItem];
+            return _private->currentItem;
     }
     ASSERT_NOT_REACHED();
     return nil;
@@ -1452,14 +1439,14 @@ exit:
 {
     for (WebFrame *frame = self; frame; frame = [frame _traverseNextFrameStayWithin:self]) {
         [[frame _bridge] saveDocumentState];
-        [frame _saveScrollPositionAndViewStateToItem:[frame->_private currentItem]];
+        [frame _saveScrollPositionAndViewStateToItem:frame->_private->currentItem];
     }
 }
 
 // used to decide to use loadType=Same
 - (BOOL)_shouldTreatURLAsSameAsCurrent:(NSURL *)URL
 {
-    WebHistoryItem *item = [_private currentItem];
+    WebHistoryItem *item = _private->currentItem;
     NSString* URLString = [URL _web_originalDataAsString];
     return [URLString isEqual:[item URLString]] || [URLString isEqual:[item originalURLString]];
 }    
@@ -1479,7 +1466,7 @@ exit:
     }
 
     NSDictionary *action = [self _actionInformationForNavigationType:WebNavigationTypeOther event:nil originalURL:[request URL]];
-    [_private->frameLoader checkNewWindowPolicyForRequest:request action:action frameName:frameName formState:nil andCall:self withSelector:@selector(_continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
+    [[self _frameLoader] checkNewWindowPolicyForRequest:request action:action frameName:frameName formState:nil andCall:self withSelector:@selector(_continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
 }
 
 // Return next frame to be traversed, visiting children after parent
@@ -1574,8 +1561,6 @@ exit:
         [fv _setWebFrame:self];
     }
     
-    _private->frameLoader = [[WebFrameLoader alloc] initWithClient:self];
-    
     ++WebFrameCount;
     
     return self;
@@ -1815,7 +1800,7 @@ exit:
 {
     [request _web_setHTTPUserAgent:[[self webView] userAgentForURL:[request URL]]];
     
-    if ([_private->frameLoader loadType] == WebFrameLoadTypeReload)
+    if ([[self _frameLoader] loadType] == WebFrameLoadTypeReload)
         [request setValue:@"max-age=0" forHTTPHeaderField:@"Cache-Control"];
     
     // Don't set the cookie policy URL if it's already been set.
@@ -1851,12 +1836,12 @@ exit:
 
 - (WebFrameLoader *)_frameLoader
 {
-    return _private->frameLoader;
+    return [_private->bridge loader];
 }
 
 - (void)_prepareForDataSourceReplacement
 {
-    if (![_private->frameLoader dataSource]) {
+    if (![[self _frameLoader] dataSource]) {
         ASSERT(![self _childFrameCount]);
         return;
     }
@@ -1923,11 +1908,11 @@ exit:
 
 - (void)_restoreScrollPositionAndViewState
 {
-    ASSERT([_private currentItem]);
+    ASSERT(_private->currentItem);
     NSView <WebDocumentView> *docView = [[self frameView] documentView];
-    NSPoint point = [[_private currentItem] scrollPoint];
+    NSPoint point = [_private->currentItem scrollPoint];
     if ([docView conformsToProtocol:@protocol(_WebDocumentViewState)]) {        
-        id state = [[_private currentItem] viewState];
+        id state = [_private->currentItem viewState];
         if (state) {
             [(id <_WebDocumentViewState>)docView setViewState:state];
         }
@@ -1965,12 +1950,12 @@ exit:
 
 - (BOOL)_firstLayoutDone
 {
-    return [_private->frameLoader firstLayoutDone];
+    return [[self _frameLoader] firstLayoutDone];
 }
 
 - (WebFrameLoadType)_loadType
 {
-    return [_private->frameLoader loadType];
+    return [[self _frameLoader] loadType];
 }
 
 @end
@@ -2053,7 +2038,7 @@ exit:
 
 - (WebFrameView *)frameView
 {
-    return [_private webFrameView];
+    return _private->webFrameView;
 }
 
 - (WebView *)webView
@@ -2073,20 +2058,20 @@ exit:
 
 - (WebDataSource *)provisionalDataSource
 {
-    return [_private->frameLoader provisionalDataSource];
+    return [[self _frameLoader] provisionalDataSource];
 }
 
 - (WebDataSource *)dataSource
 {
-    return [_private->frameLoader dataSource];
+    return [[self _frameLoader] dataSource];
 }
 
 - (void)loadRequest:(NSURLRequest *)request
 {
     // FIXME: is this the right place to reset loadType? Perhaps this should be done
     // after loading is finished or aborted.
-    [_private->frameLoader setLoadType:WebFrameLoadTypeStandard];
-    [_private->frameLoader _loadRequest:request archive:nil];
+    [[self _frameLoader] setLoadType:WebFrameLoadTypeStandard];
+    [[self _frameLoader] _loadRequest:request archive:nil];
 }
 
 - (void)_loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)URL unreachableURL:(NSURL *)unreachableURL
@@ -2130,18 +2115,18 @@ exit:
                                             textEncodingName:[mainResource textEncodingName]
                                                      baseURL:[mainResource URL]
                                               unreachableURL:nil];
-        [_private->frameLoader _loadRequest:request archive:archive];
+        [[self _frameLoader] _loadRequest:request archive:archive];
     }
 }
 
 - (void)stopLoading
 {
-    [_private->frameLoader stopLoading];
+    [[self _frameLoader] stopLoading];
 }
 
 - (void)reload
 {
-    [_private->frameLoader reload];
+    [[self _frameLoader] reload];
 }
 
 - (WebFrame *)findFrameNamed:(NSString *)name
@@ -2172,7 +2157,7 @@ exit:
     // Note this doesn't verify the current load type as a b/f operation because it is called from
     // a subframe in the case of a delegate bailing out of the nav before it even gets to provisional state.
     ASSERT(self == [[self webView] mainFrame]);
-    WebHistoryItem *resetItem = [_private currentItem];
+    WebHistoryItem *resetItem = _private->currentItem;
     if (resetItem)
         [[[self webView] backForwardList] goToItem:resetItem];
 }
@@ -2180,22 +2165,22 @@ exit:
 - (void)_invalidateCurrentItemPageCache
 {
     // When we are pre-commit, the currentItem is where the pageCache data resides
-    NSDictionary *pageCache = [[_private currentItem] pageCache];
+    NSDictionary *pageCache = [_private->currentItem pageCache];
 
     [[self _bridge] invalidatePageCache:pageCache];
     
     // We're assuming that WebCore invalidates its pageCache state in didNotOpen:pageCache:
-    [[_private currentItem] setHasPageCache:NO];
+    [_private->currentItem setHasPageCache:NO];
 }
 
 - (BOOL)_provisionalItemIsTarget
 {
-    return [[_private provisionalItem] isTargetItem];
+    return [_private->provisionalItem isTargetItem];
 }
 
 - (BOOL)_loadProvisionalItemFromPageCache
 {
-    WebHistoryItem *item = [_private provisionalItem];
+    WebHistoryItem *item = _private->provisionalItem;
     if (![item hasPageCache])
         return NO;
     NSDictionary *pageCache = [item pageCache];
index aecf86433faab67a9d503724c6ba7b60ec8869ee..d622241df3f0ffa80aa99c373b538cedd01bc5ee 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2005, 2006 Apple Computer, Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -28,7 +28,9 @@
 
 // This header contains WebFrame declarations that can be used anywhere in WebKit, but are neither SPI nor API.
 
-#import <WebKit/WebFramePrivate.h>
+#import "WebFramePrivate.h"
+
+#import "WebFrameLoaderClient.h"
 #import "WebPolicyDelegatePrivate.h"
 
 @class WebDocumentLoader;
 @interface NSObject (WebInternalFrameLoadDelegate)
 - (void)webFrame:(WebFrame *)webFrame didFinishLoadWithError:(NSError *)error;
 @end
+
+@interface WebFrame (WebFrameLoaderClient) <WebFrameLoaderClient>
+@end