NS_IMETHODIMP nsImportService::GetModuleDescription(const char *filter, PRInt32 index, PRUnichar **_retval) { NS_PRECONDITION(_retval != nsnull, "null ptr"); if (!_retval) return NS_ERROR_NULL_POINTER; *_retval = nsnull; DoDiscover(); if (!m_pModules) return NS_ERROR_FAILURE; if ((index < 0) || (index >= m_pModules->GetCount())) return NS_ERROR_FAILURE; ImportModuleDesc * pDesc; PRInt32 count = 0; for (PRInt32 i = 0; i < m_pModules->GetCount(); i++) { pDesc = m_pModules->GetModuleDesc(i); if (pDesc->SupportsThings(filter)) { if (count == index) { *_retval = NS_strdup(pDesc->GetDescription()); return NS_OK; } else count++; } } return NS_ERROR_FAILURE; }
NS_IMETHODIMP nsImportService::GetModuleWithCID(const nsCID& cid, nsIImportModule **ppModule) { NS_PRECONDITION(ppModule != nsnull, "null ptr"); if (!ppModule) return NS_ERROR_NULL_POINTER; *ppModule = nsnull; nsresult rv = DoDiscover(); if (NS_FAILED(rv)) return rv; if (m_pModules == nsnull) return NS_ERROR_FAILURE; PRInt32 cnt = m_pModules->GetCount(); ImportModuleDesc *pDesc; for (PRInt32 i = 0; i < cnt; i++) { pDesc = m_pModules->GetModuleDesc(i); if (!pDesc) return NS_ERROR_FAILURE; if (pDesc->GetCID().Equals(cid)) { *ppModule = pDesc->GetModule(); IMPORT_LOG0("* nsImportService::GetSpecificModule - attempted to load module\n"); if (*ppModule == nsnull) return NS_ERROR_FAILURE; return NS_OK; } } IMPORT_LOG0("* nsImportService::GetSpecificModule - module not found\n"); return NS_ERROR_NOT_AVAILABLE; }
NS_IMETHODIMP nsImportService::GetModuleName(const char *filter, int32_t index, char16_t **_retval) { NS_PRECONDITION(_retval != nullptr, "null ptr"); if (!_retval) return NS_ERROR_NULL_POINTER; *_retval = nullptr; DoDiscover(); if (!m_pModules) return NS_ERROR_FAILURE; if ((index < 0) || (index >= m_pModules->GetCount())) return NS_ERROR_FAILURE; ImportModuleDesc * pDesc; int32_t count = 0; for (int32_t i = 0; i < m_pModules->GetCount(); i++) { pDesc = m_pModules->GetModuleDesc(i); if (pDesc->SupportsThings(filter)) { if (count == index) { *_retval = NS_strdup(pDesc->GetName()); return NS_OK; } else count++; } } return NS_ERROR_FAILURE; }
NS_IMETHODIMP nsImportService::GetModuleInfo(const char *filter, int32_t index, char16_t **name, char16_t **moduleDescription) { NS_PRECONDITION(name != nullptr, "null ptr"); NS_PRECONDITION(moduleDescription != nullptr, "null ptr"); if (!name || !moduleDescription) return NS_ERROR_NULL_POINTER; *name = nullptr; *moduleDescription = nullptr; DoDiscover(); if (!m_pModules) return NS_ERROR_FAILURE; if ((index < 0) || (index >= m_pModules->GetCount())) return NS_ERROR_FAILURE; ImportModuleDesc * pDesc; int32_t count = 0; for (int32_t i = 0; i < m_pModules->GetCount(); i++) { pDesc = m_pModules->GetModuleDesc(i); if (pDesc->SupportsThings(filter)) { if (count == index) { *name = NS_strdup(pDesc->GetName()); *moduleDescription = NS_strdup(pDesc->GetDescription()); return NS_OK; } else count++; } } return NS_ERROR_FAILURE; }
NS_IMETHODIMP nsImportService::GetModuleCount(const char *filter, PRInt32 *_retval) { NS_PRECONDITION(_retval != nsnull, "null ptr"); if (! _retval) return NS_ERROR_NULL_POINTER; DoDiscover(); if (m_pModules != nsnull) { ImportModuleDesc * pDesc; PRInt32 count = 0; for (PRInt32 i = 0; i < m_pModules->GetCount(); i++) { pDesc = m_pModules->GetModuleDesc(i); if (pDesc->SupportsThings(filter)) count++; } *_retval = count; } else *_retval = 0; return NS_OK; }
NS_IMETHODIMP nsImportService::DiscoverModules(void) { m_didDiscovery = false; return DoDiscover(); }