[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