mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 01:17:34 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
82
netwerk/test/unit/test_bug1218029.js
Normal file
82
netwerk/test/unit/test_bug1218029.js
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
var tests = [
|
||||
{data: '', chunks: [], status: Cr.NS_OK, consume: [],
|
||||
dataChunks: ['']},
|
||||
{data: 'TWO-PARTS', chunks: [4, 5], status: Cr.NS_OK, consume: [4, 5],
|
||||
dataChunks: ['TWO-', 'PARTS', '']},
|
||||
{data: 'TWO-PARTS', chunks: [4, 5], status: Cr.NS_OK, consume: [0, 0],
|
||||
dataChunks: ['TWO-', 'TWO-PARTS', 'TWO-PARTS']},
|
||||
{data: '3-PARTS', chunks: [1, 1, 5], status: Cr.NS_OK, consume: [0, 2, 5],
|
||||
dataChunks: ['3', '3-', 'PARTS', '']},
|
||||
{data: 'ALL-AT-ONCE', chunks: [11], status: Cr.NS_OK, consume: [0],
|
||||
dataChunks: ['ALL-AT-ONCE', 'ALL-AT-ONCE']},
|
||||
{data: 'ALL-AT-ONCE', chunks: [11], status: Cr.NS_OK, consume: [11],
|
||||
dataChunks: ['ALL-AT-ONCE', '']},
|
||||
{data: 'ERROR', chunks: [1], status: Cr.NS_ERROR_OUT_OF_MEMORY, consume: [0],
|
||||
dataChunks: ['E', 'E']}
|
||||
];
|
||||
|
||||
/**
|
||||
* @typedef TestData
|
||||
* @property {string} data - data for the test.
|
||||
* @property {Array} chunks - lengths of the chunks that are incrementally sent
|
||||
* to the loader.
|
||||
* @property {number} status - final status sent on onStopRequest.
|
||||
* @property {Array} consume - lengths of consumed data that is reported at
|
||||
* the onIncrementalData callback.
|
||||
* @property {Array} dataChunks - data chunks that are reported at the
|
||||
* onIncrementalData and onStreamComplete callbacks.
|
||||
*/
|
||||
|
||||
function execute_test(test) {
|
||||
let stream = Cc["@mozilla.org/io/string-input-stream;1"].
|
||||
createInstance(Ci.nsIStringInputStream);
|
||||
stream.data = test.data;
|
||||
|
||||
let channel = {
|
||||
contentLength: -1,
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIChannel])
|
||||
};
|
||||
|
||||
let chunkIndex = 0;
|
||||
|
||||
let observer = {
|
||||
onStreamComplete: function(loader, context, status, length, data) {
|
||||
equal(chunkIndex, test.dataChunks.length - 1);
|
||||
var expectedChunk = test.dataChunks[chunkIndex];
|
||||
equal(length, expectedChunk.length);
|
||||
equal(String.fromCharCode.apply(null, data), expectedChunk);
|
||||
|
||||
equal(status, test.status);
|
||||
},
|
||||
onIncrementalData: function (loader, context, length, data, consumed) {
|
||||
ok(chunkIndex < test.dataChunks.length - 1);
|
||||
var expectedChunk = test.dataChunks[chunkIndex];
|
||||
equal(length, expectedChunk.length);
|
||||
equal(String.fromCharCode.apply(null, data), expectedChunk);
|
||||
|
||||
consumed.value = test.consume[chunkIndex];
|
||||
chunkIndex++;
|
||||
},
|
||||
QueryInterface:
|
||||
XPCOMUtils.generateQI([Ci.nsIIncrementalStreamLoaderObserver])
|
||||
};
|
||||
|
||||
let listener = Cc["@mozilla.org/network/incremental-stream-loader;1"]
|
||||
.createInstance(Ci.nsIIncrementalStreamLoader);
|
||||
listener.init(observer);
|
||||
|
||||
listener.onStartRequest(channel, null);
|
||||
var offset = 0;
|
||||
test.chunks.forEach(function (chunkLength) {
|
||||
listener.onDataAvailable(channel, null, stream, offset, chunkLength);
|
||||
offset += chunkLength;
|
||||
});
|
||||
listener.onStopRequest(channel, null, test.status);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
tests.forEach(execute_test);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue