91 lines
2.7 KiB
JavaScript
91 lines
2.7 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/. */
|
|
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochikit/content/tests/SimpleTest/MockObjects.js",
|
|
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;
|
|
this._whenSucceededPromise = Promise.withResolvers();
|
|
}
|
|
|
|
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);
|
|
this._whenSucceededPromise.resolve();
|
|
}
|
|
},
|
|
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() {},
|
|
get downloadPromise() {
|
|
return Promise.resolve({
|
|
whenSucceeded: () => this._whenSucceededPromise.promise,
|
|
});
|
|
},
|
|
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
|
|
);
|