NS_IMETHODIMP nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) { // if mDefaultApplication is set, it means the application has been set from // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to // give the GNOME answer. if (mDefaultApplication) return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); *_retval = false; nsRefPtr<nsMIMEInfoBase> 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 (*_retval) return NS_OK; #if (MOZ_PLATFORM_MAEMO == 5) && defined (MOZ_ENABLE_GNOMEVFS) HildonURIAction *action = hildon_uri_get_default_action(mSchemeOrType.get(), nullptr); if (action) { *_retval = true; hildon_uri_action_unref(action); return NS_OK; } #endif #if defined(MOZ_ENABLE_CONTENTACTION) ContentAction::Action action = ContentAction::Action::defaultActionForFile(QUrl(), QString(mSchemeOrType.get())); if (action.isValid()) { *_retval = true; return NS_OK; } #endif return NS_OK; }
NS_IMETHODIMP nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) { *_retval = PR_FALSE; nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType); if (!mimeInfo) { nsCAutoString ext; nsresult rv = GetPrimaryExtension(ext); if (NS_SUCCEEDED(rv)) { mimeInfo = nsGNOMERegistry::GetFromExtension(ext); } } if (mimeInfo) *_retval = PR_TRUE; if (*_retval) return NS_OK; #if (MOZ_PLATFORM_MAEMO == 5) && defined (MOZ_ENABLE_GNOMEVFS) HildonURIAction *action = hildon_uri_get_default_action(mSchemeOrType.get(), nsnull); if (action) { *_retval = PR_TRUE; hildon_uri_action_unref(action); return NS_OK; } #endif #if defined(MOZ_ENABLE_CONTENTACTION) ContentAction::Action action = ContentAction::Action::defaultActionForFile(QUrl(), QString(mSchemeOrType.get())); if (action.isValid()) { *_retval = PR_TRUE; return NS_OK; } #endif // If we didn't find a VFS handler, fallback. return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); }