diff -r 03f134f17221 uriloader/exthandler/unix/nsMIMEInfoUnix.cpp --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp Mon Feb 24 08:31:58 2014 -0500 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp Tue Feb 25 09:43:09 2014 +0530 @@ -53,16 +53,22 @@ return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); *_retval = false; - nsRefPtr mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType); - if (!mimeInfo) { - nsAutoCString ext; - nsresult rv = GetPrimaryExtension(ext); - if (NS_SUCCEEDED(rv)) { - mimeInfo = nsGNOMERegistry::GetFromExtension(ext); + + + if ( mClass == eProtocolInfo ) { + *_retval = nsGNOMERegistry::HandlerExists (mSchemeOrType.get()); + } else { + nsRefPtr mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType); + if (!mimeInfo) { + nsAutoCString ext; + nsresult rv = GetPrimaryExtension(ext); + if (NS_SUCCEEDED(rv)) { + mimeInfo = nsGNOMERegistry::GetFromExtension(ext); + } } + if (mimeInfo) + *_retval = true; } - if (mimeInfo) - *_retval = true; if (*_retval) return NS_OK;