Example #1
0
void RejectedPromises::processQueueNow(PassOwnPtrWillBeRawPtr<MessageQueue> queue)
{
    // Remove collected handlers.
    for (size_t i = 0; i < m_reportedAsErrors.size();) {
        if (m_reportedAsErrors.at(i)->isCollected())
            m_reportedAsErrors.remove(i);
        else
            ++i;
    }

    while (!queue->isEmpty()) {
        OwnPtrWillBeRawPtr<Message> message = queue->takeFirst();
        if (!message->hasHandler()) {
            message->report();
            message->makePromiseWeak();
            m_reportedAsErrors.append(message.release());
            if (m_reportedAsErrors.size() > maxReportedHandlersPendingResolution)
                m_reportedAsErrors.remove(0, maxReportedHandlersPendingResolution / 10);
        }
    }
}