X-Git-Url: http://git.maemo.org/git/?p=browser-switch;a=blobdiff_plain;f=dbus-server-bindings.c;h=dfdc98054868ea165889b7aa8e11d7f805c95a52;hp=e3d2c4fb512a9fef09334aba236380c6361c726f;hb=4e09868aec19cdc25a5d991fff8d93ec90c013d8;hpb=846e68b8ffa979d30ed331c43020212ffdee2bf2 diff --git a/dbus-server-bindings.c b/dbus-server-bindings.c index e3d2c4f..dfdc980 100644 --- a/dbus-server-bindings.c +++ b/dbus-server-bindings.c @@ -131,19 +131,9 @@ gboolean osso_browser_top_application(OssoBrowser *obj, return TRUE; } - -/* - * The org.maemo.garage.browser_switchboard D-Bus interface - */ -gboolean switchboard_top_application(OssoBrowser *obj, - GError **error) { - if (!ctx.continuous_mode) - ignore_reconfig_requests(); - launch_microb(&ctx, "new_window"); - return TRUE; -} - -gboolean switchboard_launch_microb(OssoBrowser *obj, +/* This is a "undocumented", non-standard extension to the API, ONLY + for use by /usr/bin/microb wrapper */ +gboolean osso_browser_switchboard_launch_microb(OssoBrowser *obj, const char *uri, GError **error) { if (!ctx.continuous_mode) ignore_reconfig_requests(); @@ -157,9 +147,10 @@ void dbus_request_osso_browser_name(struct swb_context *ctx) { GError *error = NULL; guint result; - if (!ctx || !ctx->dbus_proxy) + if (!ctx || !ctx->dbus_proxy || !ctx->dbus_system_proxy) return; + /* Acquire the com.nokia.osso_browser name on the session bus */ if (!dbus_g_proxy_call(ctx->dbus_proxy, "RequestName", &error, G_TYPE_STRING, "com.nokia.osso_browser", G_TYPE_UINT, DBUS_NAME_FLAG_REPLACE_EXISTING|DBUS_NAME_FLAG_DO_NOT_QUEUE, @@ -173,6 +164,22 @@ void dbus_request_osso_browser_name(struct swb_context *ctx) { log_msg("Couldn't acquire name com.nokia.osso_browser\n"); exit(1); } + + /* Try to acquire the com.nokia.osso_browser name on the system bus + Treat a failure as non-fatal, which makes testing on desktop systems + easier */ + if (!dbus_g_proxy_call(ctx->dbus_system_proxy, "RequestName", &error, + G_TYPE_STRING, "com.nokia.osso_browser", + G_TYPE_UINT, DBUS_NAME_FLAG_REPLACE_EXISTING|DBUS_NAME_FLAG_DO_NOT_QUEUE, + G_TYPE_INVALID, + G_TYPE_UINT, &result, + G_TYPE_INVALID)) { + log_msg("Couldn't acquire name com.nokia.osso_browser on system bus\n"); + g_error_free(error); + } + if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + log_msg("Couldn't acquire name com.nokia.osso_browser on system bus\n"); + } } /* Release the name com.nokia.osso_browser on the D-Bus session bus */ @@ -180,7 +187,7 @@ void dbus_release_osso_browser_name(struct swb_context *ctx) { GError *error = NULL; guint result; - if (!ctx || !ctx->dbus_proxy) + if (!ctx || !ctx->dbus_proxy || !ctx->dbus_system_proxy) return; dbus_g_proxy_call(ctx->dbus_proxy, "ReleaseName", &error, @@ -188,4 +195,9 @@ void dbus_release_osso_browser_name(struct swb_context *ctx) { G_TYPE_INVALID, G_TYPE_UINT, &result, G_TYPE_INVALID); + dbus_g_proxy_call(ctx->dbus_system_proxy, "ReleaseName", &error, + G_TYPE_STRING, "com.nokia.osso_browser", + G_TYPE_INVALID, + G_TYPE_UINT, &result, + G_TYPE_INVALID); }