NS_IMETHODIMP nsPop3IncomingServer::PerformBiff(nsIMsgWindow *aMsgWindow) { nsresult rv; nsCOMPtr<nsIPop3Service> pop3Service(do_GetService(kCPop3ServiceCID, &rv)); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIMsgFolder> inbox; nsCOMPtr<nsIMsgFolder> rootMsgFolder; nsCOMPtr<nsIUrlListener> urlListener; rv = GetRootMsgFolder(getter_AddRefs(rootMsgFolder)); NS_ENSURE_TRUE(rootMsgFolder, NS_ERROR_FAILURE); rootMsgFolder->GetFolderWithFlags(nsMsgFolderFlags::Inbox, getter_AddRefs(inbox)); if (!inbox) return NS_ERROR_FAILURE; nsCOMPtr <nsIMsgIncomingServer> server; inbox->GetServer(getter_AddRefs(server)); server->SetPerformingBiff(true); urlListener = do_QueryInterface(inbox); bool downloadOnBiff = false; rv = GetDownloadOnBiff(&downloadOnBiff); if (downloadOnBiff) { nsCOMPtr <nsIMsgLocalMailFolder> localInbox = do_QueryInterface(inbox, &rv); if (localInbox && NS_SUCCEEDED(rv)) { bool valid = false; nsCOMPtr <nsIMsgDatabase> db; rv = inbox->GetMsgDatabase(getter_AddRefs(db)); if (NS_SUCCEEDED(rv) && db) rv = db->GetSummaryValid(&valid); if (NS_SUCCEEDED(rv) && valid) rv = pop3Service->GetNewMail(aMsgWindow, urlListener, inbox, this, nullptr); else { bool isLocked; inbox->GetLocked(&isLocked); if (!isLocked) rv = localInbox->GetDatabaseWithReparse(urlListener, aMsgWindow, getter_AddRefs(db)); if (NS_SUCCEEDED(rv)) rv = localInbox->SetCheckForNewMessagesAfterParsing(true); } } } else rv = pop3Service->CheckForNewMail(aMsgWindow, urlListener, inbox, this, nullptr); return NS_OK; }
NS_IMETHODIMP nsMovemailIncomingServer::PerformBiff(nsIMsgWindow *aMsgWindow) { nsresult rv; nsCOMPtr<nsIMovemailService> movemailService(do_GetService( kCMovemailServiceCID, &rv)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIMsgFolder> inbox; nsCOMPtr<nsIMsgFolder> rootMsgFolder; nsCOMPtr<nsIUrlListener> urlListener; rv = GetRootMsgFolder(getter_AddRefs(rootMsgFolder)); if(NS_SUCCEEDED(rv) && rootMsgFolder) { rootMsgFolder->GetFolderWithFlags(nsMsgFolderFlags::Inbox, getter_AddRefs(inbox)); if (!inbox) return NS_ERROR_FAILURE; } SetPerformingBiff(PR_TRUE); urlListener = do_QueryInterface(inbox); bool downloadOnBiff = false; rv = GetDownloadOnBiff(&downloadOnBiff); if (downloadOnBiff) { nsCOMPtr <nsIMsgLocalMailFolder> localInbox = do_QueryInterface(inbox, &rv); if (localInbox && NS_SUCCEEDED(rv)) { bool valid = false; nsCOMPtr <nsIMsgDatabase> db; rv = inbox->GetMsgDatabase(getter_AddRefs(db)); if (NS_SUCCEEDED(rv) && db) { rv = db->GetSummaryValid(&valid); } if (NS_SUCCEEDED(rv) && valid) { rv = movemailService->GetNewMail(aMsgWindow, urlListener, inbox, this, nsnull); } else { bool isLocked; inbox->GetLocked(&isLocked); if (!isLocked) { rv = localInbox->ParseFolder(aMsgWindow, urlListener); } if (NS_SUCCEEDED(rv)) { rv = localInbox->SetCheckForNewMessagesAfterParsing(PR_TRUE); } } } } else { movemailService->CheckForNewMail(urlListener, inbox, this, nsnull); } return NS_OK; }