File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed
source/Host/macosx/objcxx Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -240,6 +240,8 @@ class Host {
240240 const FileSpec &file_spec,
241241 uint32_t line_no);
242242
243+ static llvm::Error OpenURL (llvm::StringRef url);
244+
243245 // / Check if we're running in an interactive graphical session.
244246 // /
245247 // / \return
Original file line number Diff line number Diff line change @@ -452,6 +452,38 @@ repeat with the_window in (get windows)\n\
452452#endif // TARGET_OS_OSX
453453}
454454
455+ llvm::Error Host::OpenURL (llvm::StringRef url) {
456+ #if !TARGET_OS_OSX
457+ return llvm::errorCodeToError (
458+ std::error_code (ENOTSUP, std::system_category ()));
459+ #else // !TARGET_OS_OSX
460+ if (url.empty ())
461+ return llvm::createStringError (" Cannot open empty URL." );
462+
463+ LLDB_LOG (GetLog (LLDBLog::Host), " Opening URL: {0}" , url);
464+
465+ CFCString url_cfstr (url.data (), kCFStringEncodingUTF8 );
466+ CFCReleaser<CFURLRef> cfurl = ::CFURLCreateWithString (
467+ /* allocator=*/ NULL ,
468+ /* URLString*/ url_cfstr.get (),
469+ /* baseURL=*/ NULL );
470+
471+ if (!cfurl.get ())
472+ return llvm::createStringError (
473+ llvm::formatv (" could not create CFURL from URL \" {0}\" " , url));
474+
475+ OSStatus error = ::LSOpenCFURLRef (
476+ /* inURL=*/ cfurl.get (),
477+ /* outLaunchedURL=*/ NULL );
478+
479+ if (error != noErr)
480+ return llvm::createStringError (
481+ llvm::formatv (" LSOpenCFURLRef failed: error {0:x}" , error));
482+
483+ return llvm::Error::success ();
484+ #endif // TARGET_OS_OSX
485+ }
486+
455487bool Host::IsInteractiveGraphicSession () {
456488#if !TARGET_OS_OSX
457489 return false ;
You can’t perform that action at this time.
0 commit comments