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 {
240
240
const FileSpec &file_spec,
241
241
uint32_t line_no);
242
242
243
+ static llvm::Error OpenURL (llvm::StringRef url);
244
+
243
245
// / Check if we're running in an interactive graphical session.
244
246
// /
245
247
// / \return
Original file line number Diff line number Diff line change @@ -452,6 +452,38 @@ repeat with the_window in (get windows)\n\
452
452
#endif // TARGET_OS_OSX
453
453
}
454
454
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
+
455
487
bool Host::IsInteractiveGraphicSession () {
456
488
#if !TARGET_OS_OSX
457
489
return false ;
You can’t perform that action at this time.
0 commit comments