void gfxPlatformFontList::GetFontList(nsIAtom *aLangGroup, const nsACString& aGenericFamily, nsTArray<nsString>& aListOfFonts) { for (auto iter = mFontFamilies.Iter(); !iter.Done(); iter.Next()) { nsRefPtr<gfxFontFamily>& family = iter.Data(); // use the first variation for now. This data should be the same // for all the variations and should probably be moved up to // the Family gfxFontStyle style; style.language = aLangGroup; bool needsBold; nsRefPtr<gfxFontEntry> fontEntry = family->FindFontForStyle(style, needsBold); NS_ASSERTION(fontEntry, "couldn't find any font entry in family"); if (!fontEntry) { continue; } /* skip symbol fonts */ if (fontEntry->IsSymbolFont()) { continue; } if (fontEntry->SupportsLangGroup(aLangGroup) && fontEntry->MatchesGenericFamily(aGenericFamily)) { nsAutoString localizedFamilyName; family->LocalizedName(localizedFamilyName); aListOfFonts.AppendElement(localizedFamilyName); } } aListOfFonts.Sort(); aListOfFonts.Compact(); }
void gfxPlatformFontList::GetFontList(nsIAtom *aLangGroup, const nsACString& aGenericFamily, nsTArray<nsString>& aListOfFonts) { FontListData data(aLangGroup, aGenericFamily, aListOfFonts); mFontFamilies.Enumerate(gfxPlatformFontList::HashEnumFuncForFamilies, &data); aListOfFonts.Sort(); aListOfFonts.Compact(); }
nsresult gfxAndroidPlatform::GetFontList(nsIAtom *aLangGroup, const nsACString& aGenericFamily, nsTArray<nsString>& aListOfFonts) { FontListData data(aLangGroup, aGenericFamily, aListOfFonts); mFonts.Enumerate(FontListHashEnumFunc, &data); aListOfFonts.Sort(); aListOfFonts.Compact(); return NS_OK; }
nsresult gfxFontconfigUtils::GetFontList(nsIAtom *aLangGroup, const nsACString& aGenericFamily, nsTArray<nsString>& aListOfFonts) { aListOfFonts.Clear(); nsTArray<nsCString> fonts; nsresult rv = GetFontListInternal(fonts, aLangGroup); if (NS_FAILED(rv)) return rv; for (uint32_t i = 0; i < fonts.Length(); ++i) { aListOfFonts.AppendElement(NS_ConvertUTF8toUTF16(fonts[i])); } aListOfFonts.Sort(); int32_t serif = 0, sansSerif = 0, monospace = 0; // Fontconfig supports 3 generic fonts, "serif", "sans-serif", and // "monospace", slightly different from CSS's 5. if (aGenericFamily.IsEmpty()) serif = sansSerif = monospace = 1; else if (aGenericFamily.LowerCaseEqualsLiteral("serif")) serif = 1; else if (aGenericFamily.LowerCaseEqualsLiteral("sans-serif")) sansSerif = 1; else if (aGenericFamily.LowerCaseEqualsLiteral("monospace")) monospace = 1; else if (aGenericFamily.LowerCaseEqualsLiteral("cursive") || aGenericFamily.LowerCaseEqualsLiteral("fantasy")) serif = sansSerif = 1; else NS_NOTREACHED("unexpected CSS generic font family"); // The first in the list becomes the default in // FontBuilder.readFontSelection() if the preference-selected font is not // available, so put system configured defaults first. if (monospace) aListOfFonts.InsertElementAt(0, NS_LITERAL_STRING("monospace")); if (sansSerif) aListOfFonts.InsertElementAt(0, NS_LITERAL_STRING("sans-serif")); if (serif) aListOfFonts.InsertElementAt(0, NS_LITERAL_STRING("serif")); return NS_OK; }
void nsPluginArray::GetMimeTypes(nsTArray<RefPtr<nsMimeType>>& aMimeTypes) { aMimeTypes.Clear(); if (!AllowPlugins()) { return; } EnsurePlugins(); GetPluginMimeTypes(mPlugins, aMimeTypes); // Alphabetize the enumeration order of non-hidden MIME types to reduce // fingerprintable entropy based on plugins' installation file times. aMimeTypes.Sort(); }
/* virtual */ void FontFace::Entry::GetUserFontSets(nsTArray<gfxUserFontSet*>& aResult) { aResult.Clear(); for (FontFace* f : mFontFaces) { if (f->mInFontFaceSet) { aResult.AppendElement(f->mFontFaceSet->GetUserFontSet()); } for (FontFaceSet* s : f->mOtherFontFaceSets) { aResult.AppendElement(s->GetUserFontSet()); } } // Remove duplicates. aResult.Sort(); auto it = std::unique(aResult.begin(), aResult.end()); aResult.TruncateLength(it - aResult.begin()); }
nsresult nsAutoSyncState::SortQueueBasedOnStrategy(nsTArray<nsMsgKey> &aQueue) { nsresult rv; nsCOMPtr <nsIMsgFolder> folder = do_QueryReferent(mOwnerFolder, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIMsgDatabase> database; rv = folder->GetMsgDatabase(getter_AddRefs(database)); if (!database) return NS_ERROR_FAILURE; nsCOMPtr<nsIAutoSyncManager> autoSyncMgr = do_GetService(NS_AUTOSYNCMANAGER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIAutoSyncMsgStrategy> msgStrategy; rv = autoSyncMgr->GetMsgStrategy(getter_AddRefs(msgStrategy)); NS_ENSURE_SUCCESS(rv, rv); MsgStrategyComparatorAdaptor strategyComp(msgStrategy, folder, database); aQueue.Sort(strategyComp); return rv; }