/* readonly attribute long uriHash; */ NS_IMETHODIMP JumpListLink::GetUriHash(nsACString& aUriHash) { if (!mURI) return NS_ERROR_NOT_AVAILABLE; return HashURI(mURI, aUriHash); }
/* boolean compareHash(in nsIURI uri); */ NS_IMETHODIMP JumpListLink::CompareHash(nsIURI *aUri, PRBool *aResult) { nsresult rv; if (!mURI) { *aResult = !aUri; return NS_OK; } NS_ENSURE_ARG_POINTER(aUri); nsCAutoString hash1, hash2; rv = HashURI(mURI, hash1); NS_ENSURE_SUCCESS(rv, rv); rv = HashURI(aUri, hash2); NS_ENSURE_SUCCESS(rv, rv); *aResult = hash1.Equals(hash2); return NS_OK; }
// (static) Obtains the ICO file for the favicon at page aFaviconPageURI // If successful, the file path on disk is in the format: // <ProfLDS>\jumpListCache\<hash(aFaviconPageURI)>.ico nsresult FaviconHelper::GetOutputIconPath(nsCOMPtr<nsIURI> aFaviconPageURI, nsCOMPtr<nsIFile> &aICOFile, bool aURLShortcut) { // Hash the input URI and replace any / with _ nsAutoCString inputURIHash; nsCOMPtr<nsICryptoHash> cryptoHash; nsresult rv = HashURI(cryptoHash, aFaviconPageURI, inputURIHash); NS_ENSURE_SUCCESS(rv, rv); char* cur = inputURIHash.BeginWriting(); char* end = inputURIHash.EndWriting(); for (; cur < end; ++cur) { if ('/' == *cur) { *cur = '_'; } } // Obtain the local profile directory and construct the output icon file path rv = NS_GetSpecialDirectory("ProfLDS", getter_AddRefs(aICOFile)); NS_ENSURE_SUCCESS(rv, rv); if (!aURLShortcut) rv = aICOFile->AppendNative(nsDependentCString(kJumpListCacheDir)); else rv = aICOFile->AppendNative(nsDependentCString(kShortcutCacheDir)); NS_ENSURE_SUCCESS(rv, rv); // Try to create the directory if it's not there yet rv = aICOFile->Create(nsIFile::DIRECTORY_TYPE, 0777); if (NS_FAILED(rv) && rv != NS_ERROR_FILE_ALREADY_EXISTS) { return rv; } // Append the icon extension inputURIHash.Append(".ico"); rv = aICOFile->AppendNative(inputURIHash); return rv; }