[webkit-changes] cvs commit: WebKit/WebView.subproj WebDefaultUIDelegate.m WebUIDelegatePrivate.h

Timothy thatcher at opensource.apple.com
Thu Nov 3 23:47:02 PST 2005


thatcher    05/11/03 23:47:01

  Modified:    .        Tag: Ti-2005-009-branch ChangeLog
               WebCoreSupport.subproj Tag: Ti-2005-009-branch WebBridge.m
               WebView.subproj Tag: Ti-2005-009-branch
                        WebDefaultUIDelegate.m WebUIDelegatePrivate.h
  Log:
          Merged fix from TOT to Ti-2005-009-branch
  
      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.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.3118.4.67.2.9.2.1 +34 -0     WebKit/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebKit/ChangeLog,v
  retrieving revision 1.3118.4.67.2.9
  retrieving revision 1.3118.4.67.2.9.2.1
  diff -u -r1.3118.4.67.2.9 -r1.3118.4.67.2.9.2.1
  --- ChangeLog	19 Oct 2005 18:38:00 -0000	1.3118.4.67.2.9
  +++ ChangeLog	4 Nov 2005 07:46:51 -0000	1.3118.4.67.2.9.2.1
  @@ -1,3 +1,37 @@
  +2005-11-03  Timothy Hatcher  <timothy at apple.com>
  +
  +        Merged fix from TOT to Ti-2005-009-branch
  +
  +    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.
  +
   === WebKit-416.11 ===
   
   2005-10-19  Timothy Hatcher  <timothy at apple.com>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.340.8.11.2.1.2.1 +21 -5     WebKit/WebCoreSupport.subproj/WebBridge.m
  
  Index: WebBridge.m
  ===================================================================
  RCS file: /cvs/root/WebKit/WebCoreSupport.subproj/WebBridge.m,v
  retrieving revision 1.340.8.11.2.1
  retrieving revision 1.340.8.11.2.1.2.1
  diff -u -r1.340.8.11.2.1 -r1.340.8.11.2.1.2.1
  --- WebBridge.m	4 Oct 2005 02:40:24 -0000	1.340.8.11.2.1
  +++ WebBridge.m	4 Nov 2005 07:47:00 -0000	1.340.8.11.2.1.2.1
  @@ -350,26 +350,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;
   }
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.21.24.1 +3 -3      WebKit/WebView.subproj/WebDefaultUIDelegate.m
  
  Index: WebDefaultUIDelegate.m
  ===================================================================
  RCS file: /cvs/root/WebKit/WebView.subproj/WebDefaultUIDelegate.m,v
  retrieving revision 1.21
  retrieving revision 1.21.24.1
  diff -u -r1.21 -r1.21.24.1
  --- WebDefaultUIDelegate.m	23 Sep 2004 21:25:30 -0000	1.21
  +++ WebDefaultUIDelegate.m	4 Nov 2005 07:47:01 -0000	1.21.24.1
  @@ -134,18 +134,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.11.8.1.6.1 +43 -0     WebKit/WebView.subproj/WebUIDelegatePrivate.h
  
  Index: WebUIDelegatePrivate.h
  ===================================================================
  RCS file: /cvs/root/WebKit/WebView.subproj/WebUIDelegatePrivate.h,v
  retrieving revision 1.11.8.1
  retrieving revision 1.11.8.1.6.1
  diff -u -r1.11.8.1 -r1.11.8.1.6.1
  --- WebUIDelegatePrivate.h	2 Jul 2005 01:32:46 -0000	1.11.8.1
  +++ WebUIDelegatePrivate.h	4 Nov 2005 07:47:01 -0000	1.11.8.1.6.1
  @@ -30,4 +30,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