Merge commit 'v3.3' into diablo-package
[browser-switch] / microb
diff --git a/microb b/microb
index 2e00f5e..ed7c006 100755 (executable)
--- a/microb
+++ b/microb
@@ -1,5 +1,15 @@
 #!/bin/sh
 
+get_name_owner() {
+       output=$(dbus-send --session --type=method_call --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:"$1" 2>/dev/null)
+       RETVAL=$?
+       if [ $RETVAL -ne 0 ]; then
+               return $RETVAL
+       fi
+       echo "$output" | tail -1
+       return 0
+}
+
 case "$1" in
        --url=* )
                url="${1#--url=}"
@@ -9,15 +19,25 @@ case "$1" in
                ;;
 esac
 
-if pidof browser > /dev/null 2>&1; then
-       dest="com.nokia.osso_browser"
-       path="/com/nokia/osso_browser/request"
-       method="com.nokia.osso_browser.open_new_window"
+# Check whether Browser Switchboard owns the com.nokia.osso_browser name or not
+osso_browser_owner=$(get_name_owner com.nokia.osso_browser)
+if [ $? -ne 0 ]; then
+       # No one owns com.nokia.osso_browser -- let D-Bus start
+       # browser-switchboard to handle this request
+       method=switchboard_launch_microb
 else
-       dest="org.maemo.garage.browser_switchboard"
-       path="/org/maemo/garage/browser_switchboard"
-       method="org.maemo.garage.browser_switchboard.launch_microb"
+       # If com.nokia.osso_browser is owned by the owner of
+       # org.maemo.garage.browser-switchboard, then Browser Switchboard must
+       # be the owner
+       browser_switchboard_owner=$(get_name_owner org.maemo.garage.browser-switchboard)
+       if [ "$osso_browser_owner" = "$browser_switchboard_owner" ]; then
+               # Browser Switchboard owns com.nokia.osso_browser
+               method=switchboard_launch_microb
+       else
+               # Assume MicroB owns com.nokia.osso_browser
+               method=open_new_window
+       fi
 fi
 
-dbus-send --session --type=method_call --print-reply --dest="$dest" "$path" "$method" string:${url:-"new_window"} > /dev/null 2>&1
+dbus-send --session --type=method_call --print-reply --dest="com.nokia.osso_browser" /com/nokia/osso_browser/request com.nokia.osso_browser.$method string:${url:-"new_window"} > /dev/null 2>&1
 exit 0