mozilla-gio.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 30 Mar 2011 16:38:38 +0200
branchmozilla-2.0
changeset 252 5477a696d8f6
parent 210 f4f4388b26a8
permissions -rw-r--r--
install all icons
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
210
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# User Chris Coulson
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
# Parent 0ebe30f9eacfe67fa0b699457e524d5a9c96359e
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
Bug 611953 - GNOME 3.0 readiness (patch 2 + 3)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
diff --git a/toolkit/system/gnome/nsGIOService.cpp b/toolkit/system/gnome/nsGIOService.cpp
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
--- a/toolkit/system/gnome/nsGIOService.cpp
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
+++ b/toolkit/system/gnome/nsGIOService.cpp
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
@@ -101,25 +101,25 @@ nsGIOMimeApp::GetName(nsACString& aName)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
 }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
 NS_IMETHODIMP
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 nsGIOMimeApp::GetCommand(nsACString& aCommand)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
 {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
   get_commandline_t g_app_info_get_commandline_ptr;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
-  void *libHandle = dlopen("libgio-2.0.so", RTLD_LAZY);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
+  void *libHandle = dlopen("libgio-2.0.so.0", RTLD_LAZY);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
   if (!libHandle) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
     return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
   dlerror(); /* clear any existing error */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
   g_app_info_get_commandline_ptr =
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
     (get_commandline_t) dlsym(libHandle, "g_app_info_get_commandline");
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
-  if (dlerror() != NULL) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
-    const char cmd = *g_app_info_get_commandline_ptr(mApp);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
+  if (dlerror() == NULL) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
+    const char *cmd = g_app_info_get_commandline_ptr(mApp);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
     if (!cmd) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
       dlclose(libHandle);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
       return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
     }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
     aCommand.Assign(cmd);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
   dlclose(libHandle);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
@@ -277,16 +277,43 @@ nsGIOMimeApp::SetAsDefaultForFileExtensi
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
     } else {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
       *ext_pos = '\0';
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
     }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
   g_free(extensions);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
 }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
+/**
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
+ * Set default application for URI's of a particular scheme
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
+ * @param aURIScheme string containing the URI scheme
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
+ * @return NS_OK when application was set as default for URI scheme,
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    51
+ * NS_ERROR_FAILURE otherwise
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
+ */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
+NS_IMETHODIMP
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
+nsGIOMimeApp::SetAsDefaultForURIScheme(nsACString const& aURIScheme)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
+{
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
+  GError *error = NULL;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
+  nsCAutoString contentType("x-scheme-handler/");
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
+  contentType.Append(aURIScheme);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    59
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
+  g_app_info_set_as_default_for_type(mApp,
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    61
+                                     contentType.get(),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    62
+                                     &error);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    63
+  if (error) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    64
+    g_warning("Cannot set application as default for URI scheme (%s): %s",
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    65
+              PromiseFlatCString(aURIScheme).get(),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    66
+              error->message);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    67
+    g_error_free(error);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    68
+    return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    69
+  }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    71
+  return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    72
+}
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    73
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    74
 nsresult
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    75
 nsGIOService::Init()
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    76
 {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    77
   // do nothing, gvfs/gio does not init.
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    78
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    79
 }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    80
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    81
 NS_IMPL_ISUPPORTS1(nsGIOService, nsIGIOService)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    82
@@ -317,29 +344,45 @@ nsGIOService::GetMimeTypeFromExtension(c
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    83
   g_free(mime_type);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    84
   g_free(content_type);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    85
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    86
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    87
 }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    88
 // used in nsGNOMERegistry
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    89
 // -----------------------------------------------------------------------------
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    90
 NS_IMETHODIMP
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    91
+nsGIOService::GetAppForURIScheme(const nsACString& aURIScheme,
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    92
+                                 nsIGIOMimeApp** aApp)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    93
+{
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    94
+  *aApp = nsnull;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    95
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    96
+  GAppInfo *app_info = g_app_info_get_default_for_uri_scheme(
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    97
+                         PromiseFlatCString(aURIScheme).get());
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    98
+  if (app_info) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    99
+    nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   100
+    NS_ADDREF(*aApp = mozApp);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   101
+  } else {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   102
+    return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   103
+  }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   104
+  return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   105
+}
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   106
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   107
+NS_IMETHODIMP
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   108
 nsGIOService::GetAppForMimeType(const nsACString& aMimeType,
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   109
                                 nsIGIOMimeApp**   aApp)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   110
 {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   111
   *aApp = nsnull;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   112
   char *content_type =
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   113
     get_content_type_from_mime_type(PromiseFlatCString(aMimeType).get());
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   114
   if (!content_type)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   115
     return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   116
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   117
   GAppInfo *app_info = g_app_info_get_default_for_type(content_type, false);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   118
   if (app_info) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   119
     nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   120
-    NS_ENSURE_TRUE(mozApp, NS_ERROR_OUT_OF_MEMORY);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   121
     NS_ADDREF(*aApp = mozApp);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   122
   } else {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   123
     g_free(content_type);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   124
     return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   125
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   126
   g_free(content_type);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   127
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   128
 }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   129
@@ -414,75 +457,46 @@ nsGIOService::CreateAppFromCommand(nsACS
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   130
                                    nsIGIOMimeApp**   appInfo)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   131
 {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   132
   GError *error = NULL;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   133
   *appInfo = nsnull;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   134
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   135
   GAppInfo *app_info = NULL, *app_info_from_list = NULL;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   136
   GList *apps = g_app_info_get_all();
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   137
   GList *apps_p = apps;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   138
-  get_commandline_t g_app_info_get_commandline_ptr;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   139
-
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   140
-  void *libHandle = dlopen("libgio-2.0.so", RTLD_LAZY);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   141
-  if (!libHandle) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   142
-    return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   143
-  }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   144
-  dlerror(); /* clear any existing error */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   145
-  g_app_info_get_commandline_ptr =
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   146
-    (get_commandline_t) dlsym(libHandle, "g_app_info_get_commandline");
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   147
-  if (dlerror() != NULL) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   148
-    g_app_info_get_commandline_ptr = NULL;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   149
-  }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   150
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   151
   // Try to find relevant and existing GAppInfo in all installed application
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   152
+  // We do this by comparing each GAppInfo's executable with out own
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   153
   while (apps_p) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   154
     app_info_from_list = (GAppInfo*) apps_p->data;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   155
-    /* This is  a silly test. It just compares app names but not
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   156
-     * commands. This is due to old version of Glib/Gio. The required
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   157
-     * function which allows to do a regular check of existence of desktop file
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   158
-     * is possible by using function g_app_info_get_commandline. This function
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   159
-     * has been introduced in Glib 2.20. */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   160
-    if (app_info_from_list && strcmp(g_app_info_get_name(app_info_from_list),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   161
-                                     PromiseFlatCString(appName).get()) == 0 )
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   162
-    {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   163
-      if (g_app_info_get_commandline_ptr)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   164
-      {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   165
-        /* Following test is only possible with Glib >= 2.20.
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   166
-         * Compare path only by using strncmp */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   167
-        if (strncmp(g_app_info_get_commandline_ptr(app_info_from_list),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   168
-                    PromiseFlatCString(cmd).get(),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   169
-                    strlen(PromiseFlatCString(cmd).get())) == 0)
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   170
-        {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   171
-          app_info = app_info_from_list;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   172
-          break;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   173
-        } else {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   174
-          g_object_unref(app_info_from_list);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   175
-        }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   176
-      } else {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   177
+    if (!app_info) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   178
+      // If the executable is not absolute, get it's full path
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   179
+      char *executable = g_find_program_in_path(g_app_info_get_executable(app_info_from_list));
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   180
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   181
+      if (executable && strcmp(executable, PromiseFlatCString(cmd).get()) == 0) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   182
+        g_object_ref (app_info_from_list);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   183
         app_info = app_info_from_list;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   184
-        break;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   185
       }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   186
-    } else {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   187
-      g_object_unref(app_info_from_list);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   188
+      g_free(executable);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   189
     }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   190
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   191
+    g_object_unref(app_info_from_list);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   192
     apps_p = apps_p->next;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   193
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   194
   g_list_free(apps);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   195
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   196
   if (!app_info) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   197
     app_info = g_app_info_create_from_commandline(PromiseFlatCString(cmd).get(),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   198
                                                   PromiseFlatCString(appName).get(),
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   199
                                                   G_APP_INFO_CREATE_SUPPORTS_URIS,
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   200
                                                   &error);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   201
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   202
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   203
   if (!app_info) {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   204
     g_warning("Cannot create application info from command: %s", error->message);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   205
     g_error_free(error);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   206
-    dlclose(libHandle);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   207
     return NS_ERROR_FAILURE;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   208
   }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   209
   nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   210
   NS_ENSURE_TRUE(mozApp, NS_ERROR_OUT_OF_MEMORY);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   211
   NS_ADDREF(*appInfo = mozApp);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   212
-  dlclose(libHandle);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   213
   return NS_OK;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   214
 }
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   215
diff --git a/xpcom/system/nsIGIOService.idl b/xpcom/system/nsIGIOService.idl
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   216
--- a/xpcom/system/nsIGIOService.idl
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   217
+++ b/xpcom/system/nsIGIOService.idl
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   218
@@ -39,17 +39,17 @@
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   219
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   220
 #include "nsISupports.idl"
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   221
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   222
 interface nsIUTF8StringEnumerator;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   223
 interface nsIURI;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   224
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   225
 /* nsIGIOMimeApp holds information about an application that is looked up
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   226
    with nsIGIOService::GetAppForMimeType. */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   227
-// 66009894-9877-405b-9321-bf30420e34e6 prev uuid
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   228
+// e77021b4-4012-407d-b686-7a1f18050109 prev uuid
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   229
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   230
 [scriptable, uuid(e77021b4-4012-407d-b686-7a1f18050109)] 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   231
 interface nsIGIOMimeApp : nsISupports
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   232
 {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   233
   const long EXPECTS_URIS  = 0;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   234
   const long EXPECTS_PATHS = 1;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   235
   const long EXPECTS_URIS_FOR_NON_FILES = 2;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   236
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   237
@@ -57,41 +57,45 @@ interface nsIGIOMimeApp : nsISupports
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   238
   readonly attribute AUTF8String         name;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   239
   readonly attribute AUTF8String         command;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   240
   readonly attribute long                expectsURIs;  // see constants above
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   241
   readonly attribute nsIUTF8StringEnumerator supportedURISchemes;
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   242
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   243
   void launch(in AUTF8String uri);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   244
   void setAsDefaultForMimeType(in AUTF8String mimeType);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   245
   void setAsDefaultForFileExtensions(in AUTF8String extensions);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   246
+  void setAsDefaultForURIScheme(in AUTF8String uriScheme);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   247
 };
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   248
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   249
 /*
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   250
  * The VFS service makes use of two distinct registries.
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   251
  *
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   252
  * The application registry holds information about applications (uniquely
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   253
  * identified by id), such as which MIME types and URI schemes they are
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   254
  * capable of handling, whether they run in a terminal, etc.
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   255
  *
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   256
  * The MIME registry holds information about MIME types, such as which
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   257
  * extensions map to a given MIME type.  The MIME registry also stores the
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   258
  * id of the application selected to handle each MIME type.
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   259
  */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   260
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   261
-// prev id dea20bf0-4e4d-48c5-b932-dc3e116dc64b
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   262
-[scriptable, uuid(47e372c2-78bb-4899-8114-56aa7d9cdac5)]
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   263
+// prev id 47e372c2-78bb-4899-8114-56aa7d9cdac5
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   264
+[scriptable, uuid(74ca8791-330d-4786-9569-2a2a19f0b486)]
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   265
 interface nsIGIOService : nsISupports
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   266
 {
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   267
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   268
   /*** MIME registry methods ***/
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   269
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   270
   /* Obtain the MIME type registered for an extension.  The extension
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   271
      should not include a leading dot. */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   272
   AUTF8String        getMimeTypeFromExtension(in AUTF8String extension);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   273
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   274
+  /* Obtain the preferred application for opening a given URI scheme */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   275
+  nsIGIOMimeApp      getAppForURIScheme(in AUTF8String aURIScheme);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   276
+
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   277
   /* Obtain the preferred application for opening a given MIME type */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   278
   nsIGIOMimeApp      getAppForMimeType(in AUTF8String mimeType);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   279
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   280
   /* Obtain the preferred application for opening a given MIME type */
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   281
   nsIGIOMimeApp      createAppFromCommand(in AUTF8String cmd, 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   282
                                           in AUTF8String appName);
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   283
 
f4f4388b26a8 update to 2.0b9/4.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   284
   /* Obtain a description for the given MIME type */