blob: f69b1436dfee921819697bfa7a19859cc35089c2 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script src="resources/hybrid-blob-util.js"></script>
<script>
description("Test for slicing blobs created by BlobBuilder sending them via XMLHttpRequest.");
var util = new HybridBlobTestUtil(runTests);
function runSliceTest(appendItems, ranges)
{
var blob = util.appendAndCreateBlob(appendItems);
var range = {'start':0, 'length':-1};
for (var i = 0; i < ranges.length; ++i) {
blob = blob.slice(ranges[i].start, ranges[i].start + ranges[i].length);
range.start += ranges[i].start;
}
range.length = ranges[ranges.length - 1].length;
var urlParameter = util.createUrlParameter(appendItems, range);
util.uploadBlob(blob, urlParameter);
}
function runTests()
{
var stringA = util.DataItem('A1234567|');
var stringB = util.DataItem('B12345|');
var stringC = util.DataItem('C12345678901|');
var mixedArray = [ [ stringA, stringB, stringA ], stringC, [ stringA, stringB ] , stringA ];
debug('* BlobBuilder.append(data) and then apply Blob.slice()');
runSliceTest(stringA, [ {'start': 3, 'length': 12} ]);
runSliceTest([stringA, stringB], [ {'start': 3, 'length': 12} ]);
runSliceTest(mixedArray, [ {'start': 13, 'length': 40} ]);
runSliceTest(mixedArray, [ {'start': 13, 'length': 40} ]);
runSliceTest(mixedArray, [ {'start': 5, 'length': 32} ]);
debug('* BlobBuilder.append(data) and then apply nested Blob.slice()');
runSliceTest(mixedArray, [ {'start': 5, 'length': 32}, {'start': 2, 'length': 9} ]);
runSliceTest(mixedArray, [ {'start': 13, 'length': 40}, {'start': 5, 'length': 17} ]);
}
if (window.eventSender)
util.runTests();
else
testFailed("This test is not interactive, please run using DumpRenderTree");
var successfullyParsed = true;
</script>
<script src="../../../../resources/js-test-post.js"></script>
</body>
</html>