michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim: set ts=2 et sw=2 tw=80: */ michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: /** michael@0: * Tests the main download interfaces using DownloadCopySaver. michael@0: */ michael@0: michael@0: "use strict"; michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "DownloadError", michael@0: "resource://gre/modules/DownloadCore.jsm"); michael@0: michael@0: //////////////////////////////////////////////////////////////////////////////// michael@0: //// Execution of common tests michael@0: michael@0: let gUseLegacySaver = false; michael@0: michael@0: let scriptFile = do_get_file("common_test_Download.js"); michael@0: Services.scriptloader.loadSubScript(NetUtil.newURI(scriptFile).spec); michael@0: michael@0: //////////////////////////////////////////////////////////////////////////////// michael@0: //// Tests michael@0: michael@0: /** michael@0: * Tests the DownloadError object. michael@0: */ michael@0: add_task(function test_DownloadError() michael@0: { michael@0: let error = new DownloadError({ result: Cr.NS_ERROR_NOT_RESUMABLE, michael@0: message: "Not resumable."}); michael@0: do_check_eq(error.result, Cr.NS_ERROR_NOT_RESUMABLE); michael@0: do_check_eq(error.message, "Not resumable."); michael@0: do_check_false(error.becauseSourceFailed); michael@0: do_check_false(error.becauseTargetFailed); michael@0: do_check_false(error.becauseBlocked); michael@0: do_check_false(error.becauseBlockedByParentalControls); michael@0: michael@0: error = new DownloadError({ message: "Unknown error."}); michael@0: do_check_eq(error.result, Cr.NS_ERROR_FAILURE); michael@0: do_check_eq(error.message, "Unknown error."); michael@0: michael@0: error = new DownloadError({ result: Cr.NS_ERROR_NOT_RESUMABLE }); michael@0: do_check_eq(error.result, Cr.NS_ERROR_NOT_RESUMABLE); michael@0: do_check_true(error.message.indexOf("Exception") > 0); michael@0: michael@0: // becauseSourceFailed will be set, but not the unknown property. michael@0: error = new DownloadError({ message: "Unknown error.", michael@0: becauseSourceFailed: true, michael@0: becauseUnknown: true }); michael@0: do_check_true(error.becauseSourceFailed); michael@0: do_check_false("becauseUnknown" in error); michael@0: michael@0: error = new DownloadError({ result: Cr.NS_ERROR_MALFORMED_URI, michael@0: inferCause: true }); michael@0: do_check_eq(error.result, Cr.NS_ERROR_MALFORMED_URI); michael@0: do_check_true(error.becauseSourceFailed); michael@0: do_check_false(error.becauseTargetFailed); michael@0: do_check_false(error.becauseBlocked); michael@0: do_check_false(error.becauseBlockedByParentalControls); michael@0: michael@0: // This test does not set inferCause, so becauseSourceFailed will not be set. michael@0: error = new DownloadError({ result: Cr.NS_ERROR_MALFORMED_URI }); michael@0: do_check_eq(error.result, Cr.NS_ERROR_MALFORMED_URI); michael@0: do_check_false(error.becauseSourceFailed); michael@0: michael@0: error = new DownloadError({ result: Cr.NS_ERROR_FILE_INVALID_PATH, michael@0: inferCause: true }); michael@0: do_check_eq(error.result, Cr.NS_ERROR_FILE_INVALID_PATH); michael@0: do_check_false(error.becauseSourceFailed); michael@0: do_check_true(error.becauseTargetFailed); michael@0: do_check_false(error.becauseBlocked); michael@0: do_check_false(error.becauseBlockedByParentalControls); michael@0: michael@0: error = new DownloadError({ becauseBlocked: true }); michael@0: do_check_eq(error.message, "Download blocked."); michael@0: do_check_false(error.becauseSourceFailed); michael@0: do_check_false(error.becauseTargetFailed); michael@0: do_check_true(error.becauseBlocked); michael@0: do_check_false(error.becauseBlockedByParentalControls); michael@0: michael@0: error = new DownloadError({ becauseBlockedByParentalControls: true }); michael@0: do_check_eq(error.message, "Download blocked."); michael@0: do_check_false(error.becauseSourceFailed); michael@0: do_check_false(error.becauseTargetFailed); michael@0: do_check_true(error.becauseBlocked); michael@0: do_check_true(error.becauseBlockedByParentalControls); michael@0: }); michael@0: michael@0: //////////////////////////////////////////////////////////////////////////////// michael@0: //// Termination michael@0: michael@0: let tailFile = do_get_file("tail.js"); michael@0: Services.scriptloader.loadSubScript(NetUtil.newURI(tailFile).spec);