void QNetworkReplyHandler::finish() { ASSERT(m_replyWrapper && m_replyWrapper->reply() && !wasAborted()); ResourceHandleClient* client = m_resourceHandle->client(); if (!client) { m_replyWrapper = 0; return; } if (m_replyWrapper->wasRedirected()) { m_replyWrapper = 0; m_queue.push(&QNetworkReplyHandler::start); return; } if (!m_replyWrapper->reply()->error() || shouldIgnoreHttpError(m_replyWrapper->reply(), m_replyWrapper->responseContainsData())) client->didFinishLoading(m_resourceHandle, 0); else { QUrl url = m_replyWrapper->reply()->url(); int httpStatusCode = m_replyWrapper->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (httpStatusCode) { ResourceError error("HTTP", httpStatusCode, url.toString(), m_replyWrapper->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()); client->didFail(m_resourceHandle, error); } else { ResourceError error("QtNetwork", m_replyWrapper->reply()->error(), url.toString(), m_replyWrapper->reply()->errorString()); client->didFail(m_resourceHandle, error); } } m_replyWrapper = 0; }
void QNetworkReplyHandler::sendResponseIfNeeded() { ASSERT(m_replyWrapper && m_replyWrapper->reply() && !wasAborted()); if (m_replyWrapper->reply()->error() && m_replyWrapper->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).isNull()) return; ResourceHandleClient* client = m_resourceHandle->client(); if (!client) return; WTF::String mimeType = m_replyWrapper->mimeType(); if (mimeType.isEmpty()) { // let's try to guess from the extension mimeType = MIMETypeRegistry::getMIMETypeForPath(m_replyWrapper->reply()->url().path()); } KURL url(m_replyWrapper->reply()->url()); ResourceResponse response(url, mimeType.lower(), m_replyWrapper->reply()->header(QNetworkRequest::ContentLengthHeader).toLongLong(), m_replyWrapper->encoding(), String()); if (url.isLocalFile()) { client->didReceiveResponse(m_resourceHandle, response); return; } // The status code is equal to 0 for protocols not in the HTTP family. int statusCode = m_replyWrapper->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (url.protocolIsInHTTPFamily()) { String suggestedFilename = filenameFromHTTPContentDisposition(QString::fromLatin1(m_replyWrapper->reply()->rawHeader("Content-Disposition"))); if (!suggestedFilename.isEmpty()) response.setSuggestedFilename(suggestedFilename); else { Vector<String> extensions = MIMETypeRegistry::getExtensionsForMIMEType(mimeType); if (extensions.isEmpty()) response.setSuggestedFilename(url.lastPathComponent()); else { // If the suffix doesn't match the MIME type, correct the suffix. QString filename = url.lastPathComponent(); const String suffix = QMimeDatabase().suffixForFileName(filename); if (!extensions.contains(suffix)) { filename.chop(suffix.length()); filename += MIMETypeRegistry::getPreferredExtensionForMIMEType(mimeType); } response.setSuggestedFilename(filename); } } response.setHTTPStatusCode(statusCode); response.setHTTPStatusText(m_replyWrapper->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toByteArray().constData()); // Add remaining headers. foreach (const QNetworkReply::RawHeaderPair& pair, m_replyWrapper->reply()->rawHeaderPairs()) response.setHTTPHeaderField(QString::fromLatin1(pair.first), QString::fromLatin1(pair.second)); }
bool LLImageWorker::doWork(S32 param) { bool decoded = false; if(mDecodedImage.isNull()) { if (!mFormattedImage->updateData()) { mDecodedType = -2; // failed return true; } if (mDiscardLevel >= 0) { mFormattedImage->setDiscardLevel(mDiscardLevel); } if (!(mFormattedImage->getWidth() * mFormattedImage->getHeight() * mFormattedImage->getComponents())) { decoded = true; // failed } else { S32 nc = param ? 1 : mFormattedImage->getComponents(); mDecodedImage = new LLImageRaw(mFormattedImage->getWidth(), mFormattedImage->getHeight(), nc); } } if (!decoded) { if (param == 0) { // Decode primary channels decoded = mFormattedImage->decode(mDecodedImage, .1f); // 1ms } else { // Decode aux channel decoded = mFormattedImage->decode(mDecodedImage, .1f, param, param); // 1ms } } if (decoded) { // Call the callback immediately; endWork doesn't get called until ckeckWork if (mResponder.notNull()) { bool success = (!wasAborted() && mDecodedImage.notNull() && mDecodedImage->getDataSize() != 0); mResponder->completed(success); } } return decoded; }
void QNetworkReplyHandler::finish() { ASSERT(m_replyWrapper && m_replyWrapper->reply() && !wasAborted()); ResourceHandleClient* client = m_resourceHandle->client(); if (!client) { m_replyWrapper = nullptr; return; } if (m_replyWrapper->wasRedirected()) { m_replyWrapper = nullptr; m_queue.push(&QNetworkReplyHandler::start); return; } if (!m_replyWrapper->reply()->error() || shouldIgnoreHttpError(m_replyWrapper->reply(), m_replyWrapper->responseContainsData())) client->didFinishLoading(m_resourceHandle, 0); else client->didFail(m_resourceHandle, errorForReply(m_replyWrapper->reply())); m_replyWrapper = nullptr; }
void QNetworkReplyHandler::timeout() { if (!m_replyWrapper || wasAborted()) return; // The request is already finished, but is probably just waiting in the queue to get processed. // In this case we ignore the timeout and proceed as normal. if (m_replyWrapper->isFinished()) return; ResourceHandleClient* client = m_resourceHandle->client(); if (!client) { m_replyWrapper.clear(); return; } ASSERT(m_replyWrapper->reply()); ResourceError timeoutError("QtNetwork", QNetworkReply::TimeoutError, m_replyWrapper->reply()->url().toString(), "Request timed out"); timeoutError.setIsTimeout(true); client->didFail(m_resourceHandle, timeoutError); m_replyWrapper.clear(); }
void FSTBaker::handleModelBakerAborted() { handleModelBakerEnded(); if (!wasAborted()) { setWasAborted(true); } }