+2006-09-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Brady.
+
+ - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=10547
+ REGRESSION: Links that should open in a new window open in the same window,
+ while opening another blank window
+
+ * WebView/WebFrame.m:
+ (-[WebFrame _continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
+ Changed a mistaken "self" to "frame", which was the cause of the bug. Also
+ fixed the method so that it won't crash if createWebViewWithRequest does
+ something that has a side effect of releasing this WebView or this frame
+ by retaining "self" and "frame" as needed. Also fixed a problem where the
+ code to set "opener" was backwards, and would set the opener of the old
+ frame to point to the new frame instead of vice versa.
+
2006-09-09 Sam Weinig <sam.weinig@gmail.com>
Reviewed by Eric.
- (void)_continueLoadRequestAfterNewWindowPolicy:(NSURLRequest *)request frameName:(NSString *)frameName formState:(WebFormState *)formState
{
- if (!request) {
+ if (!request)
return;
- }
-
+
+ [self retain];
+
WebView *webView = nil;
WebView *currentWebView = [self webView];
id wd = [currentWebView UIDelegate];
webView = [wd webView:currentWebView createWebViewWithRequest:nil];
else
webView = [[WebDefaultUIDelegate sharedUIDelegate] webView:currentWebView createWebViewWithRequest:nil];
-
+ if (!webView)
+ goto exit;
WebFrame *frame = [webView mainFrame];
+ if (!frame)
+ goto exit;
+
+ [frame retain];
+
[[frame _bridge] setName:frameName];
[[webView _UIDelegateForwarder] webViewShow:webView];
- [[self _bridge] setOpener:[frame _bridge]];
- [_private->frameLoader _loadRequest:request triggeringAction:nil loadType:WebFrameLoadTypeStandard formState:formState];
-}
+ [[frame _bridge] setOpener:[self _bridge]];
+ [frame->_private->frameLoader _loadRequest:request triggeringAction:nil loadType:WebFrameLoadTypeStandard formState:formState];
+ [frame release];
+
+exit:
+ [self release];
+}
// main funnel for navigating via callback from WebCore (e.g., clicking a link, redirect)
- (void)_loadURL:(NSURL *)URL referrer:(NSString *)referrer loadType:(WebFrameLoadType)loadType target:(NSString *)target triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values