/* 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/. */ Cc["@mozilla.org/moz/jssubscript-loader;1"] .getService(Ci.mozIJSSubScriptLoader) .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; } MockTransfer.prototype = { QueryInterface: XPCOMUtils.generateQI([ Ci.nsIWebProgressListener, Ci.nsIWebProgressListener2, Ci.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: function () {}, onLocationChange: function () {}, onStatusChange: function MTFC_onStatusChange(aWebProgress, aRequest, aStatus, aMessage) { // If at least one notification reported an error, the download failed. if (!Components.isSuccessCode(aStatus)) this._downloadIsSuccessful = false; }, onSecurityChange: function () {}, /* nsIWebProgressListener2 */ onProgressChange64: function () {}, onRefreshAttempted: function () {}, /* nsITransfer */ init: function() {}, setSha256Hash: function() {}, setSignatureInfo: function() {} }; // 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);