Use LSGetApplicationForURL to search for app

It costs less.
This commit is contained in:
Cheng Zhao 2015-06-12 13:54:42 +08:00
parent 7ce8156691
commit c97c3fb9a1

View file

@ -122,15 +122,21 @@ bool OpenExternal(const GURL& url) {
DCHECK([NSThread isMainThread]);
NSString* url_string = base::SysUTF8ToNSString(url.spec());
NSURL* ns_url = [NSURL URLWithString:url_string];
if (!ns_url){
if (!ns_url) {
return false;
}
NSArray *appUrls = (NSArray*)LSCopyApplicationURLsForURL((CFURLRef)ns_url, kLSRolesAll);
if([appUrls count] > 0){
if([[NSWorkspace sharedWorkspace] openURL:ns_url])
return true;
CFURLRef openingApp = NULL;
OSStatus status = LSGetApplicationForURL((CFURLRef)ns_url,
kLSRolesAll,
NULL,
&openingApp);
if (status != noErr) {
return false;
}
return false;
CFRelease(openingApp); // NOT A BUG; LSGetApplicationForURL retains for us
return [[NSWorkspace sharedWorkspace] openURL:ns_url];
}
bool MoveItemToTrash(const base::FilePath& full_path) {