[webkit-changes] cvs commit: WebKit/WebView.subproj
WebDefaultUIDelegate.m WebUIDelegatePrivate.h
John
sullivan at opensource.apple.com
Fri Oct 7 11:31:51 PDT 2005
sullivan 05/10/07 11:31:50
Modified: . ChangeLog
WebCoreSupport.subproj WebBridge.m
WebView.subproj WebDefaultUIDelegate.m
WebUIDelegatePrivate.h
Log:
Reviewed by Tim Omernick.
WebKit support for allowing clients to know which frame originated a particular JavaScript alert/dialog.
* WebView.subproj/WebUIDelegatePrivate.h:
New optional delegate methods for the three JavaScript alert/dialogs. These are just like the existing
ones in WebUIDelegate.h except that each adds a parameter specifying the frame that the JavaScript was
running in. Eventually we'll deprecate the old three methods in favor of these in the public API.
* WebCoreSupport.subproj/WebBridge.m:
(-[WebBridge runJavaScriptAlertPanelWithMessage:]):
Call version of the delegate method that has the frame parameter if the delegate supports it.
(-[WebBridge runJavaScriptConfirmPanelWithMessage:]):
ditto
(-[WebBridge runJavaScriptTextInputPanelWithPrompt:defaultText:returningText:]):
ditto
* WebView.subproj/WebDefaultUIDelegate.m:
(-[WebDefaultUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
Now implements the new version of the delegate method that includes the frame parameter. (Still
doesn't do anything though.)
(-[WebDefaultUIDelegate webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:]):
Now implements the new version of the delegate method that includes the frame parameter. (Still
doesn't do anything though.)
(-[WebDefaultUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:]):
Now implements the new version of the delegate method that includes the frame parameter. Doesn't
actually use the frame parameter here yet though.
Revision Changes Path
1.3344 +30 -0 WebKit/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebKit/ChangeLog,v
retrieving revision 1.3343
retrieving revision 1.3344
diff -u -r1.3343 -r1.3344
--- ChangeLog 6 Oct 2005 21:19:43 -0000 1.3343
+++ ChangeLog 7 Oct 2005 18:31:46 -0000 1.3344
@@ -1,3 +1,33 @@
+2005-10-07 John Sullivan <sullivan at apple.com>
+
+ Reviewed by Tim Omernick.
+
+ WebKit support for allowing clients to know which frame originated a particular JavaScript alert/dialog.
+
+ * WebView.subproj/WebUIDelegatePrivate.h:
+ New optional delegate methods for the three JavaScript alert/dialogs. These are just like the existing
+ ones in WebUIDelegate.h except that each adds a parameter specifying the frame that the JavaScript was
+ running in. Eventually we'll deprecate the old three methods in favor of these in the public API.
+
+ * WebCoreSupport.subproj/WebBridge.m:
+ (-[WebBridge runJavaScriptAlertPanelWithMessage:]):
+ Call version of the delegate method that has the frame parameter if the delegate supports it.
+ (-[WebBridge runJavaScriptConfirmPanelWithMessage:]):
+ ditto
+ (-[WebBridge runJavaScriptTextInputPanelWithPrompt:defaultText:returningText:]):
+ ditto
+
+ * WebView.subproj/WebDefaultUIDelegate.m:
+ (-[WebDefaultUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
+ Now implements the new version of the delegate method that includes the frame parameter. (Still
+ doesn't do anything though.)
+ (-[WebDefaultUIDelegate webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:]):
+ Now implements the new version of the delegate method that includes the frame parameter. (Still
+ doesn't do anything though.)
+ (-[WebDefaultUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:]):
+ Now implements the new version of the delegate method that includes the frame parameter. Doesn't
+ actually use the frame parameter here yet though.
+
2005-10-06 Darin Adler <darin at apple.com>
- fixed compiling on Deployment
1.372 +21 -5 WebKit/WebCoreSupport.subproj/WebBridge.m
Index: WebBridge.m
===================================================================
RCS file: /cvs/root/WebKit/WebCoreSupport.subproj/WebBridge.m,v
retrieving revision 1.371
retrieving revision 1.372
diff -u -r1.371 -r1.372
--- WebBridge.m 5 Oct 2005 21:07:33 -0000 1.371
+++ WebBridge.m 7 Oct 2005 18:31:49 -0000 1.372
@@ -372,26 +372,42 @@
- (void)runJavaScriptAlertPanelWithMessage:(NSString *)message
{
WebView *wv = [_frame webView];
- [[wv _UIDelegateForwarder] webView:wv runJavaScriptAlertPanelWithMessage:message];
+ id wd = [wv UIDelegate];
+ // Check whether delegate implements new version, then whether delegate implements old version. If neither,
+ // fall back to shared delegate's implementation of new version.
+ if ([wd respondsToSelector:@selector(webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:)])
+ [wd webView:wv runJavaScriptAlertPanelWithMessage:message initiatedByFrame:_frame];
+ else if ([wd respondsToSelector:@selector(webView:runJavaScriptAlertPanelWithMessage:)])
+ [wd webView:wv runJavaScriptAlertPanelWithMessage:message];
+ else
+ [[WebDefaultUIDelegate sharedUIDelegate] webView:wv runJavaScriptAlertPanelWithMessage:message initiatedByFrame:_frame];
}
- (BOOL)runJavaScriptConfirmPanelWithMessage:(NSString *)message
{
WebView *wv = [_frame webView];
id wd = [wv UIDelegate];
+ // Check whether delegate implements new version, then whether delegate implements old version. If neither,
+ // fall back to shared delegate's implementation of new version.
+ if ([wd respondsToSelector: @selector(webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:)])
+ return [wd webView:wv runJavaScriptConfirmPanelWithMessage:message initiatedByFrame:_frame];
if ([wd respondsToSelector: @selector(webView:runJavaScriptConfirmPanelWithMessage:)])
- return [wd webView:wv runJavaScriptConfirmPanelWithMessage:message];
- return [[WebDefaultUIDelegate sharedUIDelegate] webView:wv runJavaScriptConfirmPanelWithMessage:message];
+ return [wd webView:wv runJavaScriptConfirmPanelWithMessage:message];
+ return [[WebDefaultUIDelegate sharedUIDelegate] webView:wv runJavaScriptConfirmPanelWithMessage:message initiatedByFrame:_frame];
}
- (BOOL)runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText returningText:(NSString **)result
{
WebView *wv = [_frame webView];
id wd = [wv UIDelegate];
- if ([wd respondsToSelector: @selector(webView:runJavaScriptTextInputPanelWithPrompt:defaultText:)])
+ // Check whether delegate implements new version, then whether delegate implements old version. If neither,
+ // fall back to shared delegate's implementation of new version.
+ if ([wd respondsToSelector: @selector(webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:)])
+ *result = [wd webView:wv runJavaScriptTextInputPanelWithPrompt:prompt defaultText:defaultText initiatedByFrame:_frame];
+ else if ([wd respondsToSelector: @selector(webView:runJavaScriptTextInputPanelWithPrompt:defaultText:)])
*result = [wd webView:wv runJavaScriptTextInputPanelWithPrompt:prompt defaultText:defaultText];
else
- *result = [[WebDefaultUIDelegate sharedUIDelegate] webView:wv runJavaScriptTextInputPanelWithPrompt:prompt defaultText:defaultText];
+ *result = [[WebDefaultUIDelegate sharedUIDelegate] webView:wv runJavaScriptTextInputPanelWithPrompt:prompt defaultText:defaultText initiatedByFrame:_frame];
return *result != nil;
}
1.23 +3 -3 WebKit/WebView.subproj/WebDefaultUIDelegate.m
Index: WebDefaultUIDelegate.m
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebDefaultUIDelegate.m,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- WebDefaultUIDelegate.m 5 Jun 2005 17:54:46 -0000 1.22
+++ WebDefaultUIDelegate.m 7 Oct 2005 18:31:50 -0000 1.23
@@ -158,18 +158,18 @@
return window == nil ? NSZeroRect : [NSWindow contentRectForFrameRect:[window frame] styleMask:[window styleMask]];
}
-- (void)webView: (WebView *)wv runJavaScriptAlertPanelWithMessage:(NSString *)message
+- (void)webView: (WebView *)wv runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
{
// FIXME: We want a default here, but that would add localized strings.
}
-- (BOOL)webView: (WebView *)wv runJavaScriptConfirmPanelWithMessage:(NSString *)message
+- (BOOL)webView: (WebView *)wv runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
{
// FIXME: We want a default here, but that would add localized strings.
return NO;
}
-- (NSString *)webView: (WebView *)wv runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText
+- (NSString *)webView: (WebView *)wv runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WebFrame *)frame
{
WebJavaScriptTextInputPanel *panel = [[WebJavaScriptTextInputPanel alloc] initWithPrompt:prompt text:defaultText];
[panel showWindow:nil];
1.15 +43 -0 WebKit/WebView.subproj/WebUIDelegatePrivate.h
Index: WebUIDelegatePrivate.h
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebUIDelegatePrivate.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- WebUIDelegatePrivate.h 2 Aug 2005 17:14:41 -0000 1.14
+++ WebUIDelegatePrivate.h 7 Oct 2005 18:31:50 -0000 1.15
@@ -46,4 +46,47 @@
- (WebView *)webView:(WebView *)sender createWebViewModalDialogWithRequest:(NSURLRequest *)request;
- (void)webViewRunModal:(WebView *)sender;
+// These three methods are replacements for the existing ones that lack the frame parameter. The old
+// methods should be deprecated.
+
+/*!
+ @method webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:
+ @abstract Display a JavaScript alert panel.
+ @param sender The WebView sending the delegate method.
+ @param message The message to display.
+ @param frame The WebFrame whose JavaScript initiated this call.
+ @discussion Clients should visually indicate that this panel comes
+ from JavaScript initiated by the specified frame. The panel should have
+ a single OK button.
+*/
+- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;
+
+/*!
+ @method webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:
+ @abstract Display a JavaScript confirm panel.
+ @param sender The WebView sending the delegate method.
+ @param message The message to display.
+ @param frame The WebFrame whose JavaScript initiated this call.
+ @result YES if the user hit OK, no if the user chose Cancel.
+ @discussion Clients should visually indicate that this panel comes
+ from JavaScript initiated by the specified frame. The panel should have
+ two buttons, e.g. "OK" and "Cancel".
+*/
+- (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;
+
+/*!
+ @method webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:
+ @abstract Display a JavaScript text input panel.
+ @param sender The WebView sending the delegate method.
+ @param message The message to display.
+ @param defaultText The initial text for the text entry area.
+ @param frame The WebFrame whose JavaScript initiated this call.
+ @result The typed text if the user hit OK, otherwise nil.
+ @discussion Clients should visually indicate that this panel comes
+ from JavaScript initiated by the specified frame. The panel should have
+ two buttons, e.g. "OK" and "Cancel", and an area to type text.
+*/
+- (NSString *)webView:(WebView *)sender runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WebFrame *)frame;
+
+
@end
More information about the webkit-changes
mailing list