Skip to content

Commit f0a1e84

Browse files
author
git apple-llvm automerger
committed
Merge commit '81522c202977' from swift/release/6.1 into stable/20240723
2 parents 414f399 + 81522c2 commit f0a1e84

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

lldb/include/lldb/Host/Host.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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

lldb/source/Host/macosx/objcxx/Host.mm

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
455487
bool Host::IsInteractiveGraphicSession() {
456488
#if !TARGET_OS_OSX
457489
return false;

0 commit comments

Comments
 (0)