diff options
author | Peter Hartmann <phartmann@blackberry.com> | 2014-09-11 11:59:23 +0200 |
---|---|---|
committer | Peter Hartmann <phartmann@blackberry.com> | 2014-10-04 14:41:55 +0200 |
commit | 0473d2bd344ab7f6ad4037c6b33a4735036d238a (patch) | |
tree | da1923e16d58923af4cdcff79523a16a1b5617a8 /src/network/access | |
parent | 03e794b7a6ce730c8768b91e00fefc6db32463be (diff) |
QNetworkRequest: Add new enum to emit all uploadProgress signals
... so that a user can have more fine-grained uploadProgress signal
emissions if desired.
Change-Id: I9f77fd80c100dbe249beaf3057e6e8974680ec59
Reviewed-by: Markus Goetz <markus@woboq.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'src/network/access')
-rw-r--r-- | src/network/access/qnetworkreply.cpp | 1 | ||||
-rw-r--r-- | src/network/access/qnetworkreply_p.h | 1 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyhttpimpl.cpp | 19 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyimpl.cpp | 18 | ||||
-rw-r--r-- | src/network/access/qnetworkrequest.cpp | 7 | ||||
-rw-r--r-- | src/network/access/qnetworkrequest.h | 1 |
6 files changed, 33 insertions, 14 deletions
diff --git a/src/network/access/qnetworkreply.cpp b/src/network/access/qnetworkreply.cpp index 39762e2324..1ec3fe31ac 100644 --- a/src/network/access/qnetworkreply.cpp +++ b/src/network/access/qnetworkreply.cpp @@ -41,6 +41,7 @@ const int QNetworkReplyPrivate::progressSignalInterval = 100; QNetworkReplyPrivate::QNetworkReplyPrivate() : readBufferMaxSize(0), + emitAllUploadProgressSignals(false), operation(QNetworkAccessManager::UnknownOperation), errorCode(QNetworkReply::NoError) , isFinished(false) diff --git a/src/network/access/qnetworkreply_p.h b/src/network/access/qnetworkreply_p.h index 6a68ecfea3..1d7d027954 100644 --- a/src/network/access/qnetworkreply_p.h +++ b/src/network/access/qnetworkreply_p.h @@ -74,6 +74,7 @@ public: qint64 readBufferMaxSize; QElapsedTimer downloadProgressSignalChoke; QElapsedTimer uploadProgressSignalChoke; + bool emitAllUploadProgressSignals; const static int progressSignalInterval; QNetworkAccessManager::Operation operation; QNetworkReply::NetworkError errorCode; diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 2af23a4eb5..f4fdc78576 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -753,6 +753,9 @@ void QNetworkReplyHttpImplPrivate::postRequest() QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Manual) httpRequest.setWithCredentials(false); + if (request.attribute(QNetworkRequest::EmitAllUploadProgressSignalsAttribute).toBool() == true) + emitAllUploadProgressSignals = true; + // Create the HTTP thread delegate QHttpThreadDelegate *delegate = new QHttpThreadDelegate; @@ -1854,14 +1857,16 @@ void QNetworkReplyHttpImplPrivate::emitReplyUploadProgress(qint64 bytesSent, qin if (isFinished) return; - //choke signal emissions, except the first and last signals which are unconditional - if (uploadProgressSignalChoke.isValid()) { - if (bytesSent != bytesTotal && uploadProgressSignalChoke.elapsed() < progressSignalInterval) { - return; + if (!emitAllUploadProgressSignals) { + //choke signal emissions, except the first and last signals which are unconditional + if (uploadProgressSignalChoke.isValid()) { + if (bytesSent != bytesTotal && uploadProgressSignalChoke.elapsed() < progressSignalInterval) { + return; + } + uploadProgressSignalChoke.restart(); + } else { + uploadProgressSignalChoke.start(); } - uploadProgressSignalChoke.restart(); - } else { - uploadProgressSignalChoke.start(); } emit q->uploadProgress(bytesSent, bytesTotal); diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index 5af3bb37be..3c7a911974 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -59,6 +59,8 @@ inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate() , downloadBufferMaximumSize(0) , downloadBuffer(0) { + if (request.attribute(QNetworkRequest::EmitAllUploadProgressSignalsAttribute).toBool() == true) + emitAllUploadProgressSignals = true; } void QNetworkReplyImplPrivate::_q_startOperation() @@ -542,14 +544,16 @@ void QNetworkReplyImplPrivate::emitUploadProgress(qint64 bytesSent, qint64 bytes Q_Q(QNetworkReplyImpl); bytesUploaded = bytesSent; - //choke signal emissions, except the first and last signals which are unconditional - if (uploadProgressSignalChoke.isValid()) { - if (bytesSent != bytesTotal && uploadProgressSignalChoke.elapsed() < progressSignalInterval) { - return; + if (!emitAllUploadProgressSignals) { + //choke signal emissions, except the first and last signals which are unconditional + if (uploadProgressSignalChoke.isValid()) { + if (bytesSent != bytesTotal && uploadProgressSignalChoke.elapsed() < progressSignalInterval) { + return; + } + uploadProgressSignalChoke.restart(); + } else { + uploadProgressSignalChoke.start(); } - uploadProgressSignalChoke.restart(); - } else { - uploadProgressSignalChoke.start(); } pauseNotificationHandling(); diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index c51470e25a..2c0486d615 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -249,6 +249,13 @@ QT_BEGIN_NAMESPACE Indicates whether SPDY was used for receiving this reply. + \value EmitAllUploadProgressSignalsAttribute + Requests only, type: QMetaType::Bool (default: false) + Indicates whether all upload signals should be emitted. + By default, the uploadProgress signal is emitted only + in 100 millisecond intervals. + (This value was introduced in 5.5.) + \value User Special type. Additional information can be passed in QVariants with types ranging from User to UserMax. The default diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h index 0239ae7f4b..3221438db4 100644 --- a/src/network/access/qnetworkrequest.h +++ b/src/network/access/qnetworkrequest.h @@ -80,6 +80,7 @@ public: BackgroundRequestAttribute, SpdyAllowedAttribute, SpdyWasUsedAttribute, + EmitAllUploadProgressSignalsAttribute, User = 1000, UserMax = 32767 |