void BluetoothPairingListener::TryListeningToBluetoothSignal() { if (mHasListenedToSignal) { // We've handled prior pending pairing requests return; } // Listen to bluetooth signal only if all pairing event handlers have been // attached. All pending pairing requests queued in BluetoothService would // be fired when pairing listener starts listening to bluetooth signal. if (!HasListenersFor(nsGkAtoms::ondisplaypasskeyreq) || !HasListenersFor(nsGkAtoms::onenterpincodereq) || !HasListenersFor(nsGkAtoms::onpairingconfirmationreq) || !HasListenersFor(nsGkAtoms::onpairingconsentreq)) { BT_LOGR("Pairing listener is not ready to handle pairing requests!"); return; } // Start listening to bluetooth signal to handle pairing requests BluetoothService* bs = BluetoothService::Get(); NS_ENSURE_TRUE_VOID(bs); bs->RegisterBluetoothSignalHandler(NS_LITERAL_STRING(KEY_PAIRING_LISTENER), this); mHasListenedToSignal = true; }
NS_IMETHOD Run() override { auto engine = static_cast<ScriptProcessorNodeEngine*>(mStream->Engine()); AudioChunk output; output.SetNull(engine->mBufferSize); { auto node = static_cast<ScriptProcessorNode*> (engine->NodeMainThread()); if (!node) { return NS_OK; } if (node->HasListenersFor(nsGkAtoms::onaudioprocess)) { DispatchAudioProcessEvent(node, &output); } // The node may have been destroyed during event dispatch. } // Append it to our output buffer queue engine->GetSharedBuffers()->FinishProducingOutputBuffer(output); return NS_OK; }
void BroadcastChannel::UpdateMustKeepAlive() { bool toKeepAlive = HasListenersFor(NS_LITERAL_STRING("message")); if (toKeepAlive == mIsKeptAlive) { return; } mIsKeptAlive = toKeepAlive; if (toKeepAlive) { AddRef(); } else { Release(); } }
bool EventListenerManager::HasListenersFor(const nsAString& aEventName) { if (mIsMainThreadELM) { nsCOMPtr<nsIAtom> atom = do_GetAtom(NS_LITERAL_STRING("on") + aEventName); return HasListenersFor(atom); } uint32_t count = mListeners.Length(); for (uint32_t i = 0; i < count; ++i) { Listener* listener = &mListeners.ElementAt(i); if (listener->mTypeString == aEventName) { return true; } } return false; }
void ScriptProcessorNode::UpdateConnectedStatus() { bool isConnected = mHasPhantomInput || !(OutputNodes().IsEmpty() && OutputParams().IsEmpty() && InputNodes().IsEmpty()); // Events are queued even when there is no listener because a listener // may be added while events are in the queue. SendInt32ParameterToStream(ScriptProcessorNodeEngine::IS_CONNECTED, isConnected); if (isConnected && HasListenersFor(nsGkAtoms::onaudioprocess)) { MarkActive(); } else { MarkInactive(); } }
bool MediaQueryList::HasListeners() { return HasListenersFor(ONCHANGE_STRING); }
bool EventListenerManager::HasListenersFor(const nsAString& aEventName) { nsCOMPtr<nsIAtom> atom = do_GetAtom(NS_LITERAL_STRING("on") + aEventName); return HasListenersFor(atom); }