From c775ae7cbd92099ee7a71c219a1b4b9ff7e7d82f Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham Linden)" <graham@lindenlab.com>
Date: Thu, 26 Sep 2013 18:53:12 -0700
Subject: MAINT-3155 add cocoa equiv for former AppleEventManager shenanigans
 for SLURL handling

---
 indra/newview/llappdelegate-objc.mm | 13 +++++++++
 indra/newview/llappviewermacosx.cpp | 53 +++++++++++++------------------------
 2 files changed, 31 insertions(+), 35 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm
index 30476b3d22..91251ed7c0 100644
--- a/indra/newview/llappdelegate-objc.mm
+++ b/indra/newview/llappdelegate-objc.mm
@@ -54,6 +54,19 @@
 	}
 	
 	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageUpdated) name:@"NSTextInputContextKeyboardSelectionDidChangeNotification" object:nil];
+
+    [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
+}
+
+- (void) handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
+    NSString    *url= nil;
+    url = [[[[NSAppleEventManager sharedAppleEventManager]// 1
+                      currentAppleEvent]// 2
+                     paramDescriptorForKeyword:keyDirectObject]// 3
+                    stringValue];// 4
+
+    const char* url_utf8 = [url UTF8String];
+   handleUrl(url_utf8);
 }
 
 - (void) applicationDidBecomeActive:(NSNotification *)notification
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 316c90d9d2..2723f0b90d 100755
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -483,41 +483,24 @@ bool LLAppViewerMacOSX::getMasterSystemAudioMute()
 	return (mute != 0);
 }
 
-OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
+void handleUrl(const char* url_utf8)
 {
-	OSErr result = noErr;
-	DescType actualType;
-	char buffer[1024];		// Flawfinder: ignore
-	Size size;
-	
-	result = AEGetParamPtr (
-		messagein,
-		keyDirectObject,
-		typeCString,
-		&actualType,
-		(Ptr)buffer,
-		sizeof(buffer),
-		&size);	
-	
-	if(result == noErr)
-	{
-		std::string url = buffer;
+    if (url_utf8)
+    {
+        std::string url = url_utf8;
+	    // Safari 3.2 silently mangles secondlife:///app/ URLs into
+	    // secondlife:/app/ (only one leading slash).
+	    // Fix them up to meet the URL specification. JC
+	    const std::string prefix = "secondlife:/app/";
+	    std::string test_prefix = url.substr(0, prefix.length());
+	    LLStringUtil::toLower(test_prefix);
+	    if (test_prefix == prefix)
+	    {
+		    url.replace(0, prefix.length(), "secondlife:///app/");
+	    }
 		
-		// Safari 3.2 silently mangles secondlife:///app/ URLs into
-		// secondlife:/app/ (only one leading slash).
-		// Fix them up to meet the URL specification. JC
-		const std::string prefix = "secondlife:/app/";
-		std::string test_prefix = url.substr(0, prefix.length());
-		LLStringUtil::toLower(test_prefix);
-		if (test_prefix == prefix)
-		{
-			url.replace(0, prefix.length(), "secondlife:///app/");
-		}
-		
-		LLMediaCtrl* web = NULL;
-		const bool trusted_browser = false;
-		LLURLDispatcher::dispatch(url, "", web, trusted_browser);
-	}
-	
-	return(result);
+	    LLMediaCtrl* web = NULL;
+    	const bool trusted_browser = false;
+	    LLURLDispatcher::dispatch(url, "", web, trusted_browser);
+    }
 }
-- 
cgit v1.2.3