Use createCFURLFromBuffer when converting a String to a CFURL
[WebKit-https.git] / Source / WebKit2 / Shared / API / c / cf / WKURLCF.mm
index 882e4f1854b15b70450e6a59a61564b963eaf1b3..122dd89f50ad06fd442262fb27bcbbe869ae7e25 100644 (file)
 #import "WKNSURL.h"
 #import <WebCore/CFURLExtras.h>
 #import <objc/runtime.h>
-#import <wtf/PassRefPtr.h>
-#import <wtf/RefPtr.h>
 #import <wtf/text/CString.h>
-#import <wtf/text/WTFString.h>
 
 using namespace WebCore;
 using namespace WebKit;
@@ -75,13 +72,6 @@ CFURLRef WKURLCopyCFURL(CFAllocatorRef allocatorRef, WKURLRef URLRef)
     // We first create a CString and then create the CFURL from it. This will ensure that the CFURL is stored in 
     // UTF-8 which uses less memory and is what WebKit clients might expect.
 
-    // This pattern of using UTF-8 and then falling back to Latin1 on failure matches URL::createCFString with the
-    // major differnce being that URL does not do a UTF-8 conversion and instead chops off the high bits of the UTF-16
-    // character sequence.
-
     CString buffer = toImpl(URLRef)->string().utf8();
-    CFURLRef result = CFURLCreateAbsoluteURLWithBytes(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(buffer.data()), buffer.length(), kCFStringEncodingUTF8, 0, true);
-    if (!result)
-        result = CFURLCreateAbsoluteURLWithBytes(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(buffer.data()), buffer.length(), kCFStringEncodingISOLatin1, 0, true);
-    return result;
+    return createCFURLFromBuffer(buffer.data(), buffer.length(), 0).leakRef();
 }