4 https://bugzilla.mozilla.org/show_bug.cgi?id=444546
7 <title>Test for Bug
444546</title>
8 <script type=
"application/javascript" src=
"/MochiKit/MochiKit.js"></script>
9 <script src=
"/tests/SimpleTest/SimpleTest.js"></script>
10 <link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css"/>
29 <a target=
"_blank" href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=444546">Mozilla Bug
444546</a>
31 <div id=
"content" style=
"display: none">
35 <script type=
"application/javascript">
37 /** Test for Bug
444546 **/
40 var xhrs = new Array();
41 var uploads = new Array();
42 var maxSize =
5000000;
43 var hugeString = new Array(maxSize +
1).join('a');
45 function updateProgress(evt) {
46 ++evt.target.pcounter;
47 var time = new Date().getTime();
49 if ((time - evt.target.prevTime) <
150) {
50 evt.target.log.parentNode.style.background =
"red";
52 var diff = (time - evt.target.prevTime);
53 if (evt.target.min == -
1 || evt.target.min
> diff) {
54 evt.target.min = diff;
56 if (evt.target.max == -
1 || evt.target.max < diff) {
57 evt.target.max = diff;
60 evt.target.log.textContent = diff +
"ms";
61 evt.target.prevTime = time;
62 if (evt.lengthComputable) {
63 var fractionLoaded = (evt.loaded / evt.total);
64 if (fractionLoaded <
1) {
65 evt.target.log.style.width = (fractionLoaded *
400) +
"px";
70 function loaded(evt) {
71 evt.target.log.style.width =
"400px";
72 evt.target.log.style.background =
"green";
73 if (
"xhr" in evt.target) {
74 evt.target.xhr.prevTime = new Date().getTime();
75 evt.target.xhr.startTime = evt.target.xhr.prevTime;
77 var total = new Date().getTime() - evt.target.startTime;
78 evt.target.log.textContent =
"total:" + total +
"ms";
79 if (evt.target.pcounter) {
80 evt.target.log.textContent +=
" ," + evt.target.pcounter +
"pe, avg:" +
81 parseInt((evt.target.prevTime - evt.target.startTime)/evt.target.pcounter) +
"ms";
83 if (evt.target.min != -
1) {
84 ok(evt.target.min
>=
150,
"Events fired too fast!");
85 evt.target.log.textContent +=
", min:" + evt.target.min +
"ms";
87 if (evt.target.max != -
1) {
89 //ok(evt.target.max <=
550,
"Events didn't fire fast enough!");
90 evt.target.log.textContent +=
", max:" + evt.target.max +
"ms";
92 if (
"upload" in evt.target) {
93 is(evt.total, maxSize *
10,
"Wrong data!");
96 // This is a hack. To get more progress events, server sends the data
100 setTimeout(start,
10);
103 is(evt.total, maxSize,
"Wrong data!");
108 var xhr = new XMLHttpRequest();
110 uploads.push(xhr.upload);
111 var container = document.createElement(
"tr");
112 var td1 = document.createElement(
"td");
113 container.appendChild(td1);
114 td1.textContent = xhrs.length +
".";
115 var td2 = document.createElement(
"td");
116 container.appendChild(td2);
117 var td3 = document.createElement(
"td");
118 container.appendChild(td3);
119 var uploadElement = document.createElement(
"div");
120 td2.appendChild(uploadElement);
121 uploadElement.className =
"up";
122 var downloadElement = document.createElement(
"div");
123 td3.appendChild(downloadElement);
124 downloadElement.className =
"down";
125 document.getElementById('tbody').appendChild(container);
126 xhr.log = downloadElement;
127 xhr.upload.log = uploadElement;
128 xhr.onprogress = updateProgress;
129 xhr.upload.onprogress = updateProgress;
131 xhr.upload.onload = loaded;
132 xhr.open(
"POST",
"bug444546.sjs");
133 xhr.upload.prevTime = new Date().getTime();
134 xhr.upload.startTime = xhr.upload.prevTime;
135 xhr.upload.xhr = xhr;
137 xhr.upload.pcounter =
0;
142 xhr.send(hugeString);
145 SimpleTest.waitForExplicitFinish();
146 addLoadEvent(function() { setTimeout(start,
10); });
154 <td style=
"min-width: 410px;">upload
</td>
155 <td style=
"min-width: 410px;">download
</td>