[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

kocienda kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:47:38 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit ca8a80eacdd5ba73de9e25767489fd9884369796
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jul 17 14:56:10 2003 +0000

    WebCore:
    
            Reviewed by Darin
    
            * kwq/KWQKHTMLPart.h: _submittedFormURL is now a KURL, not a QString
            * kwq/KWQKHTMLPart.mm:
            (KWQKHTMLPart::openURL): Now uses NSURL in API instead of NSString
            (KWQKHTMLPart::openURLRequest): Ditto
            (KWQKHTMLPart::didNotOpenURL): Ditto
            (KWQKHTMLPart::submitForm): Ditto. Plus update _submittedFormURL usages.
            (KWQKHTMLPart::urlSelected): Ditto
            (KWQKHTMLPart::setView): Ditto
            * kwq/KWQKHTMLPartBrowserExtension.mm:
            (KHTMLPartBrowserExtension::createNewWindow): Now uses NSURL in API instead of NSString
            * kwq/KWQKURL.h: Added constructor that takes an NSURL
            * kwq/KWQKURL.mm:
            (KURL::KURL): Ditto.
            * kwq/WebCoreBridge.h: Updated bridge APIs to use NSURL instead of NSString
    	in several places.
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]): Ditto
    
    WebKit:
    
            Reviewed by Darin
    
            * WebCoreSupport.subproj/WebBridge.m:
            (-[WebBridge createWindowWithURL:frameName:]): Now uses NSURL in API instead of NSString
            (-[WebBridge loadURL:referrer:reload:target:triggeringEvent:form:formValues:]): Ditto
            (-[WebBridge postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]): Ditto
            * WebKit.pbproj/project.pbxproj: Added WebNSURLExtras file
            * WebView.subproj/WebDataSourcePrivate.m:
            (-[WebDataSource _commitIfReady:]): Now uses NSURL in API instead of NSString
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@4662 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 49a4b19..b1badf8 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,25 @@
+2003-07-17  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Darin
+
+        * kwq/KWQKHTMLPart.h: _submittedFormURL is now a KURL, not a QString
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::openURL): Now uses NSURL in API instead of NSString
+        (KWQKHTMLPart::openURLRequest): Ditto
+        (KWQKHTMLPart::didNotOpenURL): Ditto
+        (KWQKHTMLPart::submitForm): Ditto. Plus update _submittedFormURL usages.
+        (KWQKHTMLPart::urlSelected): Ditto
+        (KWQKHTMLPart::setView): Ditto
+        * kwq/KWQKHTMLPartBrowserExtension.mm:
+        (KHTMLPartBrowserExtension::createNewWindow): Now uses NSURL in API instead of NSString
+        * kwq/KWQKURL.h: Added constructor that takes an NSURL
+        * kwq/KWQKURL.mm:
+        (KURL::KURL): Ditto.
+        * kwq/WebCoreBridge.h: Updated bridge APIs to use NSURL instead of NSString
+	in several places.
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]): Ditto
+
 2003-07-16  Darin Adler  <darin at apple.com>
 
         Reviewed by John.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 49a4b19..b1badf8 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,25 @@
+2003-07-17  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Darin
+
+        * kwq/KWQKHTMLPart.h: _submittedFormURL is now a KURL, not a QString
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::openURL): Now uses NSURL in API instead of NSString
+        (KWQKHTMLPart::openURLRequest): Ditto
+        (KWQKHTMLPart::didNotOpenURL): Ditto
+        (KWQKHTMLPart::submitForm): Ditto. Plus update _submittedFormURL usages.
+        (KWQKHTMLPart::urlSelected): Ditto
+        (KWQKHTMLPart::setView): Ditto
+        * kwq/KWQKHTMLPartBrowserExtension.mm:
+        (KHTMLPartBrowserExtension::createNewWindow): Now uses NSURL in API instead of NSString
+        * kwq/KWQKURL.h: Added constructor that takes an NSURL
+        * kwq/KWQKURL.mm:
+        (KURL::KURL): Ditto.
+        * kwq/WebCoreBridge.h: Updated bridge APIs to use NSURL instead of NSString
+	in several places.
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]): Ditto
+
 2003-07-16  Darin Adler  <darin at apple.com>
 
         Reviewed by John.
diff --git a/WebCore/kwq/KWQKHTMLPart.h b/WebCore/kwq/KWQKHTMLPart.h
index 5a50b4d..5e950e4 100644
--- a/WebCore/kwq/KWQKHTMLPart.h
+++ b/WebCore/kwq/KWQKHTMLPart.h
@@ -89,7 +89,7 @@ public:
 
     virtual bool openURL(const KURL &);
     virtual bool closeURL();
-    void didNotOpenURL(const QString &);
+    void didNotOpenURL(const KURL &);
     
     void openURLRequest(const KURL &, const KParts::URLArgs &);
     void submitForm(const KURL &, const KParts::URLArgs &);
@@ -251,7 +251,7 @@ private:
     static NSEvent *_currentEvent;
     static NSResponder *_firstResponderAtMouseDownTime;
 
-    QString _submittedFormURL;
+    KURL _submittedFormURL;
 
     NSMutableDictionary *_formValuesAboutToBeSubmitted;
     WebCoreDOMElement *_formAboutToBeSubmitted;
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 4646abb..5ab1e86 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -182,7 +182,7 @@ bool KWQKHTMLPart::openURL(const KURL &url)
     // FIXME: The lack of args here to get the reload flag from
     // indicates a problem in how we use KHTMLPart::processObjectRequest,
     // where we are opening the URL before the args are set up.
-    [_bridge loadURL:url.url().getNSString()
+    [_bridge loadURL:url.getNSURL()
             referrer:[_bridge referrer]
               reload:NO
               target:nil
@@ -194,7 +194,7 @@ bool KWQKHTMLPart::openURL(const KURL &url)
 
 void KWQKHTMLPart::openURLRequest(const KURL &url, const URLArgs &args)
 {
-    [_bridge loadURL:url.url().getNSString()
+    [_bridge loadURL:url.getNSURL()
             referrer:[_bridge referrer]
               reload:args.reload
               target:args.frameName.getNSString()
@@ -203,10 +203,10 @@ void KWQKHTMLPart::openURLRequest(const KURL &url, const URLArgs &args)
           formValues:nil];
 }
 
-void KWQKHTMLPart::didNotOpenURL(const QString &URL)
+void KWQKHTMLPart::didNotOpenURL(const KURL &URL)
 {
     if (_submittedFormURL == URL) {
-        _submittedFormURL = QString::null;
+        _submittedFormURL = KURL();
     }
 }
 
@@ -501,8 +501,6 @@ void KWQKHTMLPart::recordFormValue(const QString &name, const QString &value, HT
 
 void KWQKHTMLPart::submitForm(const KURL &url, const URLArgs &args)
 {
-    QString URLString = url.url();    
-    
     // The form multi-submit logic here is only right when we are submitting a form that affects this frame.
     // Eventually when we find a better fix we can remove this altogether.
     WebCoreBridge *target = args.frameName.isEmpty() ? _bridge : [_bridge findFrameNamed:args.frameName.getNSString()];
@@ -520,14 +518,14 @@ void KWQKHTMLPart::submitForm(const KURL &url, const URLArgs &args)
         // This flag prevents these from happening.
         // Note that the flag is reset in setView()
         // since this part may get reused if it is pulled from the b/f cache.
-        if (_submittedFormURL == URLString) {
+        if (_submittedFormURL == url) {
             return;
         }
-        _submittedFormURL = URLString;
+        _submittedFormURL = url;
     }
 
     if (!args.doPost()) {
-        [_bridge loadURL:URLString.getNSString()
+        [_bridge loadURL:url.getNSURL()
 	        referrer:[_bridge referrer] 
                   reload:args.reload
   	          target:args.frameName.getNSString()
@@ -536,7 +534,7 @@ void KWQKHTMLPart::submitForm(const KURL &url, const URLArgs &args)
               formValues:_formValuesAboutToBeSubmitted];
     } else {
         ASSERT(args.contentType().startsWith("Content-Type: "));
-        [_bridge postWithURL:URLString.getNSString()
+        [_bridge postWithURL:url.getNSURL()
 	            referrer:[_bridge referrer] 
                       target:args.frameName.getNSString()
                         data:[NSData dataWithBytes:args.postData.data() length:args.postData.size()]
@@ -582,7 +580,7 @@ void KHTMLPart::frameDetached()
 
 void KWQKHTMLPart::urlSelected(const KURL &url, int button, int state, const URLArgs &args)
 {
-    [_bridge loadURL:url.url().getNSString()
+    [_bridge loadURL:url.getNSURL()
             referrer:[_bridge referrer]
               reload:args.reload
               target:args.frameName.getNSString()
@@ -654,7 +652,7 @@ void KWQKHTMLPart::setView(KHTMLView *view)
     // Only one form submission is allowed per view of a part.
     // Since this part may be getting reused as a result of being
     // pulled from the back/forward cache, reset this flag.
-    _submittedFormURL = QString::null;
+    _submittedFormURL = KURL();
 }
 
 KHTMLView *KWQKHTMLPart::view() const
diff --git a/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm b/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm
index 6fe6a36..5926d80 100644
--- a/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm
+++ b/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm
@@ -86,7 +86,7 @@ void KHTMLPartBrowserExtension::createNewWindow(const KURL &url,
 	bridge = [_part->bridge() findFrameNamed:frameName];
 	if (bridge != nil) {
 	    if (!url.isEmpty()) {
-		[bridge loadURL:url.url().getNSString() referrer:[_part->bridge() referrer] reload:urlArgs.reload target:nil triggeringEvent:nil form:nil formValues:nil];
+		[bridge loadURL:url.getNSURL() referrer:[_part->bridge() referrer] reload:urlArgs.reload target:nil triggeringEvent:nil form:nil formValues:nil];
 	    }
 	    [bridge focusWindow];
 	    *partResult = [bridge part];
@@ -94,7 +94,7 @@ void KHTMLPartBrowserExtension::createNewWindow(const KURL &url,
 	}
     }
 
-    bridge = [_part->bridge() createWindowWithURL:url.url().getNSString() frameName:frameName];
+    bridge = [_part->bridge() createWindowWithURL:url.getNSURL() frameName:frameName];
     
     if (!winArgs.toolBarsVisible) {
 	[bridge setToolbarsVisible:NO];
diff --git a/WebCore/kwq/KWQKURL.h b/WebCore/kwq/KWQKURL.h
index b14a45a..312f636 100644
--- a/WebCore/kwq/KWQKURL.h
+++ b/WebCore/kwq/KWQKURL.h
@@ -46,6 +46,7 @@ public:
     KURL(const char *);
     KURL(const KURL &, const QString &, const QTextCodec * = 0);
     KURL(const QString &);
+    KURL(NSURL *);
     
     bool isEmpty() const { return urlString.isEmpty(); } 
     bool isMalformed() const { return !m_isValid; }
diff --git a/WebCore/kwq/KWQKURL.mm b/WebCore/kwq/KWQKURL.mm
index 8460e82..7fdfe68 100644
--- a/WebCore/kwq/KWQKURL.mm
+++ b/WebCore/kwq/KWQKURL.mm
@@ -232,6 +232,23 @@ KURL::KURL(const QString &url) :
     }
 }
 
+KURL::KURL(NSURL *url)
+{
+    if (url) {
+        // FIXME: Use new CF API to access URL bytes when that API is available
+        const char *bytes = [[url absoluteString] cString];
+        if (bytes[0] == '/') {
+            QString fileUrl = QString("file:") + bytes;
+            parse(fileUrl.ascii(), &fileUrl);
+        } else {
+            parse(bytes, NULL);
+        }
+    }
+    else {
+        parse("", NULL);
+    }
+}
+
 KURL::KURL(const KURL &base, const QString &relative, const QTextCodec *codec)
 {
     // Allow at lest absolute URLs to resolve against an empty URL.
diff --git a/WebCore/kwq/WebCoreBridge.h b/WebCore/kwq/WebCoreBridge.h
index 87465d4..a80c34f 100644
--- a/WebCore/kwq/WebCoreBridge.h
+++ b/WebCore/kwq/WebCoreBridge.h
@@ -112,7 +112,7 @@ enum FrameBorderStyle {
 
 - (void)setParent:(WebCoreBridge *)parent;
 
-- (void)openURL:(NSString *)URL reload:(BOOL)reload
+- (void)openURL:(NSURL *)URL reload:(BOOL)reload
     contentType:(NSString *)contentType refresh:(NSString *)refresh lastModified:(NSDate *)lastModified
     pageCache:(NSDictionary *)pageCache;
 - (void)setEncoding:(NSString *)encoding userChosen:(BOOL)userChosen;
@@ -234,10 +234,10 @@ enum FrameBorderStyle {
 - (NSString *)generateFrameName;
 - (void)frameDetached;
 
-- (void)loadURL:(NSString *)URL referrer:(NSString *)referrer reload:(BOOL)reload target:(NSString *)target triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values;
-- (void)postWithURL:(NSString *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values;
+- (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer reload:(BOOL)reload target:(NSString *)target triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values;
+- (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values;
 
-- (WebCoreBridge *)createWindowWithURL:(NSString *)URL frameName:(NSString *)name;
+- (WebCoreBridge *)createWindowWithURL:(NSURL *)URL frameName:(NSString *)name;
 - (void)showWindow;
 
 - (NSString *)userAgentForURL:(NSString *)URL;
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 20ed82a..0683674 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -160,7 +160,7 @@ static bool initializedObjectCacheSize = FALSE;
     _part->setParent([parent part]);
 }
 
-- (void)openURL:(NSString *)URL reload:(BOOL)reload contentType:(NSString *)contentType refresh:(NSString *)refresh lastModified:(NSDate *)lastModified pageCache:(NSDictionary *)pageCache
+- (void)openURL:(NSURL *)URL reload:(BOOL)reload contentType:(NSString *)contentType refresh:(NSString *)refresh lastModified:(NSDate *)lastModified pageCache:(NSDictionary *)pageCache
 {
     if (pageCache) {
         KWQPageState *state = [pageCache objectForKey:WebCorePageCacheStateKey];
@@ -178,7 +178,7 @@ static bool initializedObjectCacheSize = FALSE;
     _part->browserExtension()->setURLArgs(args);
 
     // opening the URL
-    if (_part->didOpenURL([URL cString])) {
+    if (_part->didOpenURL(URL)) {
         // things we have to set up after calling didOpenURL
         if (refresh) {
             _part->addMetaData("http-refresh", QString::fromNSString(refresh));
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index e18c2ca..bbd79e7 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2003-07-17  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Darin
+
+        * WebCoreSupport.subproj/WebBridge.m:
+        (-[WebBridge createWindowWithURL:frameName:]): Now uses NSURL in API instead of NSString
+        (-[WebBridge loadURL:referrer:reload:target:triggeringEvent:form:formValues:]): Ditto
+        (-[WebBridge postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]): Ditto
+        * WebKit.pbproj/project.pbxproj: Added WebNSURLExtras file
+        * WebView.subproj/WebDataSourcePrivate.m:
+        (-[WebDataSource _commitIfReady:]): Now uses NSURL in API instead of NSString
+
 2003-07-15  Richard Williamson   <rjw at apple.com>
 
 	Fixed 3315952:  Add support for <IMG> in attributed string conversion.
diff --git a/WebKit/Misc.subproj/WebNSURLExtras.h b/WebKit/Misc.subproj/WebNSURLExtras.h
new file mode 100644
index 0000000..a47f375
--- /dev/null
+++ b/WebKit/Misc.subproj/WebNSURLExtras.h
@@ -0,0 +1,21 @@
+/*
+    WebNSURLExtras.h
+    Private (SPI) header
+    Copyright 2002, Apple, Inc. All rights reserved.
+*/
+
+#import <Foundation/Foundation.h>
+
+#import <Foundation/NSURL_NSURLExtras.h>
+
+ at interface NSURL (WebNSURLExtras)
+
++ (NSURL *)_web_URLWithData:(NSData *)data;
++ (NSURL *)_web_URLWithData:(NSData *)data relativeToURL:(NSURL *)baseURL;
+
+- (NSData *)_web_URLAsData;
+
+- (NSString *)_web_absoluteString;
+- (int)_web_URLStringLength;
+
+ at end
diff --git a/WebKit/Misc.subproj/WebNSURLExtras.m b/WebKit/Misc.subproj/WebNSURLExtras.m
new file mode 100644
index 0000000..c362069
--- /dev/null
+++ b/WebKit/Misc.subproj/WebNSURLExtras.m
@@ -0,0 +1,77 @@
+/*
+    WebNSURLExtras.h
+    Private (SPI) header
+    Copyright 2002, Apple, Inc. All rights reserved.
+*/
+
+#import <WebKit/WebNSURLExtras.h>
+
+ at implementation NSURL (WebNSURLExtras)
+
++ (NSURL *)_web_URLWithData:(NSData *)data
+{
+    NSString *string = [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease]; 
+    return [NSURL _web_URLWithString:string];  
+#if 0
+    // URL API FIXME: Use new URL API when available
+    return (NSURL *)CFURLCreateAbsoluteURLWithBytes(NULL, [data bytes], [data length], NSISOLatin1StringEncoding, NULL, YES);
+#endif 
+}      
+
++ (NSURL *)_web_URLWithData:(NSData *)data relativeToURL:(NSURL *)baseURL
+{
+    NSString *string = [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease];
+    return [NSURL _web_URLWithString:string relativeToURL:baseURL];
+#if 0
+    // URL API FIXME: Use new URL API when available
+    return (NSURL *)CFURLCreateAbsoluteURLWithBytes(NULL, [data bytes], [data length], NSISOLatin1StringEncoding, (CFURLRef)baseURL, YES);
+#endif
+}
+
+- (NSData *)_web_URLAsData
+{
+    return [[self absoluteString] dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];
+#if 0
+    // URL API FIXME: Convert to new URL API when available
+    NSData *result = nil;
+
+    static int URLAsDataBufferSize = 2048;
+    UInt8 static_buffer[URLAsDataBufferSize];
+    CFIndex bytesFilled = CFURLGetBytes((CFURLRef)self, static_buffer, URLAsDataBufferSize);
+    if (bytesFilled != -1) {
+        result = [NSData dataWithBytes:static_buffer length:bytesFilled];
+    }
+    else {
+        CFIndex bytesToAllocate = CFURLGetBytes((CFURLRef)self, NULL, 0);
+        UInt8 *buffer = malloc(bytesToAllocate);
+        bytesFilled = CFURLGetBytes((CFURLRef)self, buffer, bytesToAllocate);
+        NSURL_ASSERT(bytesFilled == bytesToAllocate);
+        result = [NSData dataWithBytesNoCopy:buffer length:bytesFilled];
+    }
+
+    return result;
+#endif
+}
+
+- (NSString *)_web_absoluteString
+{
+    return [self absoluteString];
+#if 0
+    // URL API FIXME: Convert to new URL API when available
+    return [[[NSString alloc] initWithData:[self _web_URLAsData] encoding:NSISOLatin1StringEncoding] autorelease];
+#endif
+}
+
+- (int)_web_URLStringLength
+{
+    int length = 0;
+    if (!CFURLGetBaseURL((CFURLRef)self)) {
+        length = CFURLGetBytes((CFURLRef)self, NULL, 0);
+    }
+    else {
+        length = [[self absoluteString] length];
+    }
+    return length;
+}
+
+ at end
diff --git a/WebKit/WebCoreSupport.subproj/WebBridge.m b/WebKit/WebCoreSupport.subproj/WebBridge.m
index 2c0e065..042d0ae 100644
--- a/WebKit/WebCoreSupport.subproj/WebBridge.m
+++ b/WebKit/WebCoreSupport.subproj/WebBridge.m
@@ -27,6 +27,7 @@
 #import <WebKit/WebKitSystemBits.h>
 #import <WebKit/WebNetscapePluginEmbeddedView.h>
 #import <WebKit/WebNetscapePluginPackage.h>
+#import <WebKit/WebNSURLExtras.h>
 #import <WebKit/WebNullPluginView.h>
 #import <WebKit/WebPlugin.h>
 #import <WebKit/WebPluginController.h>
@@ -113,14 +114,14 @@
     return [[_frame findFrameNamed:name] _bridge];
 }
 
-- (WebCoreBridge *)createWindowWithURL:(NSString *)URL frameName:(NSString *)name
+- (WebCoreBridge *)createWindowWithURL:(NSURL *)URL frameName:(NSString *)name
 {
     ASSERT(_frame != nil);
 
     NSMutableURLRequest *request = nil;
 
-    if (URL != nil && [URL length] > 0) {
-	request = [NSMutableURLRequest requestWithURL:[NSURL _web_URLWithString:URL]];
+    if (URL != nil && [URL _web_URLStringLength] > 0) {
+	request = [NSMutableURLRequest requestWithURL:URL];
 	[request setHTTPReferrer:[self referrer]];
     }
 
@@ -427,7 +428,7 @@
     [[self dataSource] _setIconURL:[NSURL _web_URLWithString:URL] withType:type];
 }
 
-- (void)loadURL:(NSString *)URL referrer:(NSString *)referrer reload:(BOOL)reload target:(NSString *)target triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values
+- (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer reload:(BOOL)reload target:(NSString *)target triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values
 {
     if ([target length] == 0) {
 	target = nil;
@@ -435,14 +436,14 @@
 
     WebFrame *targetFrame = [_frame findFrameNamed:target];
 
-    [_frame _loadURL:[NSURL _web_URLWithString:URL] referrer:referrer loadType:(reload ? WebFrameLoadTypeReload : WebFrameLoadTypeStandard) target:target triggeringEvent:event form:form formValues:values];
+    [_frame _loadURL:URL referrer:referrer loadType:(reload ? WebFrameLoadTypeReload : WebFrameLoadTypeStandard) target:target triggeringEvent:event form:form formValues:values];
 
     if (targetFrame != nil && _frame != targetFrame) {
 	[[targetFrame _bridge] focusWindow];
     }
 }
 
-- (void)postWithURL:(NSString *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values
+- (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values
 {
     if ([target length] == 0) {
 	target = nil;
@@ -450,7 +451,7 @@
 
     WebFrame *targetFrame = [_frame findFrameNamed:target];
 
-    [_frame _postWithURL:[NSURL _web_URLWithString:URL] referrer:(NSString *)referrer target:target data:data contentType:contentType triggeringEvent:event form:form formValues:values];
+    [_frame _postWithURL:URL referrer:(NSString *)referrer target:target data:data contentType:contentType triggeringEvent:event form:form formValues:values];
 
     if (targetFrame != nil && _frame != targetFrame) {
 	[[targetFrame _bridge] focusWindow];
diff --git a/WebKit/WebKit.pbproj/project.pbxproj b/WebKit/WebKit.pbproj/project.pbxproj
index 5fd2e32..cd70bda 100644
--- a/WebKit/WebKit.pbproj/project.pbxproj
+++ b/WebKit/WebKit.pbproj/project.pbxproj
@@ -314,6 +314,7 @@
 				BE07CEAD047538F000CA289C,
 				BE07CEAF047538F000CA289C,
 				BE07CEB1047538F000CA289C,
+				BE6DC39B04C62C4E004D0EF6,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -432,6 +433,7 @@
 				BE07CEAE047538F000CA289C,
 				BE07CEB0047538F000CA289C,
 				BE07CEB2047538F000CA289C,
+				BE6DC39C04C62C4E004D0EF6,
 			);
 			isa = PBXSourcesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -532,6 +534,8 @@
 				8398847B03426FB000BC5F5E,
 				ED2B2474033A2DA800C1A526,
 				ED2B2475033A2DA800C1A526,
+				BE6DC39904C62C4E004D0EF6,
+				BE6DC39A04C62C4E004D0EF6,
 				F508946902B71D59018A9CD4,
 				F508946A02B71D59018A9CD4,
 				9345DDAE0365FB27008635CE,
@@ -2792,6 +2796,34 @@
 			settings = {
 			};
 		};
+		BE6DC39904C62C4E004D0EF6 = {
+			expectedFileType = sourcecode.c.h;
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebNSURLExtras.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		BE6DC39A04C62C4E004D0EF6 = {
+			expectedFileType = sourcecode.c.objc;
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebNSURLExtras.m;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		BE6DC39B04C62C4E004D0EF6 = {
+			fileRef = BE6DC39904C62C4E004D0EF6;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		BE6DC39C04C62C4E004D0EF6 = {
+			fileRef = BE6DC39A04C62C4E004D0EF6;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		BEE18F920472A0CF00CA289C = {
 			expectedFileType = sourcecode.c.h;
 			fileEncoding = 30;
diff --git a/WebKit/WebView.subproj/WebDataSourcePrivate.m b/WebKit/WebView.subproj/WebDataSourcePrivate.m
index 41b0181..f31fd97 100644
--- a/WebKit/WebView.subproj/WebDataSourcePrivate.m
+++ b/WebKit/WebView.subproj/WebDataSourcePrivate.m
@@ -24,6 +24,7 @@
 #import <WebKit/WebImageView.h>
 #import <WebKit/WebKitLogging.h>
 #import <WebKit/WebMainResourceClient.h>
+#import <WebKit/WebNSURLExtras.h>
 #import <WebKit/WebPolicyDelegate.h>
 #import <WebKit/WebResourceLoadDelegate.h>
 #import <WebKit/WebSubresourceClient.h>
@@ -523,18 +524,19 @@
         [frame _transitionToCommitted: pageCache];
 
         NSURL *baseURL = [[self request] _webDataRequestBaseURL];        
-        NSString *urlString;
+        NSURL *URL = nil;
         
         if (baseURL)
-            urlString = [baseURL absoluteString];
+            URL = baseURL;
         else
-            urlString = [[_private->response URL] absoluteString];
+            URL = [_private->response URL];
             
         // WebCore will crash if given an empty URL here.
-        if ([urlString length] == 0)
-            urlString = @"about:blank";
+        // FIXME: could use CFURL, when available, range API to save an allocation here
+        if (!URL || [URL _web_URLStringLength] == 0)
+            URL = [NSURL URLWithString:@"about:blank"];
 
-        [[self _bridge] openURL:urlString
+        [[self _bridge] openURL:URL
                          reload:reload 
                     contentType:[_private->response MIMEType]
                         refresh:[headers objectForKey:@"Refresh"]

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list