Fix <https://bugs.webkit.org/show_bug.cgi?id=26312>.
authormrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 15 Jun 2009 07:37:38 +0000 (07:37 +0000)
committermrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 15 Jun 2009 07:37:38 +0000 (07:37 +0000)
Bug 26312: Multiple copies of Safari opened with WebKit nightly and Safari 3.2.3

Reviewed by Cameron Zwarich.

Skip the trampoline detection for versions of Safari < 4.0 as they don't play these
tricks, and having WebKitNightlyEnabler assume that we were in the trampoline was
preventing our LaunchServices trickery from being run.  This led to fresh copies of
WebKit.app being launched when a URL or file was opened from an external application
rather than the existing instance being reused.

* WebKitLauncher/WebKitNightlyEnabler.m:
(insideSafari4OnTigerTrampoline):
(enableWebKitNightlyBehaviour):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@44680 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m

index ea0c5d7..d3803a7 100644 (file)
@@ -1,3 +1,20 @@
+2009-06-15  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Cameron Zwarich.
+
+        Fix <https://bugs.webkit.org/show_bug.cgi?id=26312>.
+        Bug 26312: Multiple copies of Safari opened with WebKit nightly and Safari 3.2.3
+
+        Skip the trampoline detection for versions of Safari < 4.0 as they don't play these
+        tricks, and having WebKitNightlyEnabler assume that we were in the trampoline was
+        preventing our LaunchServices trickery from being run.  This led to fresh copies of
+        WebKit.app being launched when a URL or file was opened from an external application
+        rather than the existing instance being reused.
+
+        * WebKitLauncher/WebKitNightlyEnabler.m:
+        (insideSafari4OnTigerTrampoline):
+        (enableWebKitNightlyBehaviour):
+
 2009-06-13  Sam Weinig  <sam@webkit.org>
 
         Rubber-stamped by Mark "Snowy" Rowe.
index f3a339f..7d399b0 100644 (file)
@@ -128,14 +128,20 @@ NSBundle *webKitLauncherBundle()
     return [NSBundle bundleWithPath:appPath];
 }
 
-static BOOL insideSafariOnTigerTrampoline()
+static BOOL insideSafari4OnTigerTrampoline()
 {
-    SInt32 version;
-    if (Gestalt(gestaltSystemVersion, &version) != noErr)
+    SInt32 systemVersion;
+    if (Gestalt(gestaltSystemVersion, &systemVersion) != noErr)
         return NO;
 
     // If we're not on Tiger then we can't be in the trampoline state.
-    if ((version & 0xFFF0) != 0x1040)
+    if ((systemVersion & 0xFFF0) != 0x1040)
+        return NO;
+
+    // If we're running Safari < 4.0 then we can't be in the trampoline state.
+    CFBundleRef safariBundle = CFBundleGetMainBundle();
+    CFStringRef safariVersion = CFBundleGetValueForInfoDictionaryKey(safariBundle, CFSTR("CFBundleShortVersionString"));
+    if ([(NSString *)safariVersion intValue] < 4)
         return NO;
 
     const char* frameworkPath = getenv("DYLD_FRAMEWORK_PATH");
@@ -152,7 +158,7 @@ static void enableWebKitNightlyBehaviour()
 {
     // If we're inside Safari in its trampoline state, it will very shortly relaunch itself.
     // We bail out here so that we'll be called again in the freshly-launched Safari process.
-    if (insideSafariOnTigerTrampoline())
+    if (insideSafari4OnTigerTrampoline())
         return;
 
     unsetenv("DYLD_INSERT_LIBRARIES");