Source code

Revision control

Copy as Markdown

Other Tools

/* 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/. */
Services.scriptloader.loadSubScript(
this
);
var mockTransferCallback;
/**
* This "transfer" object implementation continues the currently running test
* when the download is completed, reporting true for success or false for
* failure as the first argument of the testRunner.continueTest function.
*/
function MockTransfer() {
this._downloadIsSuccessful = true;
}
MockTransfer.prototype = {
QueryInterface: ChromeUtils.generateQI([
"nsIWebProgressListener",
"nsIWebProgressListener2",
"nsITransfer",
]),
/* nsIWebProgressListener */
onStateChange: function MTFC_onStateChange(
aWebProgress,
aRequest,
aStateFlags,
aStatus
) {
// If at least one notification reported an error, the download failed.
if (!Components.isSuccessCode(aStatus)) {
this._downloadIsSuccessful = false;
}
// If the download is finished
if (
aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK
) {
// Continue the test, reporting the success or failure condition.
mockTransferCallback(this._downloadIsSuccessful);
}
},
onProgressChange() {},
onLocationChange() {},
onStatusChange: function MTFC_onStatusChange(
aWebProgress,
aRequest,
aStatus
) {
// If at least one notification reported an error, the download failed.
if (!Components.isSuccessCode(aStatus)) {
this._downloadIsSuccessful = false;
}
},
onSecurityChange() {},
onContentBlockingEvent() {},
/* nsIWebProgressListener2 */
onProgressChange64() {},
onRefreshAttempted() {},
/* nsITransfer */
init() {},
initWithBrowsingContext() {},
setSha256Hash() {},
setSignatureInfo() {},
};
// Create an instance of a MockObjectRegisterer whose methods can be used to
// temporarily replace the default "@mozilla.org/transfer;1" object factory with
// one that provides the mock implementation above. To activate the mock object
// factory, call the "register" method. Starting from that moment, all the
// transfer objects that are requested will be mock objects, until the
// "unregister" method is called.
var mockTransferRegisterer = new MockObjectRegisterer(
"@mozilla.org/transfer;1",
MockTransfer
);