gecko/toolkit/components/downloads/test/unit/test_private_resume.js
Josh Matthews 545c7e894a Bug 817447 - Create download manager unit tests that do not rely on the global private browsing service. r=ehsan
DONTBUILD because this is NPOTB for global PB builds

--HG--
rename : toolkit/components/downloads/test/unit/test_private_resume.js => toolkit/components/downloads/test/unit/test_private_resume_global.js
rename : toolkit/components/downloads/test/unit/test_privatebrowsing_cancel.js => toolkit/components/downloads/test/unit/test_privatebrowsing_cancel_global.js
rename : toolkit/components/downloads/test/unit/test_privatebrowsing.js => toolkit/components/downloads/test/unit/test_privatebrowsing_global.js
2012-12-05 16:15:55 -05:00

109 lines
3.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// Public request gets times=0 cookie, completes
// Private request gets times=1 cookie, canceled
// Private resumed request sends times=1 cookie, completes
function run_test() {
do_test_pending();
let httpserv = new HttpServer();
let times = 0;
httpserv.registerPathHandler("/head_download_manager.js", function (meta, response) {
response.setHeader("Content-Type", "text/plain", false);
response.setStatusLine("1.1", !meta.hasHeader('range') ? 200 : 206);
// Set a cookie if none is sent with the request. Public and private requests
// should therefore receive different cookies, so we can tell if the resumed
// request is actually treated as private or not.
if (!meta.hasHeader('Cookie')) {
do_check_true(times == 0 || times == 1);
response.setHeader('Set-Cookie', 'times=' + times++);
} else {
do_check_eq(times, 2);
do_check_eq(meta.getHeader('Cookie'), 'times=1');
}
let full = "";
let body = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; //60
for (var i = 0; i < 1000; i++) {
full += body;
}
response.write(full);
});
httpserv.start(4444);
let state = 0;
let listener = {
onDownloadStateChange: function(aState, aDownload) {
switch (aDownload.state) {
case downloadUtils.downloadManager.DOWNLOAD_DOWNLOADING:
// We only care about the private download
if (state != 1)
break;
state++;
do_check_true(aDownload.resumable);
aDownload.pause();
do_check_eq(aDownload.state, downloadUtils.downloadManager.DOWNLOAD_PAUSED);
do_execute_soon(function() {
aDownload.resume();
});
break;
case downloadUtils.downloadManager.DOWNLOAD_FINISHED:
if (state == 0) {
do_execute_soon(function() {
// Perform an identical request but in private mode.
// It should receive a different cookie than the
// public request.
state++;
addDownload({
isPrivate: true,
sourceURI: downloadCSource,
downloadName: downloadCName + "!!!",
runBeforeStart: function (aDownload) {
// Check that dl is retrievable
do_check_eq(downloadUtils.downloadManager.activePrivateDownloadCount, 1);
}
});
});
} else if (state == 2) {
// We're done here.
do_execute_soon(function() {
httpserv.stop(do_test_finished);
});
}
break;
default:
break;
}
},
onStateChange: function(a, b, c, d, e) { },
onProgressChange: function(a, b, c, d, e, f, g) { },
onSecurityChange: function(a, b, c, d) { }
};
downloadUtils.downloadManager.addPrivacyAwareListener(listener);
const downloadCSource = "http://localhost:4444/head_download_manager.js";
const downloadCName = "download-C";
// First a public download that completes without interruption.
let dl = addDownload({
isPrivate: false,
sourceURI: downloadCSource,
downloadName: downloadCName,
runBeforeStart: function (aDownload) {
// Check that dl is retrievable
do_check_eq(downloadUtils.downloadManager.activeDownloadCount, 1);
}
});
}