void nsSVGTextContainerFrame::GetEffectiveXY(nsTArray<float> &aX, nsTArray<float> &aY) { aX.AppendElements(mX); aY.AppendElements(mY); }
void nsSVGTextContainerFrame::GetEffectiveDxDy(nsTArray<float> &aDx, nsTArray<float> &aDy) { aDx.AppendElements(mDx); aDy.AppendElements(mDy); }
void nsHtml5TreeOpStage::MoveOpsAndSpeculativeLoadsTo(nsTArray<nsHtml5TreeOperation>& aOpQueue, nsTArray<nsHtml5SpeculativeLoad>& aSpeculativeLoadQueue) { mozilla::MutexAutoLock autoLock(mMutex); aOpQueue.AppendElements(Move(mOpQueue)); aSpeculativeLoadQueue.AppendElements(Move(mSpeculativeLoadQueue)); }
void HTMLOptionsCollection::GetSupportedNames(nsTArray<nsString>& aNames) { AutoTArray<nsIAtom*, 8> atoms; for (uint32_t i = 0; i < mElements.Length(); ++i) { HTMLOptionElement* content = mElements.ElementAt(i); if (content) { // Note: HasName means the names is exposed on the document, // which is false for options, so we don't check it here. const nsAttrValue* val = content->GetParsedAttr(nsGkAtoms::name); if (val && val->Type() == nsAttrValue::eAtom) { nsIAtom* name = val->GetAtomValue(); if (!atoms.Contains(name)) { atoms.AppendElement(name); } } if (content->HasID()) { nsIAtom* id = content->GetID(); if (!atoms.Contains(id)) { atoms.AppendElement(id); } } } } uint32_t atomsLen = atoms.Length(); nsString* names = aNames.AppendElements(atomsLen); for (uint32_t i = 0; i < atomsLen; ++i) { atoms[i]->ToString(names[i]); } }
nsresult MockMediaResource::GetCachedRanges(nsTArray<MediaByteRange>& aRanges) { aRanges.Clear(); aRanges.AppendElements(mRanges); return NS_OK; }
void Service::getConnections(/* inout */ nsTArray<RefPtr<Connection> >& aConnections) { mRegistrationMutex.AssertNotCurrentThreadOwns(); MutexAutoLock mutex(mRegistrationMutex); aConnections.Clear(); aConnections.AppendElements(mConnections); }
bool CopyArrayBufferViewOrArrayBufferData(const ArrayBufferViewOrArrayBuffer& aBufferOrView, nsTArray<uint8_t>& aOutData) { if (aBufferOrView.IsArrayBuffer()) { const ArrayBuffer& buffer = aBufferOrView.GetAsArrayBuffer(); buffer.ComputeLengthAndData(); aOutData.AppendElements(buffer.Data(), buffer.Length()); } else if (aBufferOrView.IsArrayBufferView()) { const ArrayBufferView& bufferview = aBufferOrView.GetAsArrayBufferView(); bufferview.ComputeLengthAndData(); aOutData.AppendElements(bufferview.Data(), bufferview.Length()); } else { return false; } return true; }
static void AACAudioSpecificConfigToUserData(uint8_t aAACProfileLevelIndication, const uint8_t* aAudioSpecConfig, uint32_t aConfigLength, nsTArray<BYTE>& aOutUserData) { MOZ_ASSERT(aOutUserData.IsEmpty()); // The MF_MT_USER_DATA for AAC is defined here: // http://msdn.microsoft.com/en-us/library/windows/desktop/dd742784%28v=vs.85%29.aspx // // For MFAudioFormat_AAC, MF_MT_USER_DATA contains the portion of // the HEAACWAVEINFO structure that appears after the WAVEFORMATEX // structure (that is, after the wfx member). This is followed by // the AudioSpecificConfig() data, as defined by ISO/IEC 14496-3. // [...] // The length of the AudioSpecificConfig() data is 2 bytes for AAC-LC // or HE-AAC with implicit signaling of SBR/PS. It is more than 2 bytes // for HE-AAC with explicit signaling of SBR/PS. // // The value of audioObjectType as defined in AudioSpecificConfig() // must be 2, indicating AAC-LC. The value of extensionAudioObjectType // must be 5 for SBR or 29 for PS. // // HEAACWAVEINFO structure: // typedef struct heaacwaveinfo_tag { // WAVEFORMATEX wfx; // WORD wPayloadType; // WORD wAudioProfileLevelIndication; // WORD wStructType; // WORD wReserved1; // DWORD dwReserved2; // } const UINT32 heeInfoLen = 4 * sizeof(WORD) + sizeof(DWORD); // The HEAACWAVEINFO must have payload and profile set, // the rest can be all 0x00. BYTE heeInfo[heeInfoLen] = {0}; WORD* w = (WORD*)heeInfo; w[0] = 0x0; // Payload type raw AAC packet w[1] = aAACProfileLevelIndication; aOutUserData.AppendElements(heeInfo, heeInfoLen); aOutUserData.AppendElements(aAudioSpecConfig, aConfigLength); }
void MP4Reader::ExtractCryptoInitData(nsTArray<uint8_t>& aInitData) { MOZ_ASSERT(mCrypto.valid); const nsTArray<mp4_demuxer::PsshInfo>& psshs = mCrypto.pssh; for (uint32_t i = 0; i < psshs.Length(); i++) { aInitData.AppendElements(psshs[i].data); } }
const nsTArray<int>& DummyArray() { static nsTArray<int> sArray; if (sArray.IsEmpty()) { const int data[] = {4, 1, 2, 8}; sArray.AppendElements(data, ArrayLength(data)); } return sArray; }
bool TouchBlockState::GetAllowedTouchBehaviors(nsTArray<TouchBehaviorFlags>& aOutBehaviors) const { if (!mAllowedTouchBehaviorSet) { return false; } aOutBehaviors.AppendElements(mAllowedTouchBehaviors); return true; }
static void GetPluginMimeTypes(const nsTArray<RefPtr<nsPluginElement> >& aPlugins, nsTArray<RefPtr<nsMimeType> >& aMimeTypes) { for (uint32_t i = 0; i < aPlugins.Length(); ++i) { nsPluginElement *plugin = aPlugins[i]; aMimeTypes.AppendElements(plugin->MimeTypes()); } }
void URLSearchParams::GetAll(const nsAString& aName, nsTArray<nsString>& aRetval) { nsTArray<nsString>* array; if (!mSearchParams.Get(aName, &array)) { return; } aRetval.AppendElements(*array); }
nsresult FragmentBuffer::GetCSD(nsTArray<uint8_t>& aCSD) { if (!mCSDFrame) { return NS_ERROR_FAILURE; } aCSD.AppendElements(mCSDFrame->GetFrameData().Elements(), mCSDFrame->GetFrameData().Length()); return NS_OK; }
void TableToArray(const nsTHashtable<nsPtrHashKey<void>>& aTable, nsTArray<void*>& aArray) { uint32_t i = 0; void** elements = aArray.AppendElements(aTable.Count()); for (auto iter = aTable.ConstIter(); !iter.Done(); iter.Next()) { elements[i] = iter.Get()->GetKey(); ++i; } }
void CopyArrayBufferViewOrArrayBufferData(const dom::ArrayBufferViewOrArrayBuffer& aBufferOrView, nsTArray<uint8_t>& aOutData) { ArrayData data = GetArrayBufferViewOrArrayBufferData(aBufferOrView); aOutData.Clear(); if (!data.IsValid()) { return; } aOutData.AppendElements(data.mData, data.mLength); }
void nsPerformance::GetEntries(nsTArray<nsRefPtr<PerformanceEntry> >& retval) { MOZ_ASSERT(NS_IsMainThread()); retval.Clear(); uint32_t count = mEntries.Length(); if (count > mPrimaryBufferSize) { count = mPrimaryBufferSize; } retval.AppendElements(mEntries.Elements(), count); }
void nsDOMWorkerPool::GetWorkers(nsTArray<nsDOMWorker*>& aArray) { mReentrantMonitor.AssertCurrentThreadIn(); NS_ASSERTION(!aArray.Length(), "Should be empty!"); #ifdef DEBUG nsDOMWorker** newWorkers = #endif aArray.AppendElements(mWorkers); NS_WARN_IF_FALSE(newWorkers, "Out of memory!"); }
void ContentParent::GetAll(nsTArray<ContentParent*>& aArray) { aArray.Clear(); if (gNonAppContentParents) { aArray.AppendElements(*gNonAppContentParents); } if (gAppContentParents) { gAppContentParents->EnumerateRead(&AppendToTArray, &aArray); } }
void AndroidGeckoEvent::ReadStringArray(nsTArray<nsString> &array, JNIEnv *jenv, jfieldID field) { jarray jArray = (jarray)jenv->GetObjectField(wrapped_obj, field); jsize length = jenv->GetArrayLength(jArray); jobjectArray jStringArray = (jobjectArray)jArray; nsString *strings = array.AppendElements(length); for (jsize i = 0; i < length; ++i) { jstring javastring = (jstring) jenv->GetObjectArrayElement(jStringArray, i); ReadStringFromJString(strings[i], jenv, javastring); } }
void nsPluginArray::GetSupportedNames(unsigned, nsTArray<nsString>& aRetval) { aRetval.Clear(); if (!AllowPlugins()) { return; } uint32_t len = mPlugins.Length(); nsString* names = aRetval.AppendElements(len); for (uint32_t i = 0; i < len; ++i) { mPlugins[i]->GetName(names[i]); } }
void RuntimeService::GetWorkersForWindow(nsPIDOMWindow* aWindow, nsTArray<WorkerPrivate*>& aWorkers) { AssertIsOnMainThread(); nsTArray<WorkerPrivate*>* workers; if (mWindowMap.Get(aWindow, &workers)) { NS_ASSERTION(!workers->IsEmpty(), "Should have been removed!"); aWorkers.AppendElements(*workers); } else { NS_ASSERTION(aWorkers.IsEmpty(), "Should be empty!"); } }
NS_IMETHODIMP nsUrlClassifierDBServiceWorker::FinishStream() { if (gShuttingDownThread) return NS_ERROR_NOT_INITIALIZED; NS_ENSURE_STATE(mInStream); NS_ENSURE_STATE(mUpdateObserver); mInStream = false; mProtocolParser->FinishHMAC(); if (NS_SUCCEEDED(mProtocolParser->Status())) { if (mProtocolParser->UpdateWait()) { mUpdateWait = mProtocolParser->UpdateWait(); } // XXX: Only allow forwards from the initial update? const nsTArray<ProtocolParser::ForwardedUpdate> &forwards = mProtocolParser->Forwards(); for (uint32 i = 0; i < forwards.Length(); i++) { const ProtocolParser::ForwardedUpdate &forward = forwards[i]; mUpdateObserver->UpdateUrlRequested(forward.url, forward.table, forward.mac); } // Hold on to any TableUpdate objects that were created by the // parser. mTableUpdates.AppendElements(mProtocolParser->GetTableUpdates()); mProtocolParser->ForgetTableUpdates(); } else { mUpdateStatus = mProtocolParser->Status(); } mUpdateObserver->StreamFinished(mProtocolParser->Status(), 0); // Only reset if MAC was OK if (NS_SUCCEEDED(mUpdateStatus)) { if (mProtocolParser->ResetRequested()) { mClassifier->Reset(); } } // Rekey will cause update to fail (can't check MACs) if (mProtocolParser->RekeyRequested()) { mUpdateObserver->RekeyRequested(); } mProtocolParser = nsnull; return NS_OK; }
static void GetColorsForProperty(const uint32_t aParserVariant, nsTArray<nsString>& aArray) { if (aParserVariant & VARIANT_COLOR) { // GetKeywordsForProperty and GetOtherValuesForProperty assume aArray is sorted, // and if aArray is not empty here, then it's not going to be sorted coming out. MOZ_ASSERT(aArray.Length() == 0); size_t size; const char * const *allColorNames = NS_AllColorNames(&size); nsString* utf16Names = aArray.AppendElements(size); for (size_t i = 0; i < size; i++) { CopyASCIItoUTF16(allColorNames[i], utf16Names[i]); } InsertNoDuplicates(aArray, NS_LITERAL_STRING("currentColor")); } return; }
nsresult FragmentBuffer::GetFirstFragment(nsTArray<nsRefPtr<EncodedFrame>>& aFragment, bool aFlush) { // It should be called only if there is a complete fragment in mFragArray. if (mFragArray.Length() <= 1 && !mEOS) { MOZ_ASSERT(false); return NS_ERROR_FAILURE; } if (aFlush) { aFragment.SwapElements(mFragArray.ElementAt(0)); mFragArray.RemoveElementAt(0); } else { aFragment.AppendElements(mFragArray.ElementAt(0)); } return NS_OK; }
void PointerEvent::GetCoalescedEvents(nsTArray<RefPtr<PointerEvent>>& aPointerEvents) { WidgetPointerEvent* widgetEvent = mEvent->AsPointerEvent(); if (mCoalescedEvents.IsEmpty() && widgetEvent && widgetEvent->mCoalescedWidgetEvents && !widgetEvent->mCoalescedWidgetEvents->mEvents.IsEmpty()) { for (WidgetPointerEvent& event : widgetEvent->mCoalescedWidgetEvents->mEvents) { RefPtr<PointerEvent> domEvent = NS_NewDOMPointerEvent(nullptr, nullptr, &event); // The dom event is derived from an OS generated widget event. Setup // mWidget and mPresContext since they are necessary to calculate // offsetX / offsetY. domEvent->mEvent->AsGUIEvent()->mWidget = widgetEvent->mWidget; domEvent->mPresContext = mPresContext; // The coalesced widget mouse events shouldn't have been dispatched. MOZ_ASSERT(!domEvent->mEvent->mTarget); // The event target should be the same as the dispatched event's target. domEvent->mEvent->mTarget = mEvent->mTarget; // JS could hold reference to dom events. We have to ask dom event to // duplicate its private data to avoid the widget event is destroyed. domEvent->DuplicatePrivateData(); // Setup mPresContext again after DuplicatePrivateData since it clears // mPresContext. domEvent->mPresContext = mPresContext; mCoalescedEvents.AppendElement(domEvent); } } if (mEvent->mTarget) { for (RefPtr<PointerEvent>& pointerEvent : mCoalescedEvents) { // Only set event target when it's null. if (!pointerEvent->mEvent->mTarget) { pointerEvent->mEvent->mTarget = mEvent->mTarget; } } } aPointerEvents.AppendElements(mCoalescedEvents); }
void AudioNodeStream::UpMixDownMixChunk(const AudioChunk* aChunk, uint32_t aOutputChannelCount, nsTArray<const void*>& aOutputChannels, nsTArray<float>& aDownmixBuffer) { static const float silenceChannel[WEBAUDIO_BLOCK_SIZE] = {0.f}; aOutputChannels.AppendElements(aChunk->mChannelData); if (aOutputChannels.Length() < aOutputChannelCount) { if (mChannelInterpretation == ChannelInterpretation::Speakers) { AudioChannelsUpMix(&aOutputChannels, aOutputChannelCount, nullptr); NS_ASSERTION(aOutputChannelCount == aOutputChannels.Length(), "We called GetAudioChannelsSuperset to avoid this"); } else { // Fill up the remaining aOutputChannels by zeros for (uint32_t j = aOutputChannels.Length(); j < aOutputChannelCount; ++j) { aOutputChannels.AppendElement(silenceChannel); } } } else if (aOutputChannels.Length() > aOutputChannelCount) { if (mChannelInterpretation == ChannelInterpretation::Speakers) { nsAutoTArray<float*,GUESS_AUDIO_CHANNELS> outputChannels; outputChannels.SetLength(aOutputChannelCount); aDownmixBuffer.SetLength(aOutputChannelCount * WEBAUDIO_BLOCK_SIZE); for (uint32_t j = 0; j < aOutputChannelCount; ++j) { outputChannels[j] = &aDownmixBuffer[j * WEBAUDIO_BLOCK_SIZE]; } AudioChannelsDownMix(aOutputChannels, outputChannels.Elements(), aOutputChannelCount, WEBAUDIO_BLOCK_SIZE); aOutputChannels.SetLength(aOutputChannelCount); for (uint32_t j = 0; j < aOutputChannels.Length(); ++j) { aOutputChannels[j] = outputChannels[j]; } } else { // Drop the remaining aOutputChannels aOutputChannels.RemoveElementsAt(aOutputChannelCount, aOutputChannels.Length() - aOutputChannelCount); } } }
void ServiceWorkerRegistrar::GetRegistrations( nsTArray<ServiceWorkerRegistrationData>& aValues) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aValues.IsEmpty()); // If we don't have the profile directory, profile is not started yet (and // probably we are in a utest). if (!mProfileDir) { return; } // We care just about the first execution because this can be blocked by // loading data from disk. static bool firstTime = true; TimeStamp startTime; if (firstTime) { startTime = TimeStamp::NowLoRes(); } { MonitorAutoLock lock(mMonitor); // Waiting for data loaded. mMonitor.AssertCurrentThreadOwns(); while (!mDataLoaded) { mMonitor.Wait(); } aValues.AppendElements(mData); } if (firstTime) { firstTime = false; Telemetry::AccumulateTimeDelta( Telemetry::SERVICE_WORKER_REGISTRATION_LOADING, startTime); } }
bool gfxFontFeatureValueSet::GetFontFeatureValuesFor(const nsAString& aFamily, uint32_t aVariantProperty, const nsAString& aName, nsTArray<uint32_t>& aValues) { nsAutoString family(aFamily); ToLowerCase(family); FeatureValueHashKey key(family, aVariantProperty, aName); aValues.Clear(); FeatureValueHashEntry *entry = mFontFeatureValues.GetEntry(key); if (entry) { NS_ASSERTION(entry->mValues.Length() > 0, "null array of font feature values"); aValues.AppendElements(entry->mValues); return true; } return false; }
// Populate an array with the given number of bytes. Data is lorem ipsum // random text, but deterministic across multiple calls. void CreateData(uint32_t aNumBytes, nsTArray<char>& aDataOut) { static const char data[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec egestas " "purus eu condimentum iaculis. In accumsan leo eget odio porttitor, non " "rhoncus nulla vestibulum. Etiam lacinia consectetur nisl nec " "sollicitudin. Sed fringilla accumsan diam, pulvinar varius massa. Duis " "mollis dignissim felis, eget tempus nisi tristique ut. Fusce euismod, " "lectus non lacinia tempor, tellus diam suscipit quam, eget hendrerit " "lacus nunc fringilla ante. Sed ultrices massa vitae risus molestie, ut " "finibus quam laoreet nullam."; static const uint32_t dataLength = sizeof(data) - 1; aDataOut.SetCapacity(aNumBytes); while (aNumBytes > 0) { uint32_t amount = std::min(dataLength, aNumBytes); aDataOut.AppendElements(data, amount); aNumBytes -= amount; } }