[webkit-changes] cvs commit: WebKit/WebView.subproj WebTextView.m

Adele adele at opensource.apple.com
Mon Jun 27 16:54:14 PDT 2005


adele       05/06/27 16:54:14

  Modified:    .        Tag: Safari-2-0-branch ChangeLog
               WebCoreSupport.subproj Tag: Safari-2-0-branch WebBridge.m
               WebView.subproj Tag: Safari-2-0-branch WebTextView.m
  Log:
          Merged fix for <rdar://problem/4155736> from TOT to Safari-2-0-branch
  
      2005-05-17  Chris Blumenberg  <cblu at apple.com>
  
  	Fixed: <rdar://problem/4119282> clicking a link in an RTF file opens the link with NSWorkspace without the usual security checks or WebView delegate control
  
          Reviewed by mjs.
  
          * WebCoreSupport.subproj/WebBridge.m:
          (-[WebBridge loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:]): pass the passed referrer to canLoadURL::: not [self referrer]
          (-[WebBridge postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]): ditto
          * WebView.subproj/WebTextView.m:
          (-[WebTextView clickedOnLink:atIndex:]): call the loadURL bridge method so that security checks are made, command/option clicks work, policy delegate is consulted etc.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.3118.4.12 +16 -0     WebKit/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebKit/ChangeLog,v
  retrieving revision 1.3118.4.11
  retrieving revision 1.3118.4.12
  diff -u -r1.3118.4.11 -r1.3118.4.12
  --- ChangeLog	14 Jun 2005 01:28:52 -0000	1.3118.4.11
  +++ ChangeLog	27 Jun 2005 23:54:07 -0000	1.3118.4.12
  @@ -1,3 +1,19 @@
  +2005-06-27  Adele Peterson  <adele at apple.com>
  +
  +        Merged fix for <rdar://problem/4155736> from TOT to Safari-2-0-branch
  +
  +    2005-05-17  Chris Blumenberg  <cblu at apple.com>
  +	
  +	Fixed: <rdar://problem/4119282> clicking a link in an RTF file opens the link with NSWorkspace without the usual security checks or WebView delegate control
  +
  +        Reviewed by mjs.
  +
  +        * WebCoreSupport.subproj/WebBridge.m:
  +        (-[WebBridge loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:]): pass the passed referrer to canLoadURL::: not [self referrer]
  +        (-[WebBridge postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]): ditto
  +        * WebView.subproj/WebTextView.m:
  +        (-[WebTextView clickedOnLink:atIndex:]): call the loadURL bridge method so that security checks are made, command/option clicks work, policy delegate is consulted etc.
  +
   === WebKit-412.6 ===
   
   2005-06-13  Adele Peterson  <adele at apple.com>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.340.8.2 +2 -2      WebKit/WebCoreSupport.subproj/WebBridge.m
  
  Index: WebBridge.m
  ===================================================================
  RCS file: /cvs/root/WebKit/WebCoreSupport.subproj/WebBridge.m,v
  retrieving revision 1.340.8.1
  retrieving revision 1.340.8.2
  diff -u -r1.340.8.1 -r1.340.8.2
  --- WebBridge.m	24 May 2005 01:22:43 -0000	1.340.8.1
  +++ WebBridge.m	27 Jun 2005 23:54:12 -0000	1.340.8.2
  @@ -626,7 +626,7 @@
   - (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer reload:(BOOL)reload userGesture:(BOOL)forUser target:(NSString *)target triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values
   {
       BOOL hideReferrer;
  -    if (![self canLoadURL:URL fromReferrer:[self referrer] hideReferrer:&hideReferrer])
  +    if (![self canLoadURL:URL fromReferrer:referrer hideReferrer:&hideReferrer])
           return;
   
       if ([target length] == 0) {
  @@ -656,7 +656,7 @@
   - (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSArray *)postData contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values
   {
       BOOL hideReferrer;
  -    if (![self canLoadURL:URL fromReferrer:[self referrer] hideReferrer:&hideReferrer])
  +    if (![self canLoadURL:URL fromReferrer:referrer hideReferrer:&hideReferrer])
           return;
   
       if ([target length] == 0) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.53.8.1  +31 -2     WebKit/WebView.subproj/WebTextView.m
  
  Index: WebTextView.m
  ===================================================================
  RCS file: /cvs/root/WebKit/WebView.subproj/WebTextView.m,v
  retrieving revision 1.53
  retrieving revision 1.53.8.1
  diff -u -r1.53 -r1.53.8.1
  --- WebTextView.m	5 Mar 2005 00:02:53 -0000	1.53
  +++ WebTextView.m	27 Jun 2005 23:54:13 -0000	1.53.8.1
  @@ -6,17 +6,24 @@
   #import <WebKit/WebTextView.h>
   
   #import <WebKit/WebAssertions.h>
  -#import <Foundation/NSURLResponse.h>
  -
  +#import <WebKit/WebBridge.h>
   #import <WebKit/WebDataSourcePrivate.h>
   #import <WebKit/WebDocumentInternal.h>
  +#import <WebKit/WebFramePrivate.h>
   #import <WebKit/WebFrameView.h>
   #import <WebKit/WebNSObjectExtras.h>
  +#import <WebKit/WebNSURLExtras.h>
   #import <WebKit/WebNSViewExtras.h>
   #import <WebKit/WebPreferences.h>
   #import <WebKit/WebTextRendererFactory.h>
   #import <WebKit/WebViewPrivate.h>
   
  +#import <Foundation/NSURLResponse.h>
  +
  + at interface NSTextView (AppKitSecret)
  ++ (NSURL *)_URLForString:(NSString *)string;
  + at end
  +
   @interface WebTextView (ForwardDeclarations)
   - (void)_updateTextSizeMultiplier;
   @end
  @@ -327,6 +334,28 @@
       return resign;
   }
   
  +- (void)clickedOnLink:(id)link atIndex:(unsigned)charIndex
  +{
  +    NSURL *URL = nil;
  +    if ([link isKindOfClass:[NSURL class]]) {
  +        URL = (NSURL *)link;
  +    } else if ([link isKindOfClass:[NSString class]]) {
  +        URL = [[self class] _URLForString:(NSString *)link];
  +    }
  +    if (URL != nil) {    
  +        // Call the bridge because this is where our security checks are made.
  +        WebFrame *frame = [[self _web_parentWebFrameView] webFrame];
  +        [[frame _bridge] loadURL:URL 
  +                        referrer:[[[[frame dataSource] request] URL] _web_originalDataAsString]
  +                          reload:NO
  +                     userGesture:YES       
  +                          target:nil
  +                 triggeringEvent:[[self window] currentEvent]
  +                            form:nil 
  +                      formValues:nil];
  +    }
  +}
  +
   #pragma mark PRINTING
   
   - (void)drawPageBorderWithSize:(NSSize)borderSize
  
  
  



More information about the webkit-changes mailing list