[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:55:19 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit de3ba79e75de490f86c87b4ef7266ed8d7542ccb
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Feb 7 23:03:01 2002 +0000

    Updated IFLocationChangeHandler API.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@600 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 06dc3d2..e358eff 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,11 @@
+2002-02-07  Richard Williamson  <rjw at apple.com>
+
+    Factored URL loading code out and moved to IFBaseWebController.
+    
+	* ChangeLog:
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::khtmlMouseReleaseEvent),
+	(KHTMLPart::requestFrame):
+
 2002-02-06  Richard Williamson  <rjw at apple.com>
 
     Fixed allocation problems.
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 06dc3d2..e358eff 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,11 @@
+2002-02-07  Richard Williamson  <rjw at apple.com>
+
+    Factored URL loading code out and moved to IFBaseWebController.
+    
+	* ChangeLog:
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::khtmlMouseReleaseEvent),
+	(KHTMLPart::requestFrame):
+
 2002-02-06  Richard Williamson  <rjw at apple.com>
 
     Fixed allocation problems.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 06dc3d2..e358eff 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,11 @@
+2002-02-07  Richard Williamson  <rjw at apple.com>
+
+    Factored URL loading code out and moved to IFBaseWebController.
+    
+	* ChangeLog:
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::khtmlMouseReleaseEvent),
+	(KHTMLPart::requestFrame):
+
 2002-02-06  Richard Williamson  <rjw at apple.com>
 
     Fixed allocation problems.
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 7d9d33c..51987ca 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -64,7 +64,7 @@
 @protocol IFWebController
 - (IFWebFrame *)createFrameNamed: (NSString *)name for: (IFWebDataSource *)dataSource inParent: (IFWebDataSource *)dataSource;
 - (BOOL)locationWillChangeTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
-- (void)changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
+- (BOOL)_changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame parent: (IFWebDataSource *)parent;
 - (void)locationChangeStartedForFrame: (IFWebFrame *)frame;
 - (void)locationChangeDone: (IFError *)error forFrame: (IFWebFrame *)frame;
 @end
@@ -81,6 +81,7 @@
 - (void)startLoading: (BOOL)forceRefresh;
 - frameNamed: (NSString *)f;
 - (void)_setParent: (IFWebDataSource *)p;
+- (IFWebDataSource *)parent;
 @end
 
 // This should not be allowed here.  data source should not reference view
@@ -1302,18 +1303,8 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
         frame = [dataSource frame];
         controller = [dataSource controller];
         
-        // FIXME:  Factor this into a function.
-        if ([controller locationWillChangeTo: url forFrame: frame]){
-            [controller changeLocationTo: url forFrame: frame];
-
-            // This introduces a nasty dependency on the view.
-            khtml::RenderPart *renderPartFrame = [frame _renderFramePart];
-            if (renderPartFrame)
-                renderPartFrame->setWidget ([[frame view] _widget]);
-
+        if ([controller _changeLocationTo: url forFrame: frame parent: [[frame dataSource] parent]]){
             [[frame dataSource] startLoading: YES];
-
-            [controller locationChangeStartedForFrame: frame];
         }
 
 /*
@@ -1584,18 +1575,8 @@ bool KHTMLPart::requestFrame( khtml::RenderPart *frame, const QString &url, cons
         newFrame = [controller createFrameNamed: nsframeName for: nil inParent: dataSource];
         [newFrame _setRenderFramePart: frame];
     
-
-        if ([controller locationWillChangeTo: childURL forFrame: newFrame]){
-            [controller changeLocationTo: childURL forFrame: newFrame];
-
-            // This introduces a nasty dependency on the view.
-            frame->setWidget ([[newFrame view] _widget]);
-
-            [[newFrame dataSource] _setParent: dataSource];
-            
+        if ([controller _changeLocationTo: childURL forFrame: newFrame parent: dataSource]){            
             [[newFrame dataSource] startLoading: YES];
-            
-            [controller locationChangeStartedForFrame: newFrame];
         }
     }
 
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index 7d9d33c..51987ca 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -64,7 +64,7 @@
 @protocol IFWebController
 - (IFWebFrame *)createFrameNamed: (NSString *)name for: (IFWebDataSource *)dataSource inParent: (IFWebDataSource *)dataSource;
 - (BOOL)locationWillChangeTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
-- (void)changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
+- (BOOL)_changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame parent: (IFWebDataSource *)parent;
 - (void)locationChangeStartedForFrame: (IFWebFrame *)frame;
 - (void)locationChangeDone: (IFError *)error forFrame: (IFWebFrame *)frame;
 @end
@@ -81,6 +81,7 @@
 - (void)startLoading: (BOOL)forceRefresh;
 - frameNamed: (NSString *)f;
 - (void)_setParent: (IFWebDataSource *)p;
+- (IFWebDataSource *)parent;
 @end
 
 // This should not be allowed here.  data source should not reference view
@@ -1302,18 +1303,8 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
         frame = [dataSource frame];
         controller = [dataSource controller];
         
-        // FIXME:  Factor this into a function.
-        if ([controller locationWillChangeTo: url forFrame: frame]){
-            [controller changeLocationTo: url forFrame: frame];
-
-            // This introduces a nasty dependency on the view.
-            khtml::RenderPart *renderPartFrame = [frame _renderFramePart];
-            if (renderPartFrame)
-                renderPartFrame->setWidget ([[frame view] _widget]);
-
+        if ([controller _changeLocationTo: url forFrame: frame parent: [[frame dataSource] parent]]){
             [[frame dataSource] startLoading: YES];
-
-            [controller locationChangeStartedForFrame: frame];
         }
 
 /*
@@ -1584,18 +1575,8 @@ bool KHTMLPart::requestFrame( khtml::RenderPart *frame, const QString &url, cons
         newFrame = [controller createFrameNamed: nsframeName for: nil inParent: dataSource];
         [newFrame _setRenderFramePart: frame];
     
-
-        if ([controller locationWillChangeTo: childURL forFrame: newFrame]){
-            [controller changeLocationTo: childURL forFrame: newFrame];
-
-            // This introduces a nasty dependency on the view.
-            frame->setWidget ([[newFrame view] _widget]);
-
-            [[newFrame dataSource] _setParent: dataSource];
-            
+        if ([controller _changeLocationTo: childURL forFrame: newFrame parent: dataSource]){            
             [[newFrame dataSource] startLoading: YES];
-            
-            [controller locationChangeStartedForFrame: newFrame];
         }
     }
 
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index 7d9d33c..51987ca 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -64,7 +64,7 @@
 @protocol IFWebController
 - (IFWebFrame *)createFrameNamed: (NSString *)name for: (IFWebDataSource *)dataSource inParent: (IFWebDataSource *)dataSource;
 - (BOOL)locationWillChangeTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
-- (void)changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
+- (BOOL)_changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame parent: (IFWebDataSource *)parent;
 - (void)locationChangeStartedForFrame: (IFWebFrame *)frame;
 - (void)locationChangeDone: (IFError *)error forFrame: (IFWebFrame *)frame;
 @end
@@ -81,6 +81,7 @@
 - (void)startLoading: (BOOL)forceRefresh;
 - frameNamed: (NSString *)f;
 - (void)_setParent: (IFWebDataSource *)p;
+- (IFWebDataSource *)parent;
 @end
 
 // This should not be allowed here.  data source should not reference view
@@ -1302,18 +1303,8 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
         frame = [dataSource frame];
         controller = [dataSource controller];
         
-        // FIXME:  Factor this into a function.
-        if ([controller locationWillChangeTo: url forFrame: frame]){
-            [controller changeLocationTo: url forFrame: frame];
-
-            // This introduces a nasty dependency on the view.
-            khtml::RenderPart *renderPartFrame = [frame _renderFramePart];
-            if (renderPartFrame)
-                renderPartFrame->setWidget ([[frame view] _widget]);
-
+        if ([controller _changeLocationTo: url forFrame: frame parent: [[frame dataSource] parent]]){
             [[frame dataSource] startLoading: YES];
-
-            [controller locationChangeStartedForFrame: frame];
         }
 
 /*
@@ -1584,18 +1575,8 @@ bool KHTMLPart::requestFrame( khtml::RenderPart *frame, const QString &url, cons
         newFrame = [controller createFrameNamed: nsframeName for: nil inParent: dataSource];
         [newFrame _setRenderFramePart: frame];
     
-
-        if ([controller locationWillChangeTo: childURL forFrame: newFrame]){
-            [controller changeLocationTo: childURL forFrame: newFrame];
-
-            // This introduces a nasty dependency on the view.
-            frame->setWidget ([[newFrame view] _widget]);
-
-            [[newFrame dataSource] _setParent: dataSource];
-            
+        if ([controller _changeLocationTo: childURL forFrame: newFrame parent: dataSource]){            
             [[newFrame dataSource] startLoading: YES];
-            
-            [controller locationChangeStartedForFrame: newFrame];
         }
     }
 
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index c8795d8..5656242 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,21 @@
+2002-02-07  Richard Williamson  <rjw at apple.com>
+
+    Update IFLocationChangeHandler API.  Added factored code for
+    URL loading.
+    
+	* ChangeLog:
+	* WebView.subproj/IFBaseWebController.h:
+	* WebView.subproj/IFBaseWebController.mm: (-[IFBaseWebController
+	setMainView:andMainDataSource:]), (-[IFBaseWebController
+	_changeLocationTo:forFrame:parent:]), (-[IFBaseWebController
+	_changeFrame:dataSource:]), (-[IFBaseWebController
+	locationChangeCommittedForFrame:]):
+	* WebView.subproj/IFBaseWebControllerPrivate.h:
+	* WebView.subproj/IFWebController.h:
+	* WebView.subproj/IFWebDataSource.mm: (-[IFWebDataSource startLoading:]):
+	* WebView.subproj/IFWebFrame.h:
+	* WebView.subproj/IFWebFrame.m: (-[IFWebFrame reset]):
+
 2002-02-06  Richard Williamson  <rjw at apple.com>
 
     Fixed allocation problems.  Implemented parent->child management
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index c8795d8..5656242 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,21 @@
+2002-02-07  Richard Williamson  <rjw at apple.com>
+
+    Update IFLocationChangeHandler API.  Added factored code for
+    URL loading.
+    
+	* ChangeLog:
+	* WebView.subproj/IFBaseWebController.h:
+	* WebView.subproj/IFBaseWebController.mm: (-[IFBaseWebController
+	setMainView:andMainDataSource:]), (-[IFBaseWebController
+	_changeLocationTo:forFrame:parent:]), (-[IFBaseWebController
+	_changeFrame:dataSource:]), (-[IFBaseWebController
+	locationChangeCommittedForFrame:]):
+	* WebView.subproj/IFBaseWebControllerPrivate.h:
+	* WebView.subproj/IFWebController.h:
+	* WebView.subproj/IFWebDataSource.mm: (-[IFWebDataSource startLoading:]):
+	* WebView.subproj/IFWebFrame.h:
+	* WebView.subproj/IFWebFrame.m: (-[IFWebFrame reset]):
+
 2002-02-06  Richard Williamson  <rjw at apple.com>
 
     Fixed allocation problems.  Implemented parent->child management
diff --git a/WebKit/WebView.subproj/IFBaseWebController.h b/WebKit/WebView.subproj/IFBaseWebController.h
index 8c594d4..7cde8c7 100644
--- a/WebKit/WebView.subproj/IFBaseWebController.h
+++ b/WebKit/WebView.subproj/IFBaseWebController.h
@@ -19,18 +19,31 @@
 
 - initWithView: (IFWebView *)view dataSource: (IFWebDataSource *)dataSource;
 
+
 - (void)setDirectsAllLinksToSystemBrowser: (BOOL)flag;
+
+
 - (BOOL)directsAllLinksToSystemBrowser;
 
+
 // Sets the mainView and the mainDataSource.
-- (void)setMainView: (IFWebView *)view andMainDataSource: (IFWebDataSource *)dataSource;
+// Returns NO if locationWillChangeTo:forFrame: disallows the change, otherwise returns YES.
+- (BOOL)setMainView: (IFWebView *)view andMainDataSource: (IFWebDataSource *)dataSource;
+
 
 - (void)setMainView: (IFWebView *)view;
+
+
 - (IFWebView *)mainView;
 
-- (void)setMainDataSource: (IFWebDataSource *)dataSource;
+
+// Returns NO if locationWillChangeTo:forFrame: disallows the change, otherwise returns YES.
+- (BOOL)setMainDataSource: (IFWebDataSource *)dataSource;
+
+
 - (IFWebDataSource *)mainDataSource;
 
+
 - (IFWebFrame *)mainFrame;
 
 @end
diff --git a/WebKit/WebView.subproj/IFBaseWebController.mm b/WebKit/WebView.subproj/IFBaseWebController.mm
index 670dcd4..781202f 100644
--- a/WebKit/WebView.subproj/IFBaseWebController.mm
+++ b/WebKit/WebView.subproj/IFBaseWebController.mm
@@ -9,6 +9,9 @@
 #import <WebKit/IFWebFrame.h>
 #import <WebKit/IFException.h>
 
+#include <KWQKHTMLPart.h>
+#include <rendering/render_frames.h>
+
 
 // IFObjectHolder holds objects as keys in dictionaries without
 // copying.
@@ -103,10 +106,20 @@
 }
 
 
-- (void)setMainView: (IFWebView *)view andMainDataSource: (IFWebDataSource *)dataSource
+
+// This is the designated method to change the main view and/or main data source.
+// The main view and data source are held in the main frame.
+- (BOOL)setMainView: (IFWebView *)view andMainDataSource: (IFWebDataSource *)dataSource
 {
     IFBaseWebControllerPrivate *data = ((IFBaseWebControllerPrivate *)_controllerPrivate);
         
+    if (dataSource != nil && dataSource != [data->mainFrame dataSource]){
+        if (![self locationWillChangeTo: [dataSource inputURL] forFrame: data->mainFrame])
+            return NO;
+    }
+    
+    // Required to break retain cycle between frame and datasource.
+    [data->mainFrame reset];
     [data->mainFrame autorelease];
     
     data->mainFrame = [[IFWebFrame alloc] init];
@@ -116,10 +129,14 @@
     [data->mainFrame setDataSource: dataSource];
     [dataSource _setController: self];
     
-    if (dataSource != nil)
-        [view dataSourceChanged: dataSource];
+    if (dataSource != nil){
+        [self _changeFrame: data->mainFrame dataSource: dataSource];
+    }
+    return YES;
 }
 
+
+
 - (IFWebFrame *)createFrameNamed: (NSString *)fname for: (IFWebDataSource *)childDataSource inParent: (IFWebDataSource *)parentDataSource
 {
     IFWebView *childView;
@@ -162,10 +179,10 @@
 }
 
 
-- (void)setMainDataSource: (IFWebDataSource *)dataSource;
+- (BOOL)setMainDataSource: (IFWebDataSource *)dataSource;
 {
     IFBaseWebControllerPrivate *data = ((IFBaseWebControllerPrivate *)_controllerPrivate);
-    [self setMainView: [data->mainFrame view] andMainDataSource: dataSource];
+    return [self setMainView: [data->mainFrame view] andMainDataSource: dataSource];
 }
 
 - (IFWebDataSource *)mainDataSource
@@ -227,19 +244,40 @@
     return YES;
 }
 
-- (void)changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame
+
+- (BOOL)_changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame parent: (IFWebDataSource *)parent
 {
-    IFWebDataSource *dataSource = [[[IFWebDataSource alloc] initWithURL: url] autorelease];
+    if ([self locationWillChangeTo: url forFrame: frame]){
+        IFWebDataSource *dataSource = [[[IFWebDataSource alloc] initWithURL: url] autorelease];
+        
+        [dataSource _setParent: parent];
+        [self _changeFrame: frame dataSource: dataSource];
+        return YES;
+    }
+    return NO;
+}
+
+
+- (void)_changeFrame: (IFWebFrame *)frame dataSource: (IFWebDataSource *)newDataSource
+{
+    IFBaseWebControllerPrivate *data = ((IFBaseWebControllerPrivate *)_controllerPrivate);
     IFWebDataSource *oldDataSource;
-    
+
     oldDataSource = [frame dataSource];
-    [dataSource _setParent: [oldDataSource parent]];
-    [dataSource _setController: self];
-    [frame setDataSource: dataSource];
+    if (frame == data->mainFrame)
+        [newDataSource _setParent: nil];
+    else if (oldDataSource && oldDataSource != newDataSource)
+        [newDataSource _setParent: [oldDataSource parent]];
+    [newDataSource _setController: self];
+    [frame setDataSource: newDataSource];
     
-    [[frame view] dataSourceChanged: dataSource];
-    
-    //[dataSource startLoading: YES];
+    [[frame view] dataSourceChanged: newDataSource];
+
+    // This introduces a nasty dependency on the view.
+    khtml::RenderPart *renderPartFrame = [frame _renderFramePart];
+    id view = [frame view];
+    if (renderPartFrame && [view isKindOfClass: NSClassFromString(@"IFWebView")])
+        renderPartFrame->setWidget ([[frame view] _widget]);
 }
 
 
@@ -249,7 +287,7 @@
 }
 
 
-- (void)locationChangeInProgressForFrame: (IFWebFrame *)frame
+- (void)locationChangeCommittedForFrame: (IFWebFrame *)frame
 {
     [NSException raise:IFMethodNotYetImplemented format:@"IFBaseWebController::locationChangeInProgressForDataSource:forDataSource: is not implemented"];
 }
diff --git a/WebKit/WebView.subproj/IFBaseWebControllerPrivate.h b/WebKit/WebView.subproj/IFBaseWebControllerPrivate.h
index 7d53972..ed3bd30 100644
--- a/WebKit/WebView.subproj/IFBaseWebControllerPrivate.h
+++ b/WebKit/WebView.subproj/IFBaseWebControllerPrivate.h
@@ -2,9 +2,9 @@
     IFWebController.mm
 	Copyright 2001, Apple, Inc. All rights reserved.
 */
-#import <WebKit/IFWebController.h>
+#import <WebKit/IFBaseWebController.h>
 #import <WebKit/IFWebDataSource.h>
-#import <WebKit/IFWebView.h>
+#import <WebKit/IFWebFrame.h>
 
 
 @interface IFBaseWebControllerPrivate : NSObject
@@ -12,3 +12,9 @@
     IFWebFrame *mainFrame;
 }
 @end
+
+
+ at interface IFBaseWebController (IFPrivate);
+- (BOOL)_changeLocationTo: (NSURL *)url forFrame: (IFWebFrame *)frame parent: (IFWebDataSource *)parent;
+- (void)_changeFrame: (IFWebFrame *)frame dataSource: (IFWebDataSource *)newDataSource;
+ at end
diff --git a/WebKit/WebView.subproj/IFWebController.h b/WebKit/WebView.subproj/IFWebController.h
index b31bed8..a741373 100644
--- a/WebKit/WebView.subproj/IFWebController.h
+++ b/WebKit/WebView.subproj/IFWebController.h
@@ -103,7 +103,7 @@
 - (BOOL)locationWillChangeTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
 
 - (void)locationChangeStartedForFrame: (IFWebFrame *)frame;
-- (void)locationChangeInProgressForFrame: (IFWebFrame *)frame;
+- (void)locationChangeCommittedForFrame: (IFWebFrame *)frame;
 - (void)locationChangeDone: (IFError *)error forFrame: (IFWebFrame *)frame;
 
 - (void)receivedPageTitle: (NSString *)title forDataSource: (IFWebDataSource *)dataSource;
diff --git a/WebKit/WebView.subproj/IFWebDataSource.mm b/WebKit/WebView.subproj/IFWebDataSource.mm
index 9061b23..080a64d 100644
--- a/WebKit/WebView.subproj/IFWebDataSource.mm
+++ b/WebKit/WebView.subproj/IFWebDataSource.mm
@@ -218,6 +218,8 @@
     
     WEBKITDEBUG1 ("url = %s\n", [[[self inputURL] absoluteString] cString]);
     [self _part]->openURL (url);
+    
+    [[self controller] locationChangeStartedForFrame: [self frame]];
 }
 
 
diff --git a/WebKit/WebView.subproj/IFWebFrame.h b/WebKit/WebView.subproj/IFWebFrame.h
index bf0fe3a..1bfbc98 100644
--- a/WebKit/WebView.subproj/IFWebFrame.h
+++ b/WebKit/WebView.subproj/IFWebFrame.h
@@ -25,6 +25,8 @@
 - (void)setDataSource: (IFWebDataSource *)ds;
 - (IFWebDataSource *)dataSource;
 
+- (void)reset;
+
 // private
 - (void)_setRenderFramePart: (void *)p;
 - (void *)_renderFramePart;
diff --git a/WebKit/WebView.subproj/IFWebFrame.m b/WebKit/WebView.subproj/IFWebFrame.m
index 676366b..8b27474 100644
--- a/WebKit/WebView.subproj/IFWebFrame.m
+++ b/WebKit/WebView.subproj/IFWebFrame.m
@@ -62,6 +62,16 @@
     [dataSource setFrame: self];
 }
 
+// Required to break retain cycle between frame and data source.
+- (void)reset
+{
+    [dataSource autorelease];
+    dataSource = nil;
+    [view autorelease];
+    view = nil;
+}
+
+// renderFramePart is a pointer to a RenderPart
 - (void)_setRenderFramePart: (void *)p
 {
     renderFramePart = p;
diff --git a/WebKit/WebView.subproj/WebController.h b/WebKit/WebView.subproj/WebController.h
index b31bed8..a741373 100644
--- a/WebKit/WebView.subproj/WebController.h
+++ b/WebKit/WebView.subproj/WebController.h
@@ -103,7 +103,7 @@
 - (BOOL)locationWillChangeTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
 
 - (void)locationChangeStartedForFrame: (IFWebFrame *)frame;
-- (void)locationChangeInProgressForFrame: (IFWebFrame *)frame;
+- (void)locationChangeCommittedForFrame: (IFWebFrame *)frame;
 - (void)locationChangeDone: (IFError *)error forFrame: (IFWebFrame *)frame;
 
 - (void)receivedPageTitle: (NSString *)title forDataSource: (IFWebDataSource *)dataSource;
diff --git a/WebKit/WebView.subproj/WebDataSource.m b/WebKit/WebView.subproj/WebDataSource.m
index 9061b23..080a64d 100644
--- a/WebKit/WebView.subproj/WebDataSource.m
+++ b/WebKit/WebView.subproj/WebDataSource.m
@@ -218,6 +218,8 @@
     
     WEBKITDEBUG1 ("url = %s\n", [[[self inputURL] absoluteString] cString]);
     [self _part]->openURL (url);
+    
+    [[self controller] locationChangeStartedForFrame: [self frame]];
 }
 
 
diff --git a/WebKit/WebView.subproj/WebFrame.h b/WebKit/WebView.subproj/WebFrame.h
index bf0fe3a..1bfbc98 100644
--- a/WebKit/WebView.subproj/WebFrame.h
+++ b/WebKit/WebView.subproj/WebFrame.h
@@ -25,6 +25,8 @@
 - (void)setDataSource: (IFWebDataSource *)ds;
 - (IFWebDataSource *)dataSource;
 
+- (void)reset;
+
 // private
 - (void)_setRenderFramePart: (void *)p;
 - (void *)_renderFramePart;
diff --git a/WebKit/WebView.subproj/WebView.h b/WebKit/WebView.subproj/WebView.h
index b31bed8..a741373 100644
--- a/WebKit/WebView.subproj/WebView.h
+++ b/WebKit/WebView.subproj/WebView.h
@@ -103,7 +103,7 @@
 - (BOOL)locationWillChangeTo: (NSURL *)url forFrame: (IFWebFrame *)frame;
 
 - (void)locationChangeStartedForFrame: (IFWebFrame *)frame;
-- (void)locationChangeInProgressForFrame: (IFWebFrame *)frame;
+- (void)locationChangeCommittedForFrame: (IFWebFrame *)frame;
 - (void)locationChangeDone: (IFError *)error forFrame: (IFWebFrame *)frame;
 
 - (void)receivedPageTitle: (NSString *)title forDataSource: (IFWebDataSource *)dataSource;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list