From 8f2f8a222b2856f9ee4551001d643ab06d2693d7 Mon Sep 17 00:00:00 2001 From: darin Date: Mon, 9 Oct 2006 07:03:11 +0000 Subject: [PATCH] Reviewed by Maciej. - passed calls that require WebHTMLView or WebFrameView calls across the client interface * Loader/WebFrameLoader.h: * Loader/WebFrameLoader.m: (isCaseInsensitiveEqual): (isBackForwardLoadType): (-[WebFrameLoader opened]): (-[WebFrameLoader cancelledErrorWithRequest:]): (-[WebFrameLoader fileDoesNotExistErrorWithResponse:]): (-[WebFrameLoader reload]): (-[WebFrameLoader transitionToCommitted:]): * Loader/WebFrameLoaderClient.h: * WebView/WebFrame.m: (-[WebFrame _forceLayout]): (-[WebFrame _setDocumentViewFromPageCache:]): (-[WebFrame _setCopiesOnScroll]): git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16916 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- WebKit/ChangeLog | 22 ++++++++ WebKit/Loader/WebFrameLoader.h | 1 - WebKit/Loader/WebFrameLoader.m | 79 ++++++++++++---------------- WebKit/Loader/WebFrameLoaderClient.h | 5 ++ WebKit/WebView/WebFrame.m | 21 ++++++++ 5 files changed, 81 insertions(+), 47 deletions(-) diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog index e92340e1e8a8..dccfcf459d2c 100644 --- a/WebKit/ChangeLog +++ b/WebKit/ChangeLog @@ -1,3 +1,25 @@ +2006-10-08 Darin Adler + + Reviewed by Maciej. + + - passed calls that require WebHTMLView or WebFrameView calls across + the client interface + + * Loader/WebFrameLoader.h: + * Loader/WebFrameLoader.m: + (isCaseInsensitiveEqual): + (isBackForwardLoadType): + (-[WebFrameLoader opened]): + (-[WebFrameLoader cancelledErrorWithRequest:]): + (-[WebFrameLoader fileDoesNotExistErrorWithResponse:]): + (-[WebFrameLoader reload]): + (-[WebFrameLoader transitionToCommitted:]): + * Loader/WebFrameLoaderClient.h: + * WebView/WebFrame.m: + (-[WebFrame _forceLayout]): + (-[WebFrame _setDocumentViewFromPageCache:]): + (-[WebFrame _setCopiesOnScroll]): + 2006-10-08 Maciej Stachowiak Reviewed by Darin. diff --git a/WebKit/Loader/WebFrameLoader.h b/WebKit/Loader/WebFrameLoader.h index caadffd45542..385ae813698a 100644 --- a/WebKit/Loader/WebFrameLoader.h +++ b/WebKit/Loader/WebFrameLoader.h @@ -34,7 +34,6 @@ @class WebDocumentLoader; @class WebFormState; @class WebFrame; -@class WebFrame; @class WebFrameBridge; @class WebLoader; @class WebMainResourceLoader; diff --git a/WebKit/Loader/WebFrameLoader.m b/WebKit/Loader/WebFrameLoader.m index f06eee277a5d..d2a9876419ef 100644 --- a/WebKit/Loader/WebFrameLoader.m +++ b/WebKit/Loader/WebFrameLoader.m @@ -41,8 +41,6 @@ #import "WebDataSourceInternal.h" #import "WebDocumentLoaderMac.h" #import "WebFrameInternal.h" -#import "WebFrameViewInternal.h" -#import "WebHTMLView.h" #import "WebIconDatabasePrivate.h" #import "WebKitErrorsPrivate.h" #import "WebKitLogging.h" @@ -52,6 +50,30 @@ #import "WebScriptDebugServerPrivate.h" #import "WebViewInternal.h" +static BOOL isCaseInsensitiveEqual(NSString *a, NSString *b) +{ + return [a caseInsensitiveCompare:b] == NSOrderedSame; +} + +BOOL isBackForwardLoadType(FrameLoadType type) +{ + switch (type) { + case FrameLoadTypeStandard: + case FrameLoadTypeReload: + case FrameLoadTypeReloadAllowingStaleData: + case FrameLoadTypeSame: + case FrameLoadTypeInternal: + case FrameLoadTypeReplace: + return false; + case FrameLoadTypeBack: + case FrameLoadTypeForward: + case FrameLoadTypeIndexedBackForward: + return true; + } + ASSERT_NOT_REACHED(); + return false; +} + @implementation WebFrameLoader - (id)initWithClient:(WebFrame *)c @@ -737,11 +759,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad; if ([[self dataSource] _loadingFromPageCache]) { // Force a layout to update view size and thereby update scrollbars. - NSView *view = [[client frameView] documentView]; - if ([view isKindOfClass:[WebHTMLView class]]) - [(WebHTMLView *)view setNeedsToApplyStyles:YES]; - [view setNeedsLayout: YES]; - [view layout]; + [client _forceLayout]; NSArray *responses = [[self documentLoader] responses]; NSURLResponse *response; @@ -903,16 +921,12 @@ static CFAbsoluteTime _timeOfLastCompletedLoad; - (NSError *)cancelledErrorWithRequest:(NSURLRequest *)request { - return [NSError _webKitErrorWithDomain:NSURLErrorDomain - code:NSURLErrorCancelled - URL:[request URL]]; + return [NSError _webKitErrorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled URL:[request URL]]; } - (NSError *)fileDoesNotExistErrorWithResponse:(NSURLResponse *)response { - return [NSError _webKitErrorWithDomain:NSURLErrorDomain - code:NSURLErrorFileDoesNotExist - URL:[response URL]]; + return [NSError _webKitErrorWithDomain:NSURLErrorDomain code:NSURLErrorFileDoesNotExist URL:[response URL]]; } - (void)clearArchivedResources @@ -947,11 +961,6 @@ static CFAbsoluteTime _timeOfLastCompletedLoad; [self performSelector:@selector(deliverArchivedResources) withObject:nil afterDelay:0]; } -static BOOL isCaseInsensitiveEqual(NSString *a, NSString *b) -{ - return [a caseInsensitiveCompare:b] == NSOrderedSame; -} - // The following 2 methods are copied from [NSHTTPURLProtocol _cachedResponsePassesValidityChecks] and modified for our needs. // FIXME: It would be nice to eventually to share this code somehow. - (BOOL)_canUseResourceForRequest:(NSURLRequest *)theRequest @@ -1088,25 +1097,6 @@ static BOOL isCaseInsensitiveEqual(NSString *a, NSString *b) listener = nil; } -BOOL isBackForwardLoadType(FrameLoadType type) -{ - switch (type) { - case FrameLoadTypeStandard: - case FrameLoadTypeReload: - case FrameLoadTypeReloadAllowingStaleData: - case FrameLoadTypeSame: - case FrameLoadTypeInternal: - case FrameLoadTypeReplace: - return false; - case FrameLoadTypeBack: - case FrameLoadTypeForward: - case FrameLoadTypeIndexedBackForward: - return true; - } - ASSERT_NOT_REACHED(); - return false; -} - - (BOOL)shouldReloadToHandleUnreachableURLFromRequest:(NSURLRequest *)request { NSURL *unreachableURL = [request _webDataRequestUnreachableURL]; @@ -1220,7 +1210,7 @@ BOOL isBackForwardLoadType(FrameLoadType type) [request setCachePolicy:NSURLRequestReloadIgnoringCacheData]; // If we're about to rePOST, set up action so the app can warn the user - if ([[request HTTPMethod] compare:@"POST" options:(NSCaseInsensitiveSearch | NSLiteralSearch)] == NSOrderedSame) { + if (isCaseInsensitiveEqual([request HTTPMethod], @"POST")) { NSDictionary *action = [self actionInformationForNavigationType:WebNavigationTypeFormResubmitted event:nil originalURL:[request URL]]; [policyDocumentLoader setTriggeringAction:action]; @@ -1652,8 +1642,7 @@ BOOL isBackForwardLoadType(FrameLoadType type) keepGoing: - [[[[client frameView] _scrollView] contentView] setCopiesOnScroll:YES]; - + [client _setCopiesOnScroll]; [client _updateHistoryForCommit]; // The call to closeURL invokes the unload event handler, which can execute arbitrary @@ -1676,13 +1665,11 @@ keepGoing: case WebFrameLoadTypeIndexedBackForward: if ([[client webView] backForwardList]) { [client _updateHistoryForBackForwardNavigation]; - + // Create a document view for this document, or used the cached view. - if (pageCache) { - NSView *cachedView = [pageCache objectForKey:WebPageCacheDocumentViewKey]; - ASSERT(cachedView != nil); - [[client frameView] _setDocumentView:cachedView]; - } else + if (pageCache) + [client _setDocumentViewFromPageCache:pageCache]; + else [client _makeDocumentView]; } break; diff --git a/WebKit/Loader/WebFrameLoaderClient.h b/WebKit/Loader/WebFrameLoaderClient.h index 1de32fe4991e..1b884e6d76e0 100644 --- a/WebKit/Loader/WebFrameLoaderClient.h +++ b/WebKit/Loader/WebFrameLoaderClient.h @@ -32,6 +32,7 @@ typedef struct LoadErrorResetToken LoadErrorResetToken; @class WebDocumentLoader; @class WebPolicyDecisionListener; + @protocol WebFrameLoaderClient - (void)_resetBackForwardList; @@ -43,6 +44,8 @@ typedef struct LoadErrorResetToken LoadErrorResetToken; - (BOOL)_privateBrowsingEnabled; - (void)_makeDocumentView; +- (void)_setDocumentViewFromPageCache:(NSDictionary *)dictionary; +- (void)_forceLayout; - (void)_updateHistoryForCommit; @@ -53,6 +56,8 @@ typedef struct LoadErrorResetToken LoadErrorResetToken; - (void)_updateHistoryAfterClientRedirect; +- (void)_setCopiesOnScroll; + - (LoadErrorResetToken *)_tokenForLoadErrorReset; - (void)_resetAfterLoadError:(LoadErrorResetToken *)token; - (void)_doNotResetAfterLoadError:(LoadErrorResetToken *)token; diff --git a/WebKit/WebView/WebFrame.m b/WebKit/WebView/WebFrame.m index d6279d6e14e9..f8ea2af6447c 100644 --- a/WebKit/WebView/WebFrame.m +++ b/WebKit/WebView/WebFrame.m @@ -1480,6 +1480,15 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader) [documentView setDataSource:[[self _frameLoader] dataSource]]; } +- (void)_forceLayout +{ + NSView *view = [[self frameView] documentView]; + if ([view isKindOfClass:[WebHTMLView class]]) + [(WebHTMLView *)view setNeedsToApplyStyles:YES]; + [view setNeedsLayout:YES]; + [view layout]; +} + - (void)_updateHistoryForCommit { WebFrameLoadType type = [[self _frameLoader] loadType]; @@ -1861,4 +1870,16 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader) proxy:proxy]; } +- (void)_setDocumentViewFromPageCache:(NSDictionary *)pageCache +{ + NSView *cachedView = [pageCache objectForKey:WebPageCacheDocumentViewKey]; + ASSERT(cachedView != nil); + [[self frameView] _setDocumentView:cachedView]; +} + +- (void)_setCopiesOnScroll +{ + [[[[self frameView] _scrollView] contentView] setCopiesOnScroll:YES]; +} + @end -- 2.36.0