本文整理汇总了C++中nsTArray::Contains方法的典型用法代码示例。如果您正苦于以下问题:C++ nsTArray::Contains方法的具体用法?C++ nsTArray::Contains怎么用?C++ nsTArray::Contains使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nsTArray
的用法示例。
在下文中一共展示了nsTArray::Contains方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetSessionInfo
NS_IMETHODIMP
PresentationService::ReconnectSession(const nsTArray<nsString>& aUrls,
const nsAString& aSessionId,
uint8_t aRole,
nsIPresentationServiceCallback* aCallback)
{
PRES_DEBUG("%s:id[%s]\n", __func__, NS_ConvertUTF16toUTF8(aSessionId).get());
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(!aSessionId.IsEmpty());
MOZ_ASSERT(aCallback);
MOZ_ASSERT(!aUrls.IsEmpty());
if (aRole != nsIPresentationService::ROLE_CONTROLLER) {
MOZ_ASSERT(false, "Only controller can call ReconnectSession.");
return NS_ERROR_INVALID_ARG;
}
if (NS_WARN_IF(!aCallback)) {
return NS_ERROR_INVALID_ARG;
}
RefPtr<PresentationSessionInfo> info = GetSessionInfo(aSessionId, aRole);
if (NS_WARN_IF(!info)) {
return aCallback->NotifyError(NS_ERROR_DOM_NOT_FOUND_ERR);
}
if (NS_WARN_IF(!aUrls.Contains(info->GetUrl()))) {
return aCallback->NotifyError(NS_ERROR_DOM_NOT_FOUND_ERR);
}
return static_cast<PresentationControllingInfo*>(info.get())->Reconnect(aCallback);
}
示例2: strFamily
nsresult
gfxFontconfigUtils::GetFontListInternal(nsTArray<nsCString>& aListOfFonts,
nsIAtom *aLangGroup)
{
FcPattern *pat = nullptr;
FcObjectSet *os = nullptr;
FcFontSet *fs = nullptr;
nsresult rv = NS_ERROR_FAILURE;
aListOfFonts.Clear();
pat = FcPatternCreate();
if (!pat)
goto end;
os = FcObjectSetBuild(FC_FAMILY, nullptr);
if (!os)
goto end;
// take the pattern and add the lang group to it
if (aLangGroup) {
AddLangGroup(pat, aLangGroup);
}
fs = FcFontList(nullptr, pat, os);
if (!fs)
goto end;
for (int i = 0; i < fs->nfont; i++) {
char *family;
if (FcPatternGetString(fs->fonts[i], FC_FAMILY, 0,
(FcChar8 **) &family) != FcResultMatch)
{
continue;
}
// Remove duplicates...
nsAutoCString strFamily(family);
if (aListOfFonts.Contains(strFamily))
continue;
aListOfFonts.AppendElement(strFamily);
}
rv = NS_OK;
end:
if (NS_FAILED(rv))
aListOfFonts.Clear();
if (pat)
FcPatternDestroy(pat);
if (os)
FcObjectSetDestroy(os);
if (fs)
FcFontSetDestroy(fs);
return rv;
}
示例3: sizeof
void
DBusWatcher::HandleWatchAdd()
{
int fd;
ssize_t res = TEMP_FAILURE_RETRY(read(mControlFdR.get(), &fd, sizeof(fd)));
if (res < 0) {
LOG("Cannot read DBus watch add descriptor data from socket!\n");
return;
}
unsigned int flags;
res = TEMP_FAILURE_RETRY(read(mControlFdR.get(), &flags, sizeof(flags)));
if (res < 0) {
LOG("Cannot read DBus watch add flag data from socket!\n");
return;
}
DBusWatch* watch;
res = TEMP_FAILURE_RETRY(read(mControlFdR.get(), &watch, sizeof(watch)));
if (res < 0) {
LOG("Cannot read DBus watch add watch data from socket!\n");
return;
}
struct pollfd p = {
fd, // .fd
DBusFlagsToUnixEvents(flags), // .events
0 // .revents
};
if (mPollData.Contains(p, PollFdComparator())) {
return;
}
mPollData.AppendElement(p);
mWatchData.AppendElement(watch);
}
示例4: AssertPresShellsAndContextsSane
static void
AssertPresShellsAndContextsSane(nsPrintObject* aPO,
nsTArray<nsIPresShell*>& aPresShells,
nsTArray<nsPresContext*>& aPresContexts)
{
if (aPO->mPresShell) {
if (aPresShells.Contains(aPO->mPresShell)) {
ASSERT_AND_NOTE("duplicate pres shells in print object tree");
} else {
aPresShells.AppendElement(aPO->mPresShell);
}
}
if (aPO->mPresContext) {
if (aPresContexts.Contains(aPO->mPresContext)) {
ASSERT_AND_NOTE("duplicate pres contexts in print object tree");
} else {
aPresContexts.AppendElement(aPO->mPresContext);
}
}
if (aPO->mPresShell && !aPO->mPresContext) {
ASSERT_AND_NOTE("print object has pres shell but no pres context");
}
if (!aPO->mPresShell && aPO->mPresContext) {
ASSERT_AND_NOTE("print object has pres context but no pres shell");
}
if (aPO->mPresContext && aPO->mPresContext->GetPresShell() != aPO->mPresShell) {
ASSERT_AND_NOTE("print object has mismatching pres shell and pres context");
}
if (aPO->mPresContext && !aPO->mPresContext->GetPresShell()) {
ASSERT_AND_NOTE("mPresShell->GetPresShell() is null");
}
for (uint32_t i = 0; i < aPO->mKids.Length(); i++) {
AssertPresShellsAndContextsSane(aPO->mKids[i], aPresShells, aPresContexts);
}
}
示例5: NS_DispatchToCurrentThread
NS_IMETHODIMP
PresentationAvailability::NotifyAvailableChange(
const nsTArray<nsString>& aAvailabilityUrls, bool aIsAvailable) {
bool available = false;
for (uint32_t i = 0; i < mUrls.Length(); ++i) {
if (aAvailabilityUrls.Contains(mUrls[i])) {
mAvailabilityOfUrl[i] = aIsAvailable;
}
available |= mAvailabilityOfUrl[i];
}
return NS_DispatchToCurrentThread(NewRunnableMethod<bool>(
"dom::PresentationAvailability::UpdateAvailabilityAndDispatchEvent", this,
&PresentationAvailability::UpdateAvailabilityAndDispatchEvent,
available));
}
示例6: while
void
nsDOMTokenList::RemoveInternal(const nsAttrValue* aAttr,
const nsTArray<nsString>& aTokens)
{
MOZ_ASSERT(aAttr, "Need an attribute");
nsAutoString input;
aAttr->ToString(input);
nsAString::const_iterator copyStart, tokenStart, iter, end;
input.BeginReading(iter);
input.EndReading(end);
copyStart = iter;
nsAutoString output;
bool lastTokenRemoved = false;
while (iter != end) {
// skip whitespace.
while (iter != end && nsContentUtils::IsHTMLWhitespace(*iter)) {
++iter;
}
if (iter == end) {
// At this point we're sure the last seen token (if any) wasn't to be
// removed. So the trailing spaces will need to be kept.
MOZ_ASSERT(!lastTokenRemoved, "How did this happen?");
output.Append(Substring(copyStart, end));
break;
}
tokenStart = iter;
do {
++iter;
} while (iter != end && !nsContentUtils::IsHTMLWhitespace(*iter));
if (aTokens.Contains(Substring(tokenStart, iter))) {
// Skip whitespace after the token, it will be collapsed.
while (iter != end && nsContentUtils::IsHTMLWhitespace(*iter)) {
++iter;
}
copyStart = iter;
lastTokenRemoved = true;
} else {
if (lastTokenRemoved && !output.IsEmpty()) {
MOZ_ASSERT(!nsContentUtils::IsHTMLWhitespace(output.Last()),
"Invalid last output token");
output.Append(char16_t(' '));
}
lastTokenRemoved = false;
output.Append(Substring(copyStart, iter));
copyStart = iter;
}
}
mElement->SetAttr(kNameSpaceID_None, mAttrAtom, output, true);
}
示例7: while
uint32_t
GridLines::AppendRemovedAutoFits(const ComputedGridTrackInfo* aTrackInfo,
const ComputedGridLineInfo* aLineInfo,
nscoord aLastTrackEdge,
uint32_t& aRepeatIndex,
uint32_t aNumRepeatTracks,
nsTArray<nsString>& aLineNames)
{
// Check to see if lineNames contains ALL of the before line names.
bool alreadyHasBeforeLineNames = true;
for (const auto& beforeName : aLineInfo->mNamesBefore) {
if (!aLineNames.Contains(beforeName)) {
alreadyHasBeforeLineNames = false;
break;
}
}
bool extractedExplicitLineNames = false;
nsTArray<nsString> explicitLineNames;
uint32_t linesAdded = 0;
while (aRepeatIndex < aNumRepeatTracks &&
aTrackInfo->mRemovedRepeatTracks[aRepeatIndex]) {
// If this is not the very first call to this function, and if we
// haven't already added a line this call, pull all the explicit
// names to pass along to the next line that will be added after
// this function completes.
if (aRepeatIndex > 0 &&
linesAdded == 0) {
// Find the names that didn't match the before or after names,
// and extract them.
for (const auto& name : aLineNames) {
if (!aLineInfo->mNamesBefore.Contains(name) &&
!aLineInfo->mNamesAfter.Contains(name)) {
explicitLineNames.AppendElement(name);
}
}
for (const auto& extractedName : explicitLineNames) {
aLineNames.RemoveElement(extractedName);
}
extractedExplicitLineNames = true;
}
// If this is the second or later time through, or didn't already
// have before names, add them.
if (linesAdded > 0 || !alreadyHasBeforeLineNames) {
aLineNames.AppendElements(aLineInfo->mNamesBefore);
}
RefPtr<GridLine> line = new GridLine(this);
mLines.AppendElement(line);
line->SetLineValues(
aLineNames,
nsPresContext::AppUnitsToDoubleCSSPixels(aLastTrackEdge),
nsPresContext::AppUnitsToDoubleCSSPixels(0),
aTrackInfo->mRepeatFirstTrack + aRepeatIndex + 1,
GridDeclaration::Explicit
);
// No matter what, the next line should have the after names associated
// with it. If we go through the loop again, the before names will also
// be added.
aLineNames = aLineInfo->mNamesAfter;
aRepeatIndex++;
linesAdded++;
}
aRepeatIndex++;
if (extractedExplicitLineNames) {
// Pass on the explicit names we saved to the next explicit line.
aLineNames.AppendElements(explicitLineNames);
}
if (alreadyHasBeforeLineNames && linesAdded > 0) {
// If we started with before names, pass them on to the next explicit
// line.
aLineNames.AppendElements(aLineInfo->mNamesBefore);
}
return linesAdded;
}