зеркало из https://github.com/mozilla/gecko-dev.git
Bug 948246, don't change xhr.upload's event.total and always fire at least one progress event, r=bz
--HG-- extra : rebase_source : 7a265bcb40155a257d885538a5c07825a83b018e
This commit is contained in:
Родитель
a6bda6be20
Коммит
cc7e43847a
|
@ -1899,7 +1899,11 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
|
||||||
mProgressTimerIsActive = false;
|
mProgressTimerIsActive = false;
|
||||||
mProgressNotifier->Cancel();
|
mProgressNotifier->Cancel();
|
||||||
}
|
}
|
||||||
|
if (mUploadTransferred < mUploadTotal) {
|
||||||
|
mUploadTransferred = mUploadTotal;
|
||||||
|
mProgressSinceLastProgressEvent = true;
|
||||||
MaybeDispatchProgressEvents(true);
|
MaybeDispatchProgressEvents(true);
|
||||||
|
}
|
||||||
mUploadComplete = true;
|
mUploadComplete = true;
|
||||||
DispatchProgressEvent(mUpload, NS_LITERAL_STRING(LOAD_STR),
|
DispatchProgressEvent(mUpload, NS_LITERAL_STRING(LOAD_STR),
|
||||||
true, mUploadTotal, mUploadTotal);
|
true, mUploadTotal, mUploadTotal);
|
||||||
|
@ -3410,9 +3414,6 @@ nsXMLHttpRequest::MaybeDispatchProgressEvents(bool aFinalProgress)
|
||||||
// We're uploading if our state is XML_HTTP_REQUEST_OPENED or
|
// We're uploading if our state is XML_HTTP_REQUEST_OPENED or
|
||||||
// XML_HTTP_REQUEST_SENT
|
// XML_HTTP_REQUEST_SENT
|
||||||
if ((XML_HTTP_REQUEST_OPENED | XML_HTTP_REQUEST_SENT) & mState) {
|
if ((XML_HTTP_REQUEST_OPENED | XML_HTTP_REQUEST_SENT) & mState) {
|
||||||
if (aFinalProgress) {
|
|
||||||
mUploadTotal = mUploadTransferred;
|
|
||||||
}
|
|
||||||
if (mUpload && !mUploadComplete) {
|
if (mUpload && !mUploadComplete) {
|
||||||
DispatchProgressEvent(mUpload, NS_LITERAL_STRING(PROGRESS_STR),
|
DispatchProgressEvent(mUpload, NS_LITERAL_STRING(PROGRESS_STR),
|
||||||
mUploadLengthComputable, mUploadTransferred,
|
mUploadLengthComputable, mUploadTransferred,
|
||||||
|
|
|
@ -23,6 +23,7 @@ var xhr = null;
|
||||||
var upload = null;
|
var upload = null;
|
||||||
var currentEvents = null;
|
var currentEvents = null;
|
||||||
var expectedResponseText = null;
|
var expectedResponseText = null;
|
||||||
|
var uploadTotal = 0;
|
||||||
|
|
||||||
function logEvent(evt) {
|
function logEvent(evt) {
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
@ -32,6 +33,13 @@ function logEvent(evt) {
|
||||||
!(evt.target instanceof currentEvents[i].target))) {
|
!(evt.target instanceof currentEvents[i].target))) {
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
if (evt.target instanceof XMLHttpRequestUpload) {
|
||||||
|
if (evt.type == "loadstart") {
|
||||||
|
uploadTotal = evt.total
|
||||||
|
} else {
|
||||||
|
is(evt.total, uploadTotal, "event(" + evt.type + ").total should not change during upload.");
|
||||||
|
}
|
||||||
|
}
|
||||||
ok(i != currentEvents.length, "Extra or wrong event?");
|
ok(i != currentEvents.length, "Extra or wrong event?");
|
||||||
is(evt.type, currentEvents[i].type, "Wrong event!")
|
is(evt.type, currentEvents[i].type, "Wrong event!")
|
||||||
ok(evt.target instanceof currentEvents[i].target,
|
ok(evt.target instanceof currentEvents[i].target,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче