Reviewed by Brady.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Oct 2006 06:12:56 +0000 (06:12 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Oct 2006 06:12:56 +0000 (06:12 +0000)
        - convert more WebFrameLoader stuff to be independent of WebFrame

        * Loader/WebFrameLoader.h:
        * Loader/WebFrameLoader.m:
        (-[WebFrameLoader stopLoadingSubframes]):
        (-[WebFrameLoader _receivedMainResourceError:complete:]):
        (-[WebFrameLoader loadURL:referrer:loadType:target:triggeringEvent:form:formValues:]):
        (-[WebFrameLoader closeOldDataSources]):
        (-[WebFrameLoader isHostedByObjectElement]):
        (-[WebFrameLoader isLoadingMainFrame]):
        (-[WebFrameLoader loadDocumentLoader:withLoadType:formState:]):
        (-[WebFrameLoader transitionToCommitted:]):
        (-[WebFrameLoader checkLoadCompleteForThisFrame]):
        (-[WebFrameLoader continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
        (-[WebFrameLoader loadRequest:inFrameNamed:]):
        (-[WebFrameLoader postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]):
        (-[WebFrameLoader actionInformationForNavigationType:event:originalURL:]):
        (-[WebFrameLoader client]):
        * Loader/WebFrameLoaderClient.h:
        * WebView/WebDataSource.m:
        (-[WebDataSource _webView]):
        (-[WebDataSource webFrame]):
        * WebView/WebFrame.m:
        (-[WebFrame _dispatchCreateWebViewWithRequest:]):

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

WebKit/ChangeLog
WebKit/Loader/WebFrameLoader.h
WebKit/Loader/WebFrameLoader.m
WebKit/Loader/WebFrameLoaderClient.h
WebKit/WebView/WebDataSource.m
WebKit/WebView/WebFrame.m

index ff26496fc7273b7a62dc233e92ffb7d79d89dc41..8d28af2d932a06243f1f733f518a594a973379af 100644 (file)
@@ -1,3 +1,32 @@
+2006-10-09  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Brady.
+        
+        - convert more WebFrameLoader stuff to be independent of WebFrame
+
+        * Loader/WebFrameLoader.h:
+        * Loader/WebFrameLoader.m:
+        (-[WebFrameLoader stopLoadingSubframes]):
+        (-[WebFrameLoader _receivedMainResourceError:complete:]):
+        (-[WebFrameLoader loadURL:referrer:loadType:target:triggeringEvent:form:formValues:]):
+        (-[WebFrameLoader closeOldDataSources]):
+        (-[WebFrameLoader isHostedByObjectElement]):
+        (-[WebFrameLoader isLoadingMainFrame]):
+        (-[WebFrameLoader loadDocumentLoader:withLoadType:formState:]):
+        (-[WebFrameLoader transitionToCommitted:]):
+        (-[WebFrameLoader checkLoadCompleteForThisFrame]):
+        (-[WebFrameLoader continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
+        (-[WebFrameLoader loadRequest:inFrameNamed:]):
+        (-[WebFrameLoader postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]):
+        (-[WebFrameLoader actionInformationForNavigationType:event:originalURL:]):
+        (-[WebFrameLoader client]):
+        * Loader/WebFrameLoaderClient.h:
+        * WebView/WebDataSource.m:
+        (-[WebDataSource _webView]):
+        (-[WebDataSource webFrame]):
+        * WebView/WebFrame.m:
+        (-[WebFrame _dispatchCreateWebViewWithRequest:]):
+
 2006-10-09  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Anders and Oliver.
index 8a4aa76d9871d315f99b4b15b510b1c3146d3cbe..3e0a06d86b2ebbfe038caaf3f7519552c2e6968d 100644 (file)
@@ -163,7 +163,6 @@ BOOL isBackForwardLoadType(FrameLoadType type);
 - (void)_finishedLoadingResource;
 - (void)_receivedError:(NSError *)error;
 - (NSURLRequest *)_originalRequest;
-- (WebFrame *)webFrame;
 - (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete;
 - (NSURLRequest *)initialRequest;
 - (void)_receivedData:(NSData *)data;
@@ -251,4 +250,6 @@ BOOL isBackForwardLoadType(FrameLoadType type);
 - (NSDictionary *)actionInformationForNavigationType:(NavigationType)navigationType event:(NSEvent *)event originalURL:(NSURL *)URL;
 - (NSDictionary *)actionInformationForLoadType:(FrameLoadType)loadType isFormSubmission:(BOOL)isFormSubmission event:(NSEvent *)event originalURL:(NSURL *)URL;
 
+- (NSObject<WebFrameLoaderClient> *)client;
+   
 @end
index 268381ef0423a0e0f70495c3d7f91ec679b34d42..f052a8c1af2c231a15fd763b80aa27c0574022df 100644 (file)
@@ -349,7 +349,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
 - (void)stopLoadingSubframes
 {
     for (WebCoreFrameBridge *child = [frameBridge firstChild]; child; child = [child nextSibling])
-        [[(WebFrameBridge *)child frameLoader] stopLoading];
+        [[child frameLoader] stopLoading];
 }
 
 - (void)stopLoading
@@ -476,11 +476,6 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     return [[self activeDocumentLoader] originalRequestCopy];
 }
 
-- (WebFrame *)webFrame
-{
-    return client;
-}
-
 - (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete
 {
     WebDocumentLoader *loader = [self activeDocumentLoader];
@@ -491,7 +486,7 @@ static CFAbsoluteTime _timeOfLastCompletedLoad;
     // Retain the bridge because the stop may release the last reference to it.
     [bridge retain];
  
-    WebFrame *cli = [client retain];
+    NSObject<WebFrameLoaderClient> *cli = [client retain];
    
     if (isComplete) {
         // FIXME: Don't want to do this if an entirely new load is going, so should check
@@ -598,9 +593,9 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
         formState = [[WebFormState alloc] initWithForm:form values:values sourceFrame:frameBridge];
     
     if (target != nil) {
-        WebFrame *targetFrame = [client findFrameNamed:target];
+        WebCoreFrameBridge *targetFrame = [frameBridge findFrameNamed:target];
         if (targetFrame != nil) {
-            [[targetFrame _frameLoader] loadURL:URL referrer:referrer loadType:_loadType target:nil triggeringEvent:event form:form formValues:values];
+            [[targetFrame frameLoader] loadURL:URL referrer:referrer loadType:_loadType target:nil triggeringEvent:event form:form formValues:values];
         } else {
             [self checkNewWindowPolicyForRequest:request
                                           action:action
@@ -707,7 +702,7 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
     // FIXME: is it important for this traversal to be postorder instead of preorder?
     // FIXME: add helpers for postorder traversal?
     for (WebCoreFrameBridge *child = [frameBridge firstChild]; child; child = [child nextSibling])
-        [[(WebFrameBridge *)child frameLoader] closeOldDataSources];
+        [[child frameLoader] closeOldDataSources];
     
     if (documentLoader)
         [client _dispatchWillCloseFrame];
@@ -923,13 +918,13 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
 - (BOOL)isHostedByObjectElement
 {
     // Handle <object> fallback for error cases.            
-    DOMHTMLElement *hostElement = [client frameElement];
+    DOMHTMLElement *hostElement = [frameBridge frameElement];
     return hostElement && [hostElement isKindOfClass:[DOMHTMLObjectElement class]];
 }
 
 - (BOOL)isLoadingMainFrame
 {
-    return [client _isMainFrame];
+    return [frameBridge isMainFrame];
 }
 
 - (BOOL)_canShowMIMEType:(NSString *)MIMEType
@@ -1411,13 +1406,13 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
     // Unfortunately the view must be non-nil, this is ultimately due
     // to parser requiring a FrameView.  We should fix this dependency.
 
-    ASSERT([client frameView] != nil);
+    ASSERT([client _hasFrameView]);
 
     policyLoadType = type;
 
     WebCoreFrameBridge *parentFrame = [[self bridge] parent];
     if (parentFrame)
-        [loader setOverrideEncoding:[[[(WebFrameBridge *)parentFrame frameLoader] documentLoader] overrideEncoding]];
+        [loader setOverrideEncoding:[[[parentFrame frameLoader] documentLoader] overrideEncoding]];
 
     [loader setFrameLoader:self];
 
@@ -1486,9 +1481,9 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
     NSString *ptitle = [dl title];
 
     switch (loadType) {
-    case WebFrameLoadTypeForward:
-    case WebFrameLoadTypeBack:
-    case WebFrameLoadTypeIndexedBackForward:
+    case FrameLoadTypeForward:
+    case FrameLoadTypeBack:
+    case FrameLoadTypeIndexedBackForward:
         if ([client _hasBackForwardList]) {
             [client _updateHistoryForBackForwardNavigation];
 
@@ -1500,30 +1495,30 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
         }
         break;
 
-    case WebFrameLoadTypeReload:
-    case WebFrameLoadTypeSame:
-    case WebFrameLoadTypeReplace:
+    case FrameLoadTypeReload:
+    case FrameLoadTypeSame:
+    case FrameLoadTypeReplace:
         [client _updateHistoryForReload];
         [client _makeDocumentView];
         break;
 
-    // FIXME - just get rid of this case, and merge WebFrameLoadTypeReloadAllowingStaleData with the above case
-    case WebFrameLoadTypeReloadAllowingStaleData:
+    // FIXME - just get rid of this case, and merge FrameLoadTypeReloadAllowingStaleData with the above case
+    case FrameLoadTypeReloadAllowingStaleData:
         [client _makeDocumentView];
         break;
 
-    case WebFrameLoadTypeStandard:
+    case FrameLoadTypeStandard:
         [client _updateHistoryForStandardLoad];
         [client _makeDocumentView];
         break;
 
-    case WebFrameLoadTypeInternal:
+    case FrameLoadTypeInternal:
         [client _updateHistoryForInternalLoad];
         [client _makeDocumentView];
         break;
 
     // FIXME Remove this check when dummy ds is removed (whatever "dummy ds" is).
-    // An exception should be thrown if we're in the WebFrameLoadTypeUninitialized state.
+    // An exception should be thrown if we're in the FrameLoadTypeUninitialized state.
     default:
         ASSERT_NOT_REACHED();
     }
@@ -1598,7 +1593,7 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
                 [client _forceLayoutForNonHTML];
                  
                 // If the user had a scroll point, scroll to it, overriding the anchor point if any.
-                if ((isBackForwardLoadType([self loadType]) || [self loadType] == WebFrameLoadTypeReload)
+                if ((isBackForwardLoadType([self loadType]) || [self loadType] == FrameLoadTypeReload)
                         && [client _hasBackForwardList])
                     [client _restoreScrollPositionAndViewState];
 
@@ -1633,19 +1628,16 @@ static void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
     WebCoreFrameBridge <WebCoreFrameBridge> *bridge = frameBridge;
     [bridge retain];
 
-    WebFrame *mainFrame = [client _dispatchCreateWebViewWithRequest:nil];
-    if (!mainFrame)
+    WebCoreFrameBridge *mainBridge = [client _dispatchCreateWebViewWithRequest:nil];
+    if (!mainBridge)
         goto exit;
 
-    WebCoreFrameBridge *mainBridge = [mainFrame _frameLoader]->frameBridge;
-    [mainBridge retain];
-
     [mainBridge setName:frameName];
 
-    [mainFrame _dispatchShow];
+    [[[mainBridge frameLoader] client] _dispatchShow];
 
     [mainBridge setOpener:bridge];
-    [[mainFrame _frameLoader] _loadRequest:request triggeringAction:nil loadType:WebFrameLoadTypeStandard formState:formState];
+    [[mainBridge frameLoader] _loadRequest:request triggeringAction:nil loadType:FrameLoadTypeStandard formState:formState];
 
     [mainBridge release];
 
@@ -1699,9 +1691,9 @@ exit:
         return;
     }
 
-    WebFrame *frame = [client findFrameNamed:frameName];
+    WebCoreFrameBridge *frame = [frameBridge findFrameNamed:frameName];
     if (frame != nil) {
-        [[frame _frameLoader] loadRequest:request];
+        [[frame frameLoader] loadRequest:request];
         return;
     }
 
@@ -1735,9 +1727,9 @@ exit:
         formState = [[WebFormState alloc] initWithForm:form values:values sourceFrame:frameBridge];
 
     if (target != nil) {
-        WebFrame *targetFrame = [client findFrameNamed:target];
+        WebCoreFrameBridge *targetFrame = [frameBridge findFrameNamed:target];
         if (targetFrame != nil)
-            [[targetFrame _frameLoader] _loadRequest:request triggeringAction:action loadType:FrameLoadTypeStandard formState:formState];
+            [[targetFrame frameLoader] _loadRequest:request triggeringAction:action loadType:FrameLoadTypeStandard formState:formState];
         else
             [self checkNewWindowPolicyForRequest:request action:action frameName:target formState:formState
                 andCall:self withSelector:@selector(continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
@@ -1827,22 +1819,28 @@ exit:
     }
     return [self actionInformationForNavigationType:navType event:event originalURL:URL];
 }
+NSString *ActionNavigationTypeKey = @"WebActionNavigationTypeKey";
+NSString *ActionElementKey = @"WebActionElementKey";
+NSString *ActionButtonKey = @"WebActionButtonKey"; 
+NSString *ActionModifierFlagsKey = @"WebActionModifierFlagsKey";
+NSString *ActionOriginalURLKey = @"WebActionOriginalURLKey";
 
 - (NSDictionary *)actionInformationForNavigationType:(NavigationType)navigationType event:(NSEvent *)event originalURL:(NSURL *)URL
 {
     NSDictionary *elementInfo = [client _elementForEvent:event];
     if (elementInfo)
         return [NSDictionary dictionaryWithObjectsAndKeys:
-            [NSNumber numberWithInt:navigationType], WebActionNavigationTypeKey,
-            elementInfo, WebActionElementKey,
-            [NSNumber numberWithInt:[event buttonNumber]], WebActionButtonKey,
-            [NSNumber numberWithInt:[event modifierFlags]], WebActionModifierFlagsKey,
-            URL, WebActionOriginalURLKey,
+            [NSNumber numberWithInt:navigationType], ActionNavigationTypeKey,
+            elementInfo, ActionElementKey,
+            [NSNumber numberWithInt:[event buttonNumber]], ActionButtonKey,
+            [NSNumber numberWithInt:[event modifierFlags]], ActionModifierFlagsKey,
+            URL, ActionOriginalURLKey,
             nil];
     return [NSDictionary dictionaryWithObjectsAndKeys:
-        [NSNumber numberWithInt:navigationType], WebActionNavigationTypeKey,
-        [NSNumber numberWithInt:[event modifierFlags]], WebActionModifierFlagsKey,
-        URL, WebActionOriginalURLKey,
+        [NSNumber numberWithInt:navigationType], ActionNavigationTypeKey,
+        [NSNumber numberWithInt:[event modifierFlags]], ActionModifierFlagsKey,
+        URL, ActionOriginalURLKey,
         nil];
 }
 
@@ -1860,4 +1858,9 @@ exit:
     }
 }
 
+- (NSObject<WebFrameLoaderClient> *)client
+{
+    return client;
+}
+
 @end
index 24c4bb5a39aeb9d4d63dc3fe18002d43c2e84b65..5c0b7e768241b862b18c954d5c9e7091f718bf0e 100644 (file)
@@ -105,7 +105,7 @@ typedef struct LoadErrorResetToken LoadErrorResetToken;
 - (void)_dispatchDidFinishLoadForFrame;
 - (void)_dispatchDidFirstLayoutInFrame;
 
-- (WebFrame *)_dispatchCreateWebViewWithRequest:(NSURLRequest *)request;
+- (WebCoreFrameBridge *)_dispatchCreateWebViewWithRequest:(NSURLRequest *)request;
 - (void)_dispatchShow;
 
 - (void)_dispatchDecidePolicyForMIMEType:(NSString *)MIMEType request:(NSURLRequest *)request decider:(WebPolicyDecider *)decider;
index a4f556da4cc646685f695dc430fd1215cbe65c15..8e34d9d895bc02346b4a24d8a7805b9bdb0362e1 100644 (file)
@@ -304,7 +304,7 @@ static inline void addTypesFromClass(NSMutableDictionary *allTypes, Class class,
 
 - (WebView *)_webView
 {
-    return [[[_private->loader frameLoader] webFrame] webView];
+    return [(WebFrame *)[[_private->loader frameLoader] client] webView];
 }
 
 - (BOOL)_isDocumentHTML
@@ -404,7 +404,7 @@ static inline void addTypesFromClass(NSMutableDictionary *allTypes, Class class,
 
 - (WebFrame *)webFrame
 {
-    return [[_private->loader frameLoader] webFrame];
+    return (WebFrame *)[[_private->loader frameLoader] client];
 }
 
 -(NSURLRequest *)initialRequest
index da4447deb5153d3625e6bbc2f9aa6f58adb2cc7e..ed5a411e1a8c8978c821c2294c42c99a529e6672 100644 (file)
@@ -1614,14 +1614,14 @@ static inline WebDataSource *dataSource(WebDocumentLoader *loader)
     [[webView _frameLoadDelegateForwarder] webView:webView didFirstLayoutInFrame:self];
 }
 
-- (WebFrame *)_dispatchCreateWebViewWithRequest:(NSURLRequest *)request
+- (WebCoreFrameBridge *)_dispatchCreateWebViewWithRequest:(NSURLRequest *)request
 {
     WebView *currentWebView = [self webView];
     id wd = [currentWebView UIDelegate];
     if ([wd respondsToSelector:@selector(webView:createWebViewWithRequest:)])
-        return [[wd webView:currentWebView createWebViewWithRequest:request] mainFrame];
+        return [[[wd webView:currentWebView createWebViewWithRequest:request] mainFrame] _bridge];
 
-    return [[[WebDefaultUIDelegate sharedUIDelegate] webView:currentWebView createWebViewWithRequest:request] mainFrame];
+    return [[[[WebDefaultUIDelegate sharedUIDelegate] webView:currentWebView createWebViewWithRequest:request] mainFrame] _bridge];
 }
 
 - (void)_dispatchShow