Reviewed by Richard.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Nov 2004 02:48:09 +0000 (02:48 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Nov 2004 02:48:09 +0000 (02:48 +0000)
<rdar://problem/3885076> Don't make IDN calls for all-ascii URLs to save about 3 pages
at Safari startup.

        * Misc.subproj/WebNSURLExtras.m:
        (mapHostNames): If encoding and not decoding, then bail early if the URL is all ascii.
        (-[NSString _web_mapHostNameWithRange:encode:makeString:]): Remove earlier special-case
check for localhost, no longer needed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8032 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/Misc.subproj/WebNSURLExtras.m

index f77857d31cf28fbb549548bfc3c9571d61ceaf04..2a8a1cfda831d9c4184b08dbbe78a36891adab2a 100644 (file)
@@ -1,3 +1,15 @@
+2004-11-17  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Richard.
+
+       <rdar://problem/3885076> Don't make IDN calls for all-ascii URLs to save about 3 pages
+       at Safari startup.
+       
+        * Misc.subproj/WebNSURLExtras.m:
+        (mapHostNames): If encoding and not decoding, then bail early if the URL is all ascii.
+        (-[NSString _web_mapHostNameWithRange:encode:makeString:]): Remove earlier special-case
+       check for localhost, no longer needed.
+
 2004-11-17  Richard Williamson   <rjw@apple.com>
 
        Fixed <rdar://problem/3863601> Legacy font cache code in [WebTextRendererFactory createSharedFactory] may be unnecesary
index da7305a72c32de64abf96aa676a9d429c866fa05..b04bece339ed3003b739d327f923ef999d56fa31 100644 (file)
@@ -231,6 +231,9 @@ static NSString *mapHostNames(NSString *string, BOOL encode)
 {
     // Generally, we want to optimize for the case where there is one host name that does not need mapping.
     
+    if (encode && [string canBeConvertedToEncoding:NSASCIIStringEncoding])
+        return string;
+
     // Make a list of ranges that actually need mapping.
     NSMutableArray *hostNameRanges = nil;
     StringRangeApplierFunction f = encode
@@ -748,13 +751,6 @@ static NSString *mapHostNames(NSString *string, BOOL encode)
     int length = range.length;
     [string getCharacters:sourceBuffer range:range];
 
-    // Avoid expensive calls to uidna_IDNToASCII or uidna_IDNToUnicode for localhost
-    UChar firstChar = sourceBuffer[0];
-    if (firstChar == 'l' || firstChar == 'L') {
-        if ([self rangeOfString:@"localhost" options:NSCaseInsensitiveSearch range:range].location != NSNotFound)
-            return nil;
-    }
-    
     UErrorCode error = U_ZERO_ERROR;
     int32_t numCharactersConverted = (encode ? uidna_IDNToASCII : uidna_IDNToUnicode)
         (sourceBuffer, length, destinationBuffer, HOST_NAME_BUFFER_LENGTH, UIDNA_ALLOW_UNASSIGNED, NULL, &error);