Fix method names, move to anon namespace
This commit is contained in:
parent
08a9af3a85
commit
5e8059e0fa
1 changed files with 42 additions and 38 deletions
|
@ -17,6 +17,44 @@
|
||||||
#include "net/base/mac/url_conversions.h"
|
#include "net/base/mac/url_conversions.h"
|
||||||
#include "url/gurl.h"
|
#include "url/gurl.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
bool OpenURLInWorkspace(NSURL* ns_url, NSUInteger launchOptions) {
|
||||||
|
return [[NSWorkspace sharedWorkspace] openURLs: @[ns_url]
|
||||||
|
withAppBundleIdentifier: nil
|
||||||
|
options: launchOptions
|
||||||
|
additionalEventParamDescriptor: NULL
|
||||||
|
launchIdentifiers: NULL];
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef bool(^OpenExternalBlock)(NSURL* ns_url, NSUInteger launchOptions);
|
||||||
|
|
||||||
|
bool OpenExternalWithBlock(const GURL& url, bool activate, OpenExternalBlock open) {
|
||||||
|
DCHECK([NSThread isMainThread]);
|
||||||
|
NSURL* ns_url = net::NSURLWithGURL(url);
|
||||||
|
if (!ns_url) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
CFURLRef openingApp = NULL;
|
||||||
|
OSStatus status = LSGetApplicationForURL((CFURLRef)ns_url,
|
||||||
|
kLSRolesAll,
|
||||||
|
NULL,
|
||||||
|
&openingApp);
|
||||||
|
if (status != noErr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
CFRelease(openingApp); // NOT A BUG; LSGetApplicationForURL retains for us
|
||||||
|
|
||||||
|
NSUInteger launchOptions = NSWorkspaceLaunchDefault;
|
||||||
|
if (!activate)
|
||||||
|
launchOptions |= NSWorkspaceLaunchWithoutActivation;
|
||||||
|
|
||||||
|
return open(ns_url, launchOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
namespace platform_util {
|
namespace platform_util {
|
||||||
|
|
||||||
bool ShowItemInFolder(const base::FilePath& path) {
|
bool ShowItemInFolder(const base::FilePath& path) {
|
||||||
|
@ -129,51 +167,17 @@ bool OpenItem(const base::FilePath& full_path) {
|
||||||
return status == noErr;
|
return status == noErr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool openURLInWorkspace(NSURL* ns_url, NSUInteger launchOptions) {
|
|
||||||
return [[NSWorkspace sharedWorkspace] openURLs: @[ns_url]
|
|
||||||
withAppBundleIdentifier: nil
|
|
||||||
options: launchOptions
|
|
||||||
additionalEventParamDescriptor: NULL
|
|
||||||
launchIdentifiers: NULL];
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef bool(^OpenExternalBlock)(NSURL* ns_url, NSUInteger launchOptions);
|
|
||||||
|
|
||||||
bool openExternal(const GURL& url, bool activate, OpenExternalBlock open) {
|
|
||||||
DCHECK([NSThread isMainThread]);
|
|
||||||
NSURL* ns_url = net::NSURLWithGURL(url);
|
|
||||||
if (!ns_url) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
CFURLRef openingApp = NULL;
|
|
||||||
OSStatus status = LSGetApplicationForURL((CFURLRef)ns_url,
|
|
||||||
kLSRolesAll,
|
|
||||||
NULL,
|
|
||||||
&openingApp);
|
|
||||||
if (status != noErr) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
CFRelease(openingApp); // NOT A BUG; LSGetApplicationForURL retains for us
|
|
||||||
|
|
||||||
NSUInteger launchOptions = NSWorkspaceLaunchDefault;
|
|
||||||
if (!activate)
|
|
||||||
launchOptions |= NSWorkspaceLaunchWithoutActivation;
|
|
||||||
|
|
||||||
return open(ns_url, launchOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OpenExternal(const GURL& url, bool activate) {
|
bool OpenExternal(const GURL& url, bool activate) {
|
||||||
return openExternal(url, activate, ^bool(NSURL* ns_url, NSUInteger launchOptions) {
|
return OpenExternalWithBlock(url, activate, ^bool(NSURL* ns_url, NSUInteger launchOptions) {
|
||||||
return openURLInWorkspace(ns_url, launchOptions);
|
return OpenURLInWorkspace(ns_url, launchOptions);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenExternal(const GURL& url, bool activate, const OpenExternalCallback& c) {
|
bool OpenExternal(const GURL& url, bool activate, const OpenExternalCallback& c) {
|
||||||
__block OpenExternalCallback callback = c;
|
__block OpenExternalCallback callback = c;
|
||||||
return openExternal(url, activate, ^bool(NSURL* ns_url, NSUInteger launchOptions) {
|
return OpenExternalWithBlock(url, activate, ^bool(NSURL* ns_url, NSUInteger launchOptions) {
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
bool opened = openURLInWorkspace(ns_url, launchOptions);
|
bool opened = OpenURLInWorkspace(ns_url, launchOptions);
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
callback.Run(opened);
|
callback.Run(opened);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue