Mypal/dom/base/test/unit/test_cancelPrefetch.js
2019-03-11 13:26:37 +03:00

135 lines
4.1 KiB
JavaScript

//Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
const Cc = Components.classes;
const Ci = Components.interfaces;
var prefetch = Cc["@mozilla.org/prefetch-service;1"].
getService(Ci.nsIPrefetchService);
var ios = Cc["@mozilla.org/network/io-service;1"].
getService(Ci.nsIIOService);
var prefs = Cc["@mozilla.org/preferences-service;1"].
getService(Ci.nsIPrefBranch);
var parser = Cc["@mozilla.org/xmlextras/domparser;1"].
createInstance(Ci.nsIDOMParser);
var doc;
var docbody = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' +
'<link id="node1"/><link id="node2"/>' +
'</body></html>';
var node1;
var node2;
function run_test() {
prefs.setBoolPref("network.prefetch-next", true);
parser.init();
doc = parser.parseFromString(docbody, "text/html");
node1 = doc.getElementById("node1");
node2 = doc.getElementById("node2");
run_next_test();
}
add_test(function test_cancel1() {
var uri = ios.newURI("http://localhost/1", null, null);
prefetch.prefetchURI(uri, uri, node1, true);
do_check_true(prefetch.hasMoreElements(), 'There is a request in the queue');
// Trying to prefetch again the same uri with the same node will fail.
var didFail = 0;
try {
prefetch.prefetchURI(uri, uri, node1, true);
} catch(e) {
didFail = 1;
}
do_check_true(didFail == 1, 'Prefetching the same request with the same ' +
'node fails.');
do_check_true(prefetch.hasMoreElements(), 'There is still request in ' +
'the queue');
prefetch.cancelPrefetchURI(uri, node1);
do_check_false(prefetch.hasMoreElements(), 'There is no request in the ' +
'queue');
run_next_test();
});
add_test(function test_cancel2() {
// Prefetch a uri with 2 different nodes. There should be 2 request
// in the queue and canceling one will not cancel the other.
var uri = ios.newURI("http://localhost/1", null, null);
prefetch.prefetchURI(uri, uri, node1, true);
prefetch.prefetchURI(uri, uri, node2, true);
do_check_true(prefetch.hasMoreElements(), 'There are requests in the queue');
prefetch.cancelPrefetchURI(uri, node1);
do_check_true(prefetch.hasMoreElements(), 'There is still one more request ' +
'in the queue');
prefetch.cancelPrefetchURI(uri, node2);
do_check_false(prefetch.hasMoreElements(), 'There is no request in the queue');
run_next_test();
});
add_test(function test_cancel3() {
// Request a prefetch of a uri. Trying to cancel a prefetch for the same uri
// with a different node will fail.
var uri = ios.newURI("http://localhost/1", null, null);
prefetch.prefetchURI(uri, uri, node1, true);
do_check_true(prefetch.hasMoreElements(), 'There is a request in the queue');
var didFail = 0;
try {
prefetch.cancelPrefetchURI(uri, node2);
} catch(e) {
didFail = 1;
}
do_check_true(didFail == 1, 'Canceling the request failed');
do_check_true(prefetch.hasMoreElements(), 'There is still a request ' +
'in the queue');
prefetch.cancelPrefetchURI(uri, node1);
do_check_false(prefetch.hasMoreElements(), 'There is no request in the queue');
run_next_test();
});
add_test(function test_cancel4() {
// Request a prefetch of a uri. Trying to cancel a prefetch for a different uri
// with the same node will fail.
var uri1 = ios.newURI("http://localhost/1", null, null);
var uri2 = ios.newURI("http://localhost/2", null, null);
prefetch.prefetchURI(uri1, uri1, node1, true);
do_check_true(prefetch.hasMoreElements(), 'There is a request in the queue');
var didFail = 0;
try {
prefetch.cancelPrefetchURI(uri2, node1);
} catch(e) {
didFail = 1;
}
do_check_true(didFail == 1, 'Canceling the request failed');
do_check_true(prefetch.hasMoreElements(), 'There is still a request ' +
'in the queue');
prefetch.cancelPrefetchURI(uri1, node1);
do_check_false(prefetch.hasMoreElements(), 'There is no request in the queue');
run_next_test();
});