mirror of https://github.com/vitalif/phantomjs
Make QNetworkReplyHandler deliver content asynchronously
when its load type is set to SynchronousLoad. Issue #11338: https://github.com/ariya/phantomjs/issues/11338 Upstream bug: https://bugs.webkit.org/show_bug.cgi?id=628081.x
parent
fa238856f9
commit
639e8c85b2
|
@ -382,8 +382,6 @@ void NetworkAccessManager::handleFinished(QNetworkReply *reply, const QVariant &
|
|||
m_started.remove(reply);
|
||||
|
||||
emit resourceReceived(data);
|
||||
|
||||
reply->deleteLater();
|
||||
}
|
||||
|
||||
void NetworkAccessManager::handleSslErrors(const QList<QSslError> &errors)
|
||||
|
|
|
@ -178,10 +178,13 @@ void QNetworkReplyHandlerCallQueue::unlock()
|
|||
flush();
|
||||
}
|
||||
|
||||
void QNetworkReplyHandlerCallQueue::setDeferSignals(bool defer)
|
||||
void QNetworkReplyHandlerCallQueue::setDeferSignals(bool defer, bool sync)
|
||||
{
|
||||
m_deferSignals = defer;
|
||||
flush();
|
||||
if (sync)
|
||||
flush();
|
||||
else
|
||||
QMetaObject::invokeMethod(this, "flush", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void QNetworkReplyHandlerCallQueue::flush()
|
||||
|
@ -238,7 +241,6 @@ QNetworkReply* QNetworkReplyWrapper::release()
|
|||
m_reply = 0;
|
||||
m_sniffer = 0;
|
||||
|
||||
reply->setParent(0);
|
||||
return reply;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,11 +40,12 @@ class ResourceRequest;
|
|||
class ResourceResponse;
|
||||
class QNetworkReplyHandler;
|
||||
|
||||
class QNetworkReplyHandlerCallQueue {
|
||||
class QNetworkReplyHandlerCallQueue : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
QNetworkReplyHandlerCallQueue(QNetworkReplyHandler*, bool deferSignals);
|
||||
bool deferSignals() const { return m_deferSignals; }
|
||||
void setDeferSignals(bool);
|
||||
void setDeferSignals(bool, bool sync = false);
|
||||
|
||||
typedef void (QNetworkReplyHandler::*EnqueuedCall)();
|
||||
void push(EnqueuedCall method);
|
||||
|
@ -59,7 +60,7 @@ private:
|
|||
bool m_flushing;
|
||||
QList<EnqueuedCall> m_enqueuedCalls;
|
||||
|
||||
void flush();
|
||||
Q_INVOKABLE void flush();
|
||||
};
|
||||
|
||||
class QNetworkReplyWrapper : public QObject {
|
||||
|
@ -120,7 +121,7 @@ public:
|
|||
};
|
||||
|
||||
QNetworkReplyHandler(ResourceHandle*, LoadType, bool deferred = false);
|
||||
void setLoadingDeferred(bool deferred) { m_queue.setDeferSignals(deferred); }
|
||||
void setLoadingDeferred(bool deferred) { m_queue.setDeferSignals(deferred, m_loadType == SynchronousLoad); }
|
||||
|
||||
QNetworkReply* reply() const { return m_replyWrapper ? m_replyWrapper->reply() : 0; }
|
||||
|
||||
|
|
Loading…
Reference in New Issue