Blob Blame History Raw
diff -Nrbu seamonkey-2.35/comm-release/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp seamonkey-2.35-OK/comm-release/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
--- seamonkey-2.35/comm-release/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp	2015-09-28 15:41:04.000000000 +0300
+++ seamonkey-2.35-OK/comm-release/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp	2016-01-23 22:22:15.951365797 +0300
@@ -118,11 +118,21 @@
   uri->GetSpec(uriSpec);
 
   nsCOMPtr<nsIGIOMimeApp> app;
-  if (NS_FAILED(giovfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) || !app) {
-    return NS_ERROR_FILE_NOT_FOUND;
-  }
+  if (NS_SUCCEEDED(giovfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app)
+    return app->Launch(uriSpec);
 
+  // If we haven't got an app we try to get a valid one by searching for the
+  // extension mapped type
+  RefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromExtension(nativePath);
+  if (mimeInfo) {
+    nsAutoCString type;
+    mimeInfo->GetType(type);
+    nsCOMPtr<nsIGIOMimeApp> app;
+    if (NS_SUCCEEDED(giovfs->GetAppForMimeType(type, getter_AddRefs(app))) && app)
   return app->Launch(uriSpec);
+  }
+
+  return NS_ERROR_FILE_NOT_FOUND;
 }
 
 #if defined(MOZ_ENABLE_CONTENTACTION)