Merge remote-tracking branch 'origin/master' into custom

This commit is contained in:
Roy Tam 2020-02-27 07:37:41 +08:00
commit 55828393ce
2798 changed files with 8839 additions and 257595 deletions

View file

@ -4,15 +4,9 @@
# 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/.
TEST_DIRS += ['tests']
EXTRA_COMPONENTS += ['nsHelperAppDlg.manifest']
EXTRA_COMPONENTS += [
'nsHelperAppDlg.manifest',
]
EXTRA_PP_COMPONENTS += [
'nsHelperAppDlg.js',
]
EXTRA_PP_COMPONENTS += ['nsHelperAppDlg.js']
EXTRA_JS_MODULES += [
'DownloadLastDir.jsm',

View file

@ -1,7 +0,0 @@
"use strict";
module.exports = {
"extends": [
"../../../../../testing/mochitest/chrome.eslintrc.js"
]
};

View file

@ -1,10 +0,0 @@
[DEFAULT]
skip-if = os == 'android'
support-files =
unknownContentType_dialog_layout_data.pif
unknownContentType_dialog_layout_data.pif^headers^
unknownContentType_dialog_layout_data.txt
unknownContentType_dialog_layout_data.txt^headers^
[test_unknownContentType_delayedbutton.xul]
[test_unknownContentType_dialog_layout.xul]

View file

@ -1,117 +0,0 @@
<?xml version="1.0"?>
<!-- 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/. -->
<!--
* The unknownContentType popup can have two different layouts depending on
* whether a helper application can be selected or not.
* This tests that both layouts have correct collapsed elements.
-->
<window title="Unknown Content Type Dialog Test"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doTest()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"><![CDATA[
const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Task.jsm");
Cu.import("resource://gre/modules/Promise.jsm");
const UCT_URI = "chrome://mozapps/content/downloads/unknownContentType.xul";
const LOAD_URI = "http://mochi.test:8888/chrome/toolkit/mozapps/downloads/tests/chrome/unknownContentType_dialog_layout_data.txt";
const DIALOG_DELAY = Services.prefs.getIntPref("security.dialog_enable_delay") + 200;
let UCTObserver = {
opened: Promise.defer(),
closed: Promise.defer(),
observe: function(aSubject, aTopic, aData) {
let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget);
switch (aTopic) {
case "domwindowopened":
win.addEventListener("load", function onLoad(event) {
win.removeEventListener("load", onLoad, false);
// Let the dialog initialize
SimpleTest.executeSoon(function() {
UCTObserver.opened.resolve(win);
});
}, false);
break;
case "domwindowclosed":
if (win.location == UCT_URI) {
this.closed.resolve();
}
break;
}
}
};
Services.ww.registerNotification(UCTObserver);
SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout("This test is testing a timing-based feature, so it really needs to wait a certain amount of time to verify that the feature worked.");
function waitDelay(delay) {
return new Promise((resolve, reject) => {
window.setTimeout(resolve, delay);
});
}
function doTest() {
Task.spawn(function test_aboutCrashed() {
let frame = document.getElementById("testframe");
frame.setAttribute("src", LOAD_URI);
let uctWindow = yield UCTObserver.opened.promise;
let ok = uctWindow.document.documentElement.getButton("accept");
SimpleTest.is(ok.disabled, true, "button started disabled");
yield waitDelay(DIALOG_DELAY);
SimpleTest.is(ok.disabled, false, "button was enabled");
focusOutOfDialog = SimpleTest.promiseFocus(window);
window.focus();
yield focusOutOfDialog;
SimpleTest.is(ok.disabled, true, "button was disabled");
focusOnDialog = SimpleTest.promiseFocus(uctWindow);
uctWindow.focus();
yield focusOnDialog;
SimpleTest.is(ok.disabled, true, "button remained disabled");
yield waitDelay(DIALOG_DELAY);
SimpleTest.is(ok.disabled, false, "button re-enabled after delay");
uctWindow.document.documentElement.cancelDialog();
yield UCTObserver.closed.promise;
Services.ww.unregisterNotification(UCTObserver);
uctWindow = null;
UCTObserver = null;
SimpleTest.finish();
});
}
]]></script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display:none;"></div>
<pre id="test"></pre>
</body>
<iframe xmlns="http://www.w3.org/1999/xhtml"
id="testframe">
</iframe>
</window>

View file

@ -1,108 +0,0 @@
<?xml version="1.0"?>
<!-- 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/. -->
<!--
* The unknownContentType popup can have two different layouts depending on
* whether a helper application can be selected or not.
* This tests that both layouts have correct collapsed elements.
-->
<window title="Unknown Content Type Dialog Test"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="init()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript">
<![CDATA[
const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
const UCT_URI = "chrome://mozapps/content/downloads/unknownContentType.xul";
let testIndex = -1;
let tests = [
{ // This URL will trigger the simple UI, where only the Save an Cancel buttons are available
url: "http://mochi.test:8888/chrome/toolkit/mozapps/downloads/tests/chrome/unknownContentType_dialog_layout_data.pif",
elements: {
basicBox: { collapsed: false },
normalBox: { collapsed: true }
}
},
{ // This URL will trigger the full UI
url: "http://mochi.test:8888/chrome/toolkit/mozapps/downloads/tests/chrome/unknownContentType_dialog_layout_data.txt",
elements: {
basicBox: { collapsed: true },
normalBox: { collapsed: false }
}
}
];
let ww = Cc["@mozilla.org/embedcomp/window-watcher;1"].
getService(Ci.nsIWindowWatcher);
SimpleTest.waitForExplicitFinish();
let windowObserver = {
observe: function(aSubject, aTopic, aData) {
let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget);
if (aTopic == "domwindowclosed") {
if (win.location == UCT_URI)
loadNextTest();
return;
}
// domwindowopened
win.addEventListener("load", function onLoad(event) {
win.removeEventListener("load", onLoad, false);
// Let the dialog initialize
SimpleTest.executeSoon(function() {
checkWindow(win);
});
}, false);
}
};
function init() {
ww.registerNotification(windowObserver);
loadNextTest();
}
function loadNextTest() {
if (!tests[++testIndex]) {
ww.unregisterNotification(windowObserver);
SimpleTest.finish();
return;
}
let frame = document.getElementById("testframe");
frame.setAttribute("src", tests[testIndex].url);
}
function checkWindow(win) {
for (let [id, props] of Object.entries(tests[testIndex].elements)) {
let elem = win.dialog.dialogElement(id);
for (let [prop, value] of Object.entries(props)) {
is(elem[prop], value,
"Element with id " + id + " has property " +
prop + " set to " + value);
}
}
win.document.documentElement.cancelDialog();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display:none;"></div>
<pre id="test"></pre>
</body>
<iframe xmlns="http://www.w3.org/1999/xhtml"
id="testframe">
</iframe>
</window>

View file

@ -1 +0,0 @@
Dummy content for unknownContentType_dialog_layout_data.pif

View file

@ -1 +0,0 @@
Content-Type: application/octet-stream

View file

@ -1 +0,0 @@
Dummy content for unknownContentType_dialog_layout_data.txt

View file

@ -1,2 +0,0 @@
Content-Type: text/plain
Content-Disposition: attachment

View file

@ -1,8 +0,0 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
MOCHITEST_CHROME_MANIFESTS += ['chrome/chrome.ini']

View file

@ -1,7 +0,0 @@
"use strict";
module.exports = {
"extends": [
"../../../../../testing/xpcshell/xpcshell.eslintrc.js"
]
};

View file

@ -1,5 +0,0 @@
Components.utils.import("resource://gre/modules/Services.jsm");
do_register_cleanup(function() {
Services.obs.notifyObservers(null, "quit-application", null);
});

View file

@ -1,131 +0,0 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */
/* ***** BEGIN LICENSE BLOCK *****
*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*
* ***** END LICENSE BLOCK ***** */
/**
* Tests for the "DownloadPaths.jsm" JavaScript module.
*/
var Cc = Components.classes;
var Ci = Components.interfaces;
var Cu = Components.utils;
var Cr = Components.results;
Cu.import("resource://gre/modules/DownloadPaths.jsm");
/**
* Provides a temporary save directory.
*
* @returns nsIFile pointing to the new or existing directory.
*/
function createTemporarySaveDirectory()
{
var saveDir = Cc["@mozilla.org/file/directory_service;1"].
getService(Ci.nsIProperties).get("TmpD", Ci.nsIFile);
saveDir.append("testsavedir");
if (!saveDir.exists()) {
saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
}
return saveDir;
}
function testSplitBaseNameAndExtension(aLeafName, [aBase, aExt])
{
var [base, ext] = DownloadPaths.splitBaseNameAndExtension(aLeafName);
do_check_eq(base, aBase);
do_check_eq(ext, aExt);
// If we modify the base name and concatenate it with the extension again,
// another roundtrip through the function should give a consistent result.
// The only exception is when we introduce an extension in a file name that
// didn't have one or that ended with one of the special cases like ".gz". If
// we avoid using a dot and we introduce at least another special character,
// the results are always consistent.
[base, ext] = DownloadPaths.splitBaseNameAndExtension("(" + base + ")" + ext);
do_check_eq(base, "(" + aBase + ")");
do_check_eq(ext, aExt);
}
function testCreateNiceUniqueFile(aTempFile, aExpectedLeafName)
{
var createdFile = DownloadPaths.createNiceUniqueFile(aTempFile);
do_check_eq(createdFile.leafName, aExpectedLeafName);
}
function run_test()
{
// Usual file names.
testSplitBaseNameAndExtension("base", ["base", ""]);
testSplitBaseNameAndExtension("base.ext", ["base", ".ext"]);
testSplitBaseNameAndExtension("base.application", ["base", ".application"]);
testSplitBaseNameAndExtension("base.x.Z", ["base", ".x.Z"]);
testSplitBaseNameAndExtension("base.ext.Z", ["base", ".ext.Z"]);
testSplitBaseNameAndExtension("base.ext.gz", ["base", ".ext.gz"]);
testSplitBaseNameAndExtension("base.ext.Bz2", ["base", ".ext.Bz2"]);
testSplitBaseNameAndExtension("base..ext", ["base.", ".ext"]);
testSplitBaseNameAndExtension("base..Z", ["base.", ".Z"]);
testSplitBaseNameAndExtension("base. .Z", ["base. ", ".Z"]);
testSplitBaseNameAndExtension("base.base.Bz2", ["base.base", ".Bz2"]);
testSplitBaseNameAndExtension("base .ext", ["base ", ".ext"]);
// Corner cases. A name ending with a dot technically has no extension, but
// we consider the ending dot separately from the base name so that modifying
// the latter never results in an extension being introduced accidentally.
// Names beginning with a dot are hidden files on Unix-like platforms and if
// their name doesn't contain another dot they should have no extension, but
// on Windows the whole name is considered as an extension.
testSplitBaseNameAndExtension("base.", ["base", "."]);
testSplitBaseNameAndExtension(".ext", ["", ".ext"]);
// Unusual file names (not recommended as input to the function).
testSplitBaseNameAndExtension("base. ", ["base", ". "]);
testSplitBaseNameAndExtension("base ", ["base ", ""]);
testSplitBaseNameAndExtension("", ["", ""]);
testSplitBaseNameAndExtension(" ", [" ", ""]);
testSplitBaseNameAndExtension(" . ", [" ", ". "]);
testSplitBaseNameAndExtension(" .. ", [" .", ". "]);
testSplitBaseNameAndExtension(" .ext", [" ", ".ext"]);
testSplitBaseNameAndExtension(" .ext. ", [" .ext", ". "]);
testSplitBaseNameAndExtension(" .ext.gz ", [" .ext", ".gz "]);
var destDir = createTemporarySaveDirectory();
try {
// Single extension.
var tempFile = destDir.clone();
tempFile.append("test.txt");
testCreateNiceUniqueFile(tempFile, "test.txt");
testCreateNiceUniqueFile(tempFile, "test(1).txt");
testCreateNiceUniqueFile(tempFile, "test(2).txt");
// Double extension.
tempFile.leafName = "test.tar.gz";
testCreateNiceUniqueFile(tempFile, "test.tar.gz");
testCreateNiceUniqueFile(tempFile, "test(1).tar.gz");
testCreateNiceUniqueFile(tempFile, "test(2).tar.gz");
// Test automatic shortening of long file names. We don't know exactly how
// many characters are removed, because it depends on the name of the folder
// where the file is located.
tempFile.leafName = new Array(256).join("T") + ".txt";
var newFile = DownloadPaths.createNiceUniqueFile(tempFile);
do_check_true(newFile.leafName.length < tempFile.leafName.length);
do_check_eq(newFile.leafName.slice(-4), ".txt");
// Creating a valid file name from an invalid one is not always possible.
tempFile.append("file-under-long-directory.txt");
try {
DownloadPaths.createNiceUniqueFile(tempFile);
do_throw("Exception expected with a long parent directory name.")
} catch (e) {
// An exception is expected, but we don't know which one exactly.
}
} finally {
// Clean up the temporary directory.
destDir.remove(true);
}
}

View file

@ -1,237 +0,0 @@
/* 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/. */
var Cu = Components.utils;
Cu.import("resource://gre/modules/DownloadUtils.jsm");
const gDecimalSymbol = Number(5.4).toLocaleString().match(/\D/);
function _(str) {
return str.replace(/\./g, gDecimalSymbol);
}
function testConvertByteUnits(aBytes, aValue, aUnit)
{
let [value, unit] = DownloadUtils.convertByteUnits(aBytes);
do_check_eq(value, aValue);
do_check_eq(unit, aUnit);
}
function testTransferTotal(aCurrBytes, aMaxBytes, aTransfer)
{
let transfer = DownloadUtils.getTransferTotal(aCurrBytes, aMaxBytes);
do_check_eq(transfer, aTransfer);
}
// Get the em-dash character because typing it directly here doesn't work :(
var gDash = DownloadUtils.getDownloadStatus(0)[0].match(/remaining (.) 0 bytes/)[1];
var gVals = [0, 100, 2345, 55555, 982341, 23194134, 1482, 58, 9921949201, 13498132, Infinity];
function testStatus(aFunc, aCurr, aMore, aRate, aTest)
{
dump("Status Test: " + [aCurr, aMore, aRate, aTest] + "\n");
let curr = gVals[aCurr];
let max = curr + gVals[aMore];
let speed = gVals[aRate];
let [status, last] = aFunc(curr, max, speed);
if (0) {
dump("testStatus(" + aCurr + ", " + aMore + ", " + aRate + ", [\"" +
status.replace(gDash, "--") + "\", " + last.toFixed(3) + "]);\n");
}
// Make sure the status text matches
do_check_eq(status, _(aTest[0].replace(/--/, gDash)));
// Make sure the lastSeconds matches
if (last == Infinity)
do_check_eq(last, aTest[1]);
else
do_check_true(Math.abs(last - aTest[1]) < .1);
}
function testURI(aURI, aDisp, aHost)
{
dump("URI Test: " + [aURI, aDisp, aHost] + "\n");
let [disp, host] = DownloadUtils.getURIHost(aURI);
// Make sure we have the right display host and full host
do_check_eq(disp, aDisp);
do_check_eq(host, aHost);
}
function testGetReadableDates(aDate, aCompactValue)
{
const now = new Date(2000, 11, 31, 11, 59, 59);
let [dateCompact] = DownloadUtils.getReadableDates(aDate, now);
do_check_eq(dateCompact, aCompactValue);
}
function testAllGetReadableDates()
{
// This test cannot depend on the current date and time, or the date format.
// It depends on being run with the English localization, however.
const today_11_30 = new Date(2000, 11, 31, 11, 30, 15);
const today_12_30 = new Date(2000, 11, 31, 12, 30, 15);
const yesterday_11_30 = new Date(2000, 11, 30, 11, 30, 15);
const yesterday_12_30 = new Date(2000, 11, 30, 12, 30, 15);
const twodaysago = new Date(2000, 11, 29, 11, 30, 15);
const sixdaysago = new Date(2000, 11, 25, 11, 30, 15);
const sevendaysago = new Date(2000, 11, 24, 11, 30, 15);
// TODO: Remove Intl fallback when bug 1215247 is fixed.
const locale = typeof Intl === "undefined"
? undefined
: Components.classes["@mozilla.org/chrome/chrome-registry;1"]
.getService(Components.interfaces.nsIXULChromeRegistry)
.getSelectedLocale("global", true);
let dts = Components.classes["@mozilla.org/intl/scriptabledateformat;1"].
getService(Components.interfaces.nsIScriptableDateFormat);
testGetReadableDates(today_11_30, dts.FormatTime("", dts.timeFormatNoSeconds,
11, 30, 0));
testGetReadableDates(today_12_30, dts.FormatTime("", dts.timeFormatNoSeconds,
12, 30, 0));
testGetReadableDates(yesterday_11_30, "Yesterday");
testGetReadableDates(yesterday_12_30, "Yesterday");
testGetReadableDates(twodaysago,
typeof Intl === "undefined"
? twodaysago.toLocaleFormat("%A")
: twodaysago.toLocaleDateString(locale, { weekday: "long" }));
testGetReadableDates(sixdaysago,
typeof Intl === "undefined"
? sixdaysago.toLocaleFormat("%A")
: sixdaysago.toLocaleDateString(locale, { weekday: "long" }));
testGetReadableDates(sevendaysago,
(typeof Intl === "undefined"
? sevendaysago.toLocaleFormat("%B")
: sevendaysago.toLocaleDateString(locale, { month: "long" })) + " " +
sevendaysago.getDate().toString().padStart(2, "0"));
let [, dateTimeFull] = DownloadUtils.getReadableDates(today_11_30);
do_check_eq(dateTimeFull, dts.FormatDateTime("", dts.dateFormatLong,
dts.timeFormatNoSeconds,
2000, 12, 31, 11, 30, 0));
}
function run_test()
{
testConvertByteUnits(-1, "-1", "bytes");
testConvertByteUnits(1, _("1"), "bytes");
testConvertByteUnits(42, _("42"), "bytes");
testConvertByteUnits(123, _("123"), "bytes");
testConvertByteUnits(1024, _("1.0"), "KB");
testConvertByteUnits(8888, _("8.7"), "KB");
testConvertByteUnits(59283, _("57.9"), "KB");
testConvertByteUnits(640000, _("625"), "KB");
testConvertByteUnits(1048576, _("1.0"), "MB");
testConvertByteUnits(307232768, _("293"), "MB");
testConvertByteUnits(1073741824, _("1.0"), "GB");
testTransferTotal(1, 1, _("1 of 1 bytes"));
testTransferTotal(234, 4924, _("234 bytes of 4.8 KB"));
testTransferTotal(94923, 233923, _("92.7 of 228 KB"));
testTransferTotal(4924, 94923, _("4.8 of 92.7 KB"));
testTransferTotal(2342, 294960345, _("2.3 KB of 281 MB"));
testTransferTotal(234, undefined, _("234 bytes"));
testTransferTotal(4889023, undefined, _("4.7 MB"));
if (0) {
// Help find some interesting test cases
let r = () => Math.floor(Math.random() * 10);
for (let i = 0; i < 100; i++) {
testStatus(r(), r(), r());
}
}
// First, test with rates, via getDownloadStatus...
let statusFunc = DownloadUtils.getDownloadStatus.bind(DownloadUtils);
testStatus(statusFunc, 2, 1, 7, ["A few seconds remaining -- 2.3 of 2.4 KB (58 bytes/sec)", 1.724]);
testStatus(statusFunc, 1, 2, 6, ["A few seconds remaining -- 100 bytes of 2.4 KB (1.4 KB/sec)", 1.582]);
testStatus(statusFunc, 4, 3, 9, ["A few seconds remaining -- 959 KB of 1.0 MB (12.9 MB/sec)", 0.004]);
testStatus(statusFunc, 2, 3, 8, ["A few seconds remaining -- 2.3 of 56.5 KB (9.2 GB/sec)", 0.000]);
testStatus(statusFunc, 8, 4, 3, ["17 seconds remaining -- 9.2 of 9.2 GB (54.3 KB/sec)", 17.682]);
testStatus(statusFunc, 1, 3, 2, ["23 seconds remaining -- 100 bytes of 54.4 KB (2.3 KB/sec)", 23.691]);
testStatus(statusFunc, 9, 3, 2, ["23 seconds remaining -- 12.9 of 12.9 MB (2.3 KB/sec)", 23.691]);
testStatus(statusFunc, 5, 6, 7, ["25 seconds remaining -- 22.1 of 22.1 MB (58 bytes/sec)", 25.552]);
testStatus(statusFunc, 3, 9, 3, ["4 minutes remaining -- 54.3 KB of 12.9 MB (54.3 KB/sec)", 242.969]);
testStatus(statusFunc, 2, 3, 1, ["9 minutes remaining -- 2.3 of 56.5 KB (100 bytes/sec)", 555.550]);
testStatus(statusFunc, 4, 3, 7, ["15 minutes remaining -- 959 KB of 1.0 MB (58 bytes/sec)", 957.845]);
testStatus(statusFunc, 5, 3, 7, ["15 minutes remaining -- 22.1 of 22.2 MB (58 bytes/sec)", 957.845]);
testStatus(statusFunc, 1, 9, 2, ["1 hour, 35 minutes remaining -- 100 bytes of 12.9 MB (2.3 KB/sec)", 5756.133]);
testStatus(statusFunc, 2, 9, 6, ["2 hours, 31 minutes remaining -- 2.3 KB of 12.9 MB (1.4 KB/sec)", 9108.051]);
testStatus(statusFunc, 2, 4, 1, ["2 hours, 43 minutes remaining -- 2.3 of 962 KB (100 bytes/sec)", 9823.410]);
testStatus(statusFunc, 6, 4, 7, ["4 hours, 42 minutes remaining -- 1.4 of 961 KB (58 bytes/sec)", 16936.914]);
testStatus(statusFunc, 6, 9, 1, ["1 day, 13 hours remaining -- 1.4 KB of 12.9 MB (100 bytes/sec)", 134981.320]);
testStatus(statusFunc, 3, 8, 3, ["2 days, 1 hour remaining -- 54.3 KB of 9.2 GB (54.3 KB/sec)", 178596.872]);
testStatus(statusFunc, 1, 8, 6, ["77 days, 11 hours remaining -- 100 bytes of 9.2 GB (1.4 KB/sec)", 6694972.470]);
testStatus(statusFunc, 6, 8, 7, ["1979 days, 22 hours remaining -- 1.4 KB of 9.2 GB (58 bytes/sec)", 171068089.672]);
testStatus(statusFunc, 0, 0, 5, ["Unknown time remaining -- 0 of 0 bytes (22.1 MB/sec)", Infinity]);
testStatus(statusFunc, 0, 6, 0, ["Unknown time remaining -- 0 bytes of 1.4 KB (0 bytes/sec)", Infinity]);
testStatus(statusFunc, 6, 6, 0, ["Unknown time remaining -- 1.4 of 2.9 KB (0 bytes/sec)", Infinity]);
testStatus(statusFunc, 8, 5, 0, ["Unknown time remaining -- 9.2 of 9.3 GB (0 bytes/sec)", Infinity]);
// With rate equal to Infinity
testStatus(statusFunc, 0, 0, 10, ["Unknown time remaining -- 0 of 0 bytes (Really fast)", Infinity]);
testStatus(statusFunc, 1, 2, 10, ["A few seconds remaining -- 100 bytes of 2.4 KB (Really fast)", 0]);
// Now test without rates, via getDownloadStatusNoRate.
statusFunc = DownloadUtils.getDownloadStatusNoRate.bind(DownloadUtils);
testStatus(statusFunc, 2, 1, 7, ["A few seconds remaining -- 2.3 of 2.4 KB", 1.724]);
testStatus(statusFunc, 1, 2, 6, ["A few seconds remaining -- 100 bytes of 2.4 KB", 1.582]);
testStatus(statusFunc, 4, 3, 9, ["A few seconds remaining -- 959 KB of 1.0 MB", 0.004]);
testStatus(statusFunc, 2, 3, 8, ["A few seconds remaining -- 2.3 of 56.5 KB", 0.000]);
testStatus(statusFunc, 8, 4, 3, ["17 seconds remaining -- 9.2 of 9.2 GB", 17.682]);
testStatus(statusFunc, 1, 3, 2, ["23 seconds remaining -- 100 bytes of 54.4 KB", 23.691]);
testStatus(statusFunc, 9, 3, 2, ["23 seconds remaining -- 12.9 of 12.9 MB", 23.691]);
testStatus(statusFunc, 5, 6, 7, ["25 seconds remaining -- 22.1 of 22.1 MB", 25.552]);
testStatus(statusFunc, 3, 9, 3, ["4 minutes remaining -- 54.3 KB of 12.9 MB", 242.969]);
testStatus(statusFunc, 2, 3, 1, ["9 minutes remaining -- 2.3 of 56.5 KB", 555.550]);
testStatus(statusFunc, 4, 3, 7, ["15 minutes remaining -- 959 KB of 1.0 MB", 957.845]);
testStatus(statusFunc, 5, 3, 7, ["15 minutes remaining -- 22.1 of 22.2 MB", 957.845]);
testStatus(statusFunc, 1, 9, 2, ["1 hour, 35 minutes remaining -- 100 bytes of 12.9 MB", 5756.133]);
testStatus(statusFunc, 2, 9, 6, ["2 hours, 31 minutes remaining -- 2.3 KB of 12.9 MB", 9108.051]);
testStatus(statusFunc, 2, 4, 1, ["2 hours, 43 minutes remaining -- 2.3 of 962 KB", 9823.410]);
testStatus(statusFunc, 6, 4, 7, ["4 hours, 42 minutes remaining -- 1.4 of 961 KB", 16936.914]);
testStatus(statusFunc, 6, 9, 1, ["1 day, 13 hours remaining -- 1.4 KB of 12.9 MB", 134981.320]);
testStatus(statusFunc, 3, 8, 3, ["2 days, 1 hour remaining -- 54.3 KB of 9.2 GB", 178596.872]);
testStatus(statusFunc, 1, 8, 6, ["77 days, 11 hours remaining -- 100 bytes of 9.2 GB", 6694972.470]);
testStatus(statusFunc, 6, 8, 7, ["1979 days, 22 hours remaining -- 1.4 KB of 9.2 GB", 171068089.672]);
testStatus(statusFunc, 0, 0, 5, ["Unknown time remaining -- 0 of 0 bytes", Infinity]);
testStatus(statusFunc, 0, 6, 0, ["Unknown time remaining -- 0 bytes of 1.4 KB", Infinity]);
testStatus(statusFunc, 6, 6, 0, ["Unknown time remaining -- 1.4 of 2.9 KB", Infinity]);
testStatus(statusFunc, 8, 5, 0, ["Unknown time remaining -- 9.2 of 9.3 GB", Infinity]);
testURI("http://www.mozilla.org/", "mozilla.org", "www.mozilla.org");
testURI("http://www.city.mikasa.hokkaido.jp/", "city.mikasa.hokkaido.jp", "www.city.mikasa.hokkaido.jp");
testURI("data:text/html,Hello World", "data resource", "data resource");
testURI("jar:http://www.mozilla.com/file!/magic", "mozilla.com", "www.mozilla.com");
testURI("file:///C:/Cool/Stuff/", "local file", "local file");
// Don't test for moz-icon if we don't have a protocol handler for it (e.g. b2g):
if ("@mozilla.org/network/protocol;1?name=moz-icon" in Components.classes) {
testURI("moz-icon:file:///test.extension", "local file", "local file");
testURI("moz-icon://.extension", "moz-icon resource", "moz-icon resource");
}
testURI("about:config", "about resource", "about resource");
testURI("invalid.uri", "", "");
testAllGetReadableDates();
}

View file

@ -1,55 +0,0 @@
/* 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/. */
/**
* Test bug 448344 to make sure when we're in low minutes, we show both minutes
* and seconds; but continue to show only minutes when we have plenty.
*/
Components.utils.import("resource://gre/modules/DownloadUtils.jsm");
/**
* Print some debug message to the console. All arguments will be printed,
* separated by spaces.
*
* @param [arg0, arg1, arg2, ...]
* Any number of arguments to print out
* @usage _("Hello World") -> prints "Hello World"
* @usage _(1, 2, 3) -> prints "1 2 3"
*/
var _ = function(some, debug, text, to) {
print(Array.slice(arguments).join(" "));
};
_("Make an array of time lefts and expected string to be shown for that time");
var expectedTimes = [
[1.1, "A few seconds remaining", "under 4sec -> few"],
[2.5, "A few seconds remaining", "under 4sec -> few"],
[3.9, "A few seconds remaining", "under 4sec -> few"],
[5.3, "5 seconds remaining", "truncate seconds"],
[1.1 * 60, "1 minute, 6 seconds remaining", "under 4min -> show sec"],
[2.5 * 60, "2 minutes, 30 seconds remaining", "under 4min -> show sec"],
[3.9 * 60, "3 minutes, 54 seconds remaining", "under 4min -> show sec"],
[5.3 * 60, "5 minutes remaining", "over 4min -> only show min"],
[1.1 * 3600, "1 hour, 6 minutes remaining", "over 1hr -> show min/sec"],
[2.5 * 3600, "2 hours, 30 minutes remaining", "over 1hr -> show min/sec"],
[3.9 * 3600, "3 hours, 54 minutes remaining", "over 1hr -> show min/sec"],
[5.3 * 3600, "5 hours, 18 minutes remaining", "over 1hr -> show min/sec"],
];
_(expectedTimes.join("\n"));
function run_test()
{
expectedTimes.forEach(function([time, expectStatus, comment]) {
_("Running test with time", time);
_("Test comment:", comment);
let [status, last] = DownloadUtils.getTimeLeft(time);
_("Got status:", status, "last:", last);
_("Expecting..", expectStatus);
do_check_eq(status, expectStatus);
_();
});
}

View file

@ -1,26 +0,0 @@
/* 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/. */
/**
* Test bug 420482 by making sure multiple consumers of DownloadUtils gets the
* same time remaining time if they provide the same time left but a different
* "last time".
*/
var Cu = Components.utils;
Cu.import("resource://gre/modules/DownloadUtils.jsm");
function run_test()
{
// Simulate having multiple downloads requesting time left
let downloadTimes = {};
for (let time of [1, 30, 60, 3456, 9999])
downloadTimes[time] = DownloadUtils.getTimeLeft(time)[0];
// Pretend we're a download status bar also asking for a time left, but we're
// using a different "last sec". We need to make sure we get the same time.
let lastSec = 314;
for (let [time, text] of Object.entries(downloadTimes))
do_check_eq(DownloadUtils.getTimeLeft(time, lastSec)[0], text);
}

View file

@ -1,25 +0,0 @@
/* 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/. */
/**
* Make sure passing null and nothing to various variable-arg DownloadUtils
* methods provide the same result.
*/
var Cu = Components.utils;
Cu.import("resource://gre/modules/DownloadUtils.jsm");
function run_test()
{
do_check_eq(DownloadUtils.getDownloadStatus(1000, null, null, null) + "",
DownloadUtils.getDownloadStatus(1000) + "");
do_check_eq(DownloadUtils.getDownloadStatus(1000, null, null) + "",
DownloadUtils.getDownloadStatus(1000, null) + "");
do_check_eq(DownloadUtils.getTransferTotal(1000, null) + "",
DownloadUtils.getTransferTotal(1000) + "");
do_check_eq(DownloadUtils.getTimeLeft(1000, null) + "",
DownloadUtils.getTimeLeft(1000) + "");
}

View file

@ -1,10 +0,0 @@
[DEFAULT]
head = head_downloads.js
tail =
skip-if = toolkit == 'android'
[test_DownloadPaths.js]
[test_DownloadUtils.js]
[test_lowMinutes.js]
[test_syncedDownloadUtils.js]
[test_unspecified_arguments.js]

View file

@ -1,14 +1,16 @@
component {4399533d-08d1-458c-a87a-235f74451cfa} addonManager.js
contract @mozilla.org/addons/integration;1 {4399533d-08d1-458c-a87a-235f74451cfa}
category update-timer addonManager @mozilla.org/addons/integration;1,getService,addon-background-update-timer,extensions.update.interval,86400
component {7beb3ba8-6ec3-41b4-b67c-da89b8518922} amContentHandler.js
contract @mozilla.org/uriloader/content-handler;1?type=application/x-xpinstall {7beb3ba8-6ec3-41b4-b67c-da89b8518922}
component {0f38e086-89a3-40a5-8ffc-9b694de1d04a} amWebInstallListener.js
contract @mozilla.org/addons/web-install-listener;1 {0f38e086-89a3-40a5-8ffc-9b694de1d04a}
component {9df8ef2b-94da-45c9-ab9f-132eb55fddf1} amInstallTrigger.js
contract @mozilla.org/addons/installtrigger;1 {9df8ef2b-94da-45c9-ab9f-132eb55fddf1}
category JavaScript-global-property InstallTrigger @mozilla.org/addons/installtrigger;1
#ifndef MOZ_WIDGET_ANDROID
category addon-provider-module PluginProvider resource://gre/modules/addons/PluginProvider.jsm
#endif
category addon-provider-module GMPProvider resource://gre/modules/addons/GMPProvider.jsm

View file

@ -10,16 +10,11 @@ EXTRA_JS_MODULES.addons += [
'Content.js',
'GMPProvider.jsm',
'LightweightThemeImageOptimizer.jsm',
'PluginProvider.jsm',
'ProductAddonChecker.jsm',
'SpellCheckDictionaryBootstrap.js',
]
# Don't ship unused providers on Android
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
EXTRA_JS_MODULES.addons += [
'PluginProvider.jsm',
]
EXTRA_PP_JS_MODULES.addons += [
'AddonRepository.jsm',
'AddonUpdateChecker.jsm',

View file

@ -11,11 +11,7 @@ DIRS += [
'updater',
]
XPIDL_SOURCES += [
'nsIUpdateService.idl',
]
TEST_DIRS += ['tests']
XPIDL_SOURCES += ['nsIUpdateService.idl']
EXTRA_COMPONENTS += [
'nsUpdateService.manifest',
@ -25,6 +21,3 @@ EXTRA_COMPONENTS += [
EXTRA_PP_COMPONENTS += ['nsUpdateService.js']
JAR_MANIFESTS += ['jar.mn']
with Files('**'):
BUG_COMPONENT = ('Toolkit', 'Application Update')

View file

@ -1,39 +0,0 @@
# 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/.
XPCSHELLTESTROOT = $(topobjdir)/_tests/xpcshell/$(relativesrcdir)
pp_const_file = $(srcdir)/data/xpcshellConstantsPP.js
PP_TARGETS += aus-test-const
aus-test-const := $(pp_const_file)
aus-test-const_PATH := $(XPCSHELLTESTROOT)/data
aus-test-const_FLAGS := -Fsubstitution $(DEFINES) $(ACDEFINES)
aus-test-const_TARGET := misc
INI_TEST_FILES = \
TestAUSReadStrings1.ini \
TestAUSReadStrings2.ini \
TestAUSReadStrings3.ini \
$(NULL)
MOZ_WINCONSOLE = 1
include $(topsrcdir)/config/rules.mk
# TestAUSReadStrings runs during check in the following directory with a Unicode
# char in order to test bug 473417 on Windows.
ifeq ($(OS_ARCH),WINNT)
bug473417dir = test_bug473417-ó
else
bug473417dir = test_bug473417
endif
check::
$(RM) -rf $(DEPTH)/_tests/updater/ && $(NSINSTALL) -D $(DEPTH)/_tests/updater/$(bug473417dir)/
for i in $(INI_TEST_FILES); do \
$(INSTALL) $(srcdir)/$$i $(DEPTH)/_tests/updater/$(bug473417dir)/; \
done
$(INSTALL) $(FINAL_TARGET)/TestAUSReadStrings$(BIN_SUFFIX) $(DEPTH)/_tests/updater/$(bug473417dir)/
@$(RUN_TEST_PROGRAM) $(DEPTH)/_tests/updater/$(bug473417dir)/TestAUSReadStrings$(BIN_SUFFIX)

View file

@ -1,415 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
#ifdef XP_WIN
# include <windows.h>
# include <wintrust.h>
# include <tlhelp32.h>
# include <softpub.h>
# include <direct.h>
# include <io.h>
typedef WCHAR NS_tchar;
# define NS_main wmain
# ifndef F_OK
# define F_OK 00
# endif
# ifndef W_OK
# define W_OK 02
# endif
# ifndef R_OK
# define R_OK 04
# endif
# if defined(_MSC_VER) && _MSC_VER < 1900
# define stat _stat
# endif
# define NS_T(str) L ## str
# define NS_tsnprintf(dest, count, fmt, ...) \
{ \
int _count = count - 1; \
_snwprintf(dest, _count, fmt, ##__VA_ARGS__); \
dest[_count] = L'\0'; \
}
# define NS_taccess _waccess
# define NS_tchdir _wchdir
# define NS_tfopen _wfopen
# define NS_tstrcmp wcscmp
# define NS_ttoi _wtoi
# define NS_tstat _wstat
# define NS_tgetcwd _wgetcwd
# define LOG_S "%S"
#include "../common/updatehelper.h"
#include "../common/certificatecheck.h"
#else
# include <unistd.h>
# define NS_main main
typedef char NS_tchar;
# define NS_T(str) str
# define NS_tsnprintf snprintf
# define NS_taccess access
# define NS_tchdir chdir
# define NS_tfopen fopen
# define NS_tstrcmp strcmp
# define NS_ttoi atoi
# define NS_tstat stat
# define NS_tgetcwd getcwd
# define NS_tfputs fputs
# define LOG_S "%s"
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#ifndef MAXPATHLEN
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
# elif defined(MAX_PATH)
# define MAXPATHLEN MAX_PATH
# elif defined(_MAX_PATH)
# define MAXPATHLEN _MAX_PATH
# elif defined(CCHMAXPATH)
# define MAXPATHLEN CCHMAXPATH
# else
# define MAXPATHLEN 1024
# endif
#endif
static void
WriteMsg(const NS_tchar *path, const char *status)
{
FILE* outFP = NS_tfopen(path, NS_T("wb"));
if (!outFP) {
return;
}
fprintf(outFP, "%s\n", status);
fclose(outFP);
outFP = nullptr;
}
static bool
CheckMsg(const NS_tchar *path, const char *expected)
{
if (NS_taccess(path, F_OK)) {
return false;
}
FILE *inFP = NS_tfopen(path, NS_T("rb"));
if (!inFP) {
return false;
}
struct stat ms;
if (fstat(fileno(inFP), &ms)) {
fclose(inFP);
inFP = nullptr;
return false;
}
char *mbuf = (char *) malloc(ms.st_size + 1);
if (!mbuf) {
fclose(inFP);
inFP = nullptr;
return false;
}
size_t r = ms.st_size;
char *rb = mbuf;
size_t c = fread(rb, sizeof(char), 50, inFP);
r -= c;
rb += c;
if (c == 0 && r) {
free(mbuf);
fclose(inFP);
inFP = nullptr;
return false;
}
mbuf[ms.st_size] = '\0';
rb = mbuf;
bool isMatch = strcmp(rb, expected) == 0;
free(mbuf);
fclose(inFP);
inFP = nullptr;
return isMatch;
}
int NS_main(int argc, NS_tchar **argv)
{
if (argc == 2) {
if (!NS_tstrcmp(argv[1], NS_T("post-update-async")) ||
!NS_tstrcmp(argv[1], NS_T("post-update-sync"))) {
NS_tchar exePath[MAXPATHLEN];
#ifdef XP_WIN
if (!::GetModuleFileNameW(0, exePath, MAXPATHLEN)) {
return 1;
}
#else
strcpy(exePath, argv[0]);
#endif
NS_tchar runFilePath[MAXPATHLEN];
NS_tsnprintf(runFilePath, sizeof(runFilePath)/sizeof(runFilePath[0]),
NS_T("%s.running"), exePath);
#ifdef XP_WIN
if (!NS_taccess(runFilePath, F_OK)) {
// This makes it possible to check if the post update process was
// launched twice which happens when the service performs an update.
NS_tchar runFilePathBak[MAXPATHLEN];
NS_tsnprintf(runFilePathBak, sizeof(runFilePathBak)/sizeof(runFilePathBak[0]),
NS_T("%s.bak"), runFilePath);
MoveFileExW(runFilePath, runFilePathBak, MOVEFILE_REPLACE_EXISTING);
}
#endif
WriteMsg(runFilePath, "running");
if (!NS_tstrcmp(argv[1], NS_T("post-update-sync"))) {
#ifdef XP_WIN
Sleep(2000);
#else
sleep(2);
#endif
}
NS_tchar logFilePath[MAXPATHLEN];
NS_tsnprintf(logFilePath, sizeof(logFilePath)/sizeof(logFilePath[0]),
NS_T("%s.log"), exePath);
WriteMsg(logFilePath, "post-update");
return 0;
}
}
if (argc < 3) {
fprintf(stderr, \
"\n" \
"Application Update Service Test Helper\n" \
"\n" \
"Usage: WORKINGDIR INFILE OUTFILE -s SECONDS [FILETOLOCK]\n" \
" or: WORKINGDIR LOGFILE [ARG2 ARG3...]\n" \
" or: signature-check filepath\n" \
" or: setup-symlink dir1 dir2 file symlink\n" \
" or: remove-symlink dir1 dir2 file symlink\n" \
" or: check-symlink symlink\n" \
" or: post-update\n" \
"\n" \
" WORKINGDIR \tThe relative path to the working directory to use.\n" \
" INFILE \tThe relative path from the working directory for the file to\n" \
" \tread actions to perform such as finish.\n" \
" OUTFILE \tThe relative path from the working directory for the file to\n" \
" \twrite status information.\n" \
" SECONDS \tThe number of seconds to sleep.\n" \
" FILETOLOCK \tThe relative path from the working directory to an existing\n" \
" \tfile to open exlusively.\n" \
" \tOnly available on Windows platforms and silently ignored on\n" \
" \tother platforms.\n" \
" LOGFILE \tThe relative path from the working directory to log the\n" \
" \tcommand line arguments.\n" \
" ARG2 ARG3...\tArguments to write to the LOGFILE after the preceding command\n" \
" \tline arguments.\n" \
"\n" \
"Note: All paths must be relative.\n" \
"\n");
return 1;
}
if (!NS_tstrcmp(argv[1], NS_T("check-signature"))) {
// Not implemented
return 1;
}
if (!NS_tstrcmp(argv[1], NS_T("setup-symlink"))) {
#ifdef XP_UNIX
NS_tchar path[MAXPATHLEN];
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s"), NS_T("/tmp"), argv[2]);
mkdir(path, 0755);
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s/%s"), NS_T("/tmp"), argv[2], argv[3]);
mkdir(path, 0755);
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s/%s/%s"), NS_T("/tmp"), argv[2], argv[3], argv[4]);
FILE * file = NS_tfopen(path, NS_T("w"));
if (file) {
NS_tfputs(NS_T("test"), file);
fclose(file);
}
if (symlink(path, argv[5]) != 0) {
return 1;
}
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s"), NS_T("/tmp"), argv[2]);
if (argc > 6 && !NS_tstrcmp(argv[6], NS_T("change-perm"))) {
chmod(path, 0644);
}
return 0;
#else
// Not implemented on non-Unix platforms
return 1;
#endif
}
if (!NS_tstrcmp(argv[1], NS_T("remove-symlink"))) {
#ifdef XP_UNIX
NS_tchar path[MAXPATHLEN];
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s"), NS_T("/tmp"), argv[2]);
chmod(path, 0755);
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s/%s/%s"), NS_T("/tmp"), argv[2], argv[3], argv[4]);
unlink(path);
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s/%s"), NS_T("/tmp"), argv[2], argv[3]);
rmdir(path);
NS_tsnprintf(path, sizeof(path)/sizeof(path[0]),
NS_T("%s/%s"), NS_T("/tmp"), argv[2]);
rmdir(path);
return 0;
#else
// Not implemented on non-Unix platforms
return 1;
#endif
}
if (!NS_tstrcmp(argv[1], NS_T("check-symlink"))) {
#ifdef XP_UNIX
struct stat ss;
lstat(argv[2], &ss);
return S_ISLNK(ss.st_mode) ? 0 : 1;
#else
// Not implemented on non-Unix platforms
return 1;
#endif
}
if (!NS_tstrcmp(argv[1], NS_T("wait-for-service-stop"))) {
#ifdef XP_WIN
const int maxWaitSeconds = NS_ttoi(argv[3]);
LPCWSTR serviceName = argv[2];
DWORD serviceState = WaitForServiceStop(serviceName, maxWaitSeconds);
if (SERVICE_STOPPED == serviceState) {
return 0;
} else {
return serviceState;
}
#else
// Not implemented on non-Windows platforms
return 1;
#endif
}
if (!NS_tstrcmp(argv[1], NS_T("wait-for-application-exit"))) {
#ifdef XP_WIN
const int maxWaitSeconds = NS_ttoi(argv[3]);
LPCWSTR application = argv[2];
DWORD ret = WaitForProcessExit(application, maxWaitSeconds);
if (ERROR_SUCCESS == ret) {
return 0;
} else if (WAIT_TIMEOUT == ret) {
return 1;
} else {
return 2;
}
#else
// Not implemented on non-Windows platforms
return 1;
#endif
}
if (!NS_tstrcmp(argv[1], NS_T("is-process-running"))) {
#ifdef XP_WIN
LPCWSTR application = argv[2];
return (ERROR_NOT_FOUND == IsProcessRunning(application)) ? 0 : 1;
#else
// Not implemented on non-Windows platforms
return 1;
#endif
}
if (!NS_tstrcmp(argv[1], NS_T("launch-service"))) {
#ifdef XP_WIN
DWORD ret = LaunchServiceSoftwareUpdateCommand(argc - 2, (LPCWSTR *)argv + 2);
if (ret != ERROR_SUCCESS) {
// 192 is used to avoid reusing a possible return value from the call to
// WaitForServiceStop
return 0x000000C0;
}
// Wait a maximum of 120 seconds.
DWORD lastState = WaitForServiceStop(SVC_NAME, 120);
if (SERVICE_STOPPED == lastState) {
return 0;
}
return lastState;
#else
// Not implemented on non-Windows platforms
return 1;
#endif
}
if (NS_tchdir(argv[1]) != 0) {
return 1;
}
// File in use test helper section
if (!NS_tstrcmp(argv[4], NS_T("-s"))) {
NS_tchar *cwd = NS_tgetcwd(nullptr, 0);
NS_tchar inFilePath[MAXPATHLEN];
NS_tsnprintf(inFilePath, sizeof(inFilePath)/sizeof(inFilePath[0]),
NS_T("%s/%s"), cwd, argv[2]);
NS_tchar outFilePath[MAXPATHLEN];
NS_tsnprintf(outFilePath, sizeof(outFilePath)/sizeof(outFilePath[0]),
NS_T("%s/%s"), cwd, argv[3]);
int seconds = NS_ttoi(argv[5]);
#ifdef XP_WIN
HANDLE hFile = INVALID_HANDLE_VALUE;
if (argc == 7) {
hFile = CreateFileW(argv[6],
DELETE | GENERIC_WRITE, 0,
nullptr, OPEN_EXISTING, 0, nullptr);
if (hFile == INVALID_HANDLE_VALUE) {
WriteMsg(outFilePath, "error_locking");
return 1;
}
}
WriteMsg(outFilePath, "sleeping");
int i = 0;
while (!CheckMsg(inFilePath, "finish\n") && i++ <= seconds) {
Sleep(1000);
}
if (argc == 7) {
CloseHandle(hFile);
}
#else
WriteMsg(outFilePath, "sleeping");
int i = 0;
while (!CheckMsg(inFilePath, "finish\n") && i++ <= seconds) {
sleep(1);
}
#endif
WriteMsg(outFilePath, "finished");
return 0;
}
{
// Command line argument test helper section
NS_tchar logFilePath[MAXPATHLEN];
NS_tsnprintf(logFilePath, sizeof(logFilePath)/sizeof(logFilePath[0]),
NS_T("%s"), argv[2]);
FILE* logFP = NS_tfopen(logFilePath, NS_T("wb"));
for (int i = 1; i < argc; ++i) {
fprintf(logFP, LOG_S "\n", argv[i]);
}
fclose(logFP);
logFP = nullptr;
}
return 0;
}

View file

@ -1,172 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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/. */
/**
* This binary tests the updater's ReadStrings ini parser and should run in a
* directory with a Unicode character to test bug 473417.
*/
#ifdef XP_WIN
#include <windows.h>
#define NS_main wmain
#define NS_tstrrchr wcsrchr
#define NS_T(str) L ## str
#define PATH_SEPARATOR_CHAR L'\\'
// On Windows, argv[0] can also have forward slashes instead
#define ALT_PATH_SEPARATOR_CHAR L'/'
#else
#include <unistd.h>
#define NS_main main
#define NS_tstrrchr strrchr
#define NS_T(str) str
#define PATH_SEPARATOR_CHAR '/'
#endif
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include "updater/resource.h"
#include "updater/progressui.h"
#include "common/readstrings.h"
#include "common/errors.h"
#include "mozilla/ArrayUtils.h"
#ifndef MAXPATHLEN
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
# elif defined(MAX_PATH)
# define MAXPATHLEN MAX_PATH
# elif defined(_MAX_PATH)
# define MAXPATHLEN _MAX_PATH
# elif defined(CCHMAXPATH)
# define MAXPATHLEN CCHMAXPATH
# else
# define MAXPATHLEN 1024
# endif
#endif
#define TEST_NAME "Updater ReadStrings"
using namespace mozilla;
static int gFailCount = 0;
/**
* Prints the given failure message and arguments using printf, prepending
* "TEST-UNEXPECTED-FAIL " for the benefit of the test harness and
* appending "\n" to eliminate having to type it at each call site.
*/
void fail(const char* msg, ...)
{
va_list ap;
printf("TEST-UNEXPECTED-FAIL | ");
va_start(ap, msg);
vprintf(msg, ap);
va_end(ap);
putchar('\n');
++gFailCount;
}
int NS_main(int argc, NS_tchar **argv)
{
printf("Running TestAUSReadStrings tests\n");
int rv = 0;
int retval;
NS_tchar inifile[MAXPATHLEN];
StringTable testStrings;
NS_tchar *slash = NS_tstrrchr(argv[0], PATH_SEPARATOR_CHAR);
#ifdef ALT_PATH_SEPARATOR_CHAR
NS_tchar *altslash = NS_tstrrchr(argv[0], ALT_PATH_SEPARATOR_CHAR);
slash = (slash > altslash) ? slash : altslash;
#endif // ALT_PATH_SEPARATOR_CHAR
if (!slash) {
fail("%s | unable to find platform specific path separator (check 1)", TEST_NAME);
return 20;
}
*(++slash) = '\0';
// Test success when the ini file exists with both Title and Info in the
// Strings section and the values for Title and Info.
NS_tsnprintf(inifile, ArrayLength(inifile), NS_T("%sTestAUSReadStrings1.ini"), argv[0]);
retval = ReadStrings(inifile, &testStrings);
if (retval == OK) {
if (strcmp(testStrings.title, "Title Test - \xD0\x98\xD1\x81\xD0\xBF\xD1\x8B" \
"\xD1\x82\xD0\xB0\xD0\xBD\xD0\xB8\xD0\xB5 " \
"\xCE\x94\xCE\xBF\xCE\xBA\xCE\xB9\xCE\xBC\xCE\xAE " \
"\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88 " \
"\xE6\xB8\xAC\xE8\xA9\xA6 " \
"\xE6\xB5\x8B\xE8\xAF\x95") != 0) {
rv = 21;
fail("%s | Title ini value incorrect (check 3)", TEST_NAME);
}
if (strcmp(testStrings.info, "Info Test - \xD0\x98\xD1\x81\xD0\xBF\xD1\x8B" \
"\xD1\x82\xD0\xB0\xD0\xBD\xD0\xB8\xD0\xB5 " \
"\xCE\x94\xCE\xBF\xCE\xBA\xCE\xB9\xCE\xBC\xCE\xAE " \
"\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88 " \
"\xE6\xB8\xAC\xE8\xA9\xA6 " \
"\xE6\xB5\x8B\xE8\xAF\x95\xE2\x80\xA6") != 0) {
rv = 22;
fail("%s | Info ini value incorrect (check 4)", TEST_NAME);
}
} else {
fail("%s | ReadStrings returned %i (check 2)", TEST_NAME, retval);
rv = 23;
}
// Test failure when the ini file exists without Title and with Info in the
// Strings section.
NS_tsnprintf(inifile, ArrayLength(inifile), NS_T("%sTestAUSReadStrings2.ini"), argv[0]);
retval = ReadStrings(inifile, &testStrings);
if (retval != PARSE_ERROR) {
rv = 24;
fail("%s | ReadStrings returned %i (check 5)", TEST_NAME, retval);
}
// Test failure when the ini file exists with Title and without Info in the
// Strings section.
NS_tsnprintf(inifile, ArrayLength(inifile), NS_T("%sTestAUSReadStrings3.ini"), argv[0]);
retval = ReadStrings(inifile, &testStrings);
if (retval != PARSE_ERROR) {
rv = 25;
fail("%s | ReadStrings returned %i (check 6)", TEST_NAME, retval);
}
// Test failure when the ini file doesn't exist
NS_tsnprintf(inifile, ArrayLength(inifile), NS_T("%sTestAUSReadStringsBogus.ini"), argv[0]);
retval = ReadStrings(inifile, &testStrings);
if (retval != READ_ERROR) {
rv = 26;
fail("%s | ini file doesn't exist (check 7)", TEST_NAME);
}
// Test reading a non-default section name
NS_tsnprintf(inifile, ArrayLength(inifile), NS_T("%sTestAUSReadStrings3.ini"), argv[0]);
retval = ReadStrings(inifile, "Title\0", 1, &testStrings.title, "BogusSection2");
if (retval == OK) {
if (strcmp(testStrings.title, "Bogus Title") != 0) {
rv = 27;
fail("%s | Title ini value incorrect (check 9)", TEST_NAME);
}
} else {
fail("%s | ReadStrings returned %i (check 8)", TEST_NAME, retval);
rv = 28;
}
if (rv == 0) {
printf("TEST-PASS | %s | all checks passed\n", TEST_NAME);
} else {
fail("%s | %i out of 9 checks failed", TEST_NAME, gFailCount);
}
return rv;
}

View file

@ -1,47 +0,0 @@
; This file is in the UTF-8 encoding
[BogusSection1]
; Comment
Title=Bogus Title
; Comment
Info=Bogus Info
; Comment
[Strings]
Bogus1=Bogus1
; Comment
Title=Title Test - Испытание Δοκιμή テスト 測試 测试
; Comment
Bogus2=Bogus2
; Comment
Info=Info Test - Испытание Δοκιμή テスト 測試 测试…
; Comment
Bogus3=Bogus3
; Comment
[BogusSection2]
; Comment
Title=Bogus Title
; Comment
Info=Bogus Info
; Comment

View file

@ -1,39 +0,0 @@
; This file is in the UTF-8 encoding
[BogusSection1]
; Comment
Title=Bogus Title
; Comment
Info=Bogus Info
; Comment
[Strings]
Bogus1=Bogus1
; Comment
Info=Info
; Comment
Bogus2=Bogus2
; Comment
[BogusSection2]
; Comment
Title=Bogus Title
; Comment
Info=Bogus Info
; Comment

View file

@ -1,39 +0,0 @@
; This file is in the UTF-8 encoding
[BogusSection1]
; Comment
Title=Bogus Title
; Comment
Info=Bogus Info
; Comment
[Strings]
Bogus1=Bogus1
; Comment
Title=Title
; Comment
Bogus2=Bogus2
; Comment
[BogusSection2]
; Comment
Title=Bogus Title
; Comment
Info=Bogus Info
; Comment

View file

@ -1,7 +0,0 @@
"use strict";
module.exports = {
"extends": [
"../../../../../testing/mochitest/chrome.eslintrc.js"
]
};

View file

@ -1,64 +0,0 @@
; 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/.
[DEFAULT]
tags = appupdate
support-files =
utils.js
update.sjs
; mochitest-chrome tests must start with "test_" and are executed in sorted
; order and not in the order specified in the manifest.
[test_0010_background_basic.xul]
[test_0011_check_basic.xul]
[test_0012_check_basic_staging.xul]
skip-if = asan
reason = Bug 1168003
[test_0013_check_no_updates.xul]
[test_0014_check_error_xml_malformed.xul]
[test_0061_check_verifyFailPartial_noComplete.xul]
[test_0062_check_verifyFailComplete_noPartial.xul]
[test_0063_check_verifyFailPartialComplete.xul]
[test_0064_check_verifyFailPartial_successComplete.xul]
[test_0071_notify_verifyFailPartial_noComplete.xul]
[test_0072_notify_verifyFailComplete_noPartial.xul]
[test_0073_notify_verifyFailPartialComplete.xul]
[test_0074_notify_verifyFailPartial_successComplete.xul]
[test_0081_error_patchApplyFailure_partial_only.xul]
[test_0082_error_patchApplyFailure_complete_only.xul]
[test_0083_error_patchApplyFailure_partial_complete.xul]
[test_0084_error_patchApplyFailure_verify_failed.xul]
[test_0085_error_patchApplyFailure_partial_complete_staging.xul]
skip-if = asan
reason = Bug 1168003
[test_0092_finishedBackground.xul]
[test_0093_restartNotification.xul]
[test_0094_restartNotification_remote.xul]
[test_0095_restartNotification_remoteInvalidNumber.xul]
[test_0096_restartNotification_stagedBackground.xul]
skip-if = asan
reason = Bug 1168003
[test_0097_restartNotification_stagedServiceBackground.xul]
skip-if = os != 'win'
reason = only Windows has the maintenance service.
[test_0101_background_restartNotification.xul]
[test_0102_background_restartNotification_staging.xul]
skip-if = asan
reason = Bug 1168003
[test_0103_background_restartNotification_stagingService.xul]
skip-if = os != 'win'
reason = only Windows has the maintenance service.
[test_0111_neverButton_basic.xul]
[test_0113_showNeverForVersionRemovedWithPref.xul]
[test_0151_notify_backgroundCheckError.xul]
[test_0152_notify_backgroundCheckOfflineRetry.xul]
[test_0161_check_unsupported.xul]
[test_0162_notify_unsupported.xul]
[test_0171_check_noPerms_manual.xul]
skip-if = os != 'win'
reason = test must be able to prevent file deletion.
[test_0172_notify_noPerms_manual.xul]
skip-if = os != 'win'
reason = test must be able to prevent file deletion.
[test_9999_cleanup.xul]

View file

@ -1,50 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: basic, download, and finished"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_FINISHED,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&showPrompt=1" +
getVersionParams();
setUpdateURL(url);
gAUS.checkForBackgroundUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,51 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check, basic, download, and finished"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_FINISHED,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,55 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check, basic, download with staging, and finished"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_FINISHED,
buttonClick: "extra1"
} ];
gUseTestUpdater = true;
function runTest() {
debugDump("entering");
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, true);
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,46 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check and no updates found"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_NO_UPDATES_FOUND,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?noUpdates=1";
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,46 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check and error (xml malformed)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?xmlMalformed=1";
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check, basic, download, and errors (partial patch with an invalid size)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&partialPatchOnly=1" +
"&invalidPartialSize=1" + getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check, basic, download, and errors (complete patch with an invalid size)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&completePatchOnly=1" +
"&invalidCompleteSize=1" + getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check, basic, download, and errors (partial and complete patches with invalid sizes)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&invalidPartialSize=1" +
"&invalidCompleteSize=1" + getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check, basic, download, and finished (partial patch with an invalid size and successful complete patch)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_FINISHED,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&invalidPartialSize=1" +
getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,53 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: errors (partial patch with an invalid size)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("partial", null, null, null, "1234", null,
STATE_DOWNLOADING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version,
Services.appinfo.platformVersion);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_DOWNLOADING);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: errors (complete patch with an invalid size)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, "1234", null,
STATE_DOWNLOADING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_DOWNLOADING);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,55 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: errors (partial and complete patches with invalid sizes)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("partial", null, null, null, "1234", null,
STATE_DOWNLOADING) +
getLocalPatchString("complete", null, null, null, "1234",
"false");
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, "false");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_DOWNLOADING);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,55 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: finishedBackground (partial patch with an invalid size and successful complete patch)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("partial", null, null, null, "1234", null,
STATE_DOWNLOADING) +
getLocalPatchString("complete", null, null, null, null,
"false");
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, "false");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_DOWNLOADING);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,53 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: errors (partial only patch apply failure)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("partial", null, null, null, null, null,
STATE_PENDING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, "false");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_FAILED_CRC_ERROR);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: errors (complete only patch apply failure)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERRORS,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_PENDING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_FAILED_CRC_ERROR);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,67 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: error patching, download, and finished (partial failed and download complete)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERROR_PATCHING,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING,
extraStartFunction: createContinueFile
}, {
pageid: PAGEID_FINISHED,
buttonClick: "extra1",
extraStartFunction: removeContinueFile
} ];
function runTest() {
debugDump("entering");
removeContinueFile();
// Specify the url to update.sjs with a slowDownloadMar param so the ui can
// load before the download completes.
let slowDownloadURL = URL_HTTP_UPDATE_XML + "?slowDownloadMar=1";
let patches = getLocalPatchString("partial", null, null, null, null, null,
STATE_PENDING) +
getLocalPatchString("complete", slowDownloadURL, null, null,
null, "false");
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, "false");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_FAILED_CRC_ERROR);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,68 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: error patching, download, and errors (partial failed and download complete verification failure)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERROR_PATCHING,
buttonClick: "next"
}, {
pageid: PAGEID_DOWNLOADING,
extraStartFunction: createContinueFile
}, {
pageid: PAGEID_ERRORS,
buttonClick: "finish",
extraStartFunction: removeContinueFile
} ];
function runTest() {
debugDump("entering");
removeContinueFile();
// Specify the url to update.sjs with a slowDownloadMar param so the ui can
// load before the download completes.
let slowDownloadURL = URL_HTTP_UPDATE_XML + "?slowDownloadMar=1";
let patches = getLocalPatchString("partial", null, null, null, null, null,
STATE_PENDING) +
getLocalPatchString("complete", slowDownloadURL, "MD5",
null, "1234",
"false");
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, "false");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_FAILED_CRC_ERROR);
reloadUpdateManagerData();
testPostUpdateProcessing();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,94 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: error patching, download with staging, and finished (partial failed and download complete), with fast MAR download"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
// This test forces the download to complete before the "next" button on the
// errorpatching wizard page is clicked. This is done by creating the continue
// file when the wizard loads to start the download, then clicking the "next"
// button in the download's onStopRequest event listener.
const testDownloadListener = {
onStartRequest(aRequest, aContext) { },
onProgress(aRequest, aContext, aProgress, aMaxProgress) { },
onStatus(aRequest, aContext, aStatus, aStatusText) { },
onStopRequest(aRequest, aContext, aStatus) {
debugDump("clicking errorpatching page next button");
gDocElem.getButton("next").click();
gAUS.removeDownloadListener(this);
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIRequestObserver,
Ci.nsIProgressEventSink])
};
let TESTS = [ {
pageid: PAGEID_ERROR_PATCHING,
extraCheckFunction: createContinueFile
}, {
pageid: PAGEID_DOWNLOADING
}, {
pageid: PAGEID_FINISHED,
buttonClick: "extra1",
extraStartFunction: removeContinueFile
} ];
gUseTestUpdater = true;
function runTest() {
debugDump("entering");
removeContinueFile();
// Specify the url to update.sjs with a slowDownloadMar param so the ui can
// load before the download completes.
let slowDownloadURL = URL_HTTP_UPDATE_XML + "?slowDownloadMar=1";
let patches = getLocalPatchString("partial", null, null, null, null, null,
STATE_PENDING) +
getLocalPatchString("complete", slowDownloadURL, null, null,
null, "false");
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, "false");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_FAILED_READ_ERROR);
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, true);
reloadUpdateManagerData();
testPostUpdateProcessing();
gAUS.addDownloadListener(testDownloadListener);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,55 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: finished background"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_PENDING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version,
Services.appinfo.platformVersion);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_SUCCEEDED);
reloadUpdateManagerData();
is(gUpdateManager.activeUpdate.state, "pending",
"The active update should have a state of pending");
gUP.showUpdateDownloaded(gUpdateManager.activeUpdate);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,60 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: restart notification pref promptWaitTime"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_PENDING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_SUCCEEDED);
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
reloadUpdateManagerData();
is(gUpdateManager.activeUpdate.state, STATE_PENDING,
"The active update should have a state of " + STATE_PENDING);
ok(gUpdateManager.activeUpdate.promptWaitTime == 1, "Checking that the " +
"update's promptWaitTime attribute value was set from the " +
PREF_APP_UPDATE_PROMPTWAITTIME + " preference");
gUP.showUpdateDownloaded(gUpdateManager.activeUpdate, true);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,60 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: restart notification xml promptWaitTime"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_PENDING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version, null,
null, null, null, null, false,
null, false, false, false, 1);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_SUCCEEDED);
reloadUpdateManagerData();
is(gUpdateManager.activeUpdate.state, STATE_PENDING,
"The active update should have a state of " + STATE_PENDING);
ok(gUpdateManager.activeUpdate.promptWaitTime == 1, "Checking that the " +
"update's promptWaitTime attribute value was set by the XML");
gUP.showUpdateDownloaded(gUpdateManager.activeUpdate, true);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,66 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: restart notification xml promptWaitTime with invalid number"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_PENDING);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version,
null, null,
null, null, null,
null, false, null,
false, false,
false, "invalidNumber");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_SUCCEEDED);
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
reloadUpdateManagerData();
is(gUpdateManager.activeUpdate.state, STATE_PENDING,
"The active update should have a state of " + STATE_PENDING);
ok(gUpdateManager.activeUpdate.promptWaitTime == 1, "Checking that the " +
"update's promptWaitTime attribute value was set from the " +
PREF_APP_UPDATE_PROMPTWAITTIME + " preference");
gUP.showUpdateDownloaded(gUpdateManager.activeUpdate, true);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,65 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: restart notification staged w/o service"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
gUseTestUpdater = true;
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_APPLIED);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version,
Services.appinfo.platformVersion);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_APPLIED);
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, true);
Services.prefs.setBoolPref(PREF_APP_UPDATE_SERVICE_ENABLED, false);
reloadUpdateManagerData();
is(gUpdateManager.activeUpdate.state, STATE_APPLIED,
"The active update should have a state of " + STATE_APPLIED);
ok(gUpdateManager.activeUpdate.promptWaitTime == 1, "Checking that the " +
"update's promptWaitTime attribute value was set from the " +
PREF_APP_UPDATE_PROMPTWAITTIME + " preference");
gUpdateManager.refreshUpdateStatus();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,65 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: restart notification staged with service"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
gUseTestUpdater = true;
function runTest() {
debugDump("entering");
let patches = getLocalPatchString("complete", null, null, null, null, null,
STATE_APPLIED_SVC);
let updates = getLocalUpdateString(patches, null, null, null,
Services.appinfo.version,
Services.appinfo.platformVersion);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
writeStatusFile(STATE_APPLIED_SVC);
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, true);
Services.prefs.setBoolPref(PREF_APP_UPDATE_SERVICE_ENABLED, true);
reloadUpdateManagerData();
is(gUpdateManager.activeUpdate.state, STATE_APPLIED_SVC,
"The active update should have a state of " + STATE_APPLIED_SVC);
ok(gUpdateManager.activeUpdate.promptWaitTime == 1, "Checking that the " +
"update's promptWaitTime attribute value was set from the " +
PREF_APP_UPDATE_PROMPTWAITTIME + " preference");
gUpdateManager.refreshUpdateStatus();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,46 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: background finish with a background download"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
gAUS.notify(null);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,49 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: background finish with a background download and update staging"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
gUseTestUpdater = true;
function runTest() {
debugDump("entering");
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, true);
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
gAUS.notify(null);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,50 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: background finish with a background download and update staging and servicefs"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FINISHED_BKGRD,
buttonClick: "extra1"
} ];
gUseTestUpdater = true;
function runTest() {
debugDump("entering");
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, true);
Services.prefs.setBoolPref(PREF_APP_UPDATE_SERVICE_ENABLED, true);
Services.prefs.setIntPref(PREF_APP_UPDATE_PROMPTWAITTIME, 1);
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
gAUS.notify(null);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,61 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update check and basic (never button test)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
gPrefToCheck = PREFBRANCH_APP_UPDATE_NEVER + Services.appinfo.version;
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_FOUND_BASIC,
extraDelayedCheckFunction: checkPrefHasUserValue,
prefHasUserValue: false,
neverButton: true,
buttonClick: "extra2"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showNever=1&showDetails=1" +
getVersionParams();
setUpdateURL(url);
// add the never preference for this version to verify that checking for
// updates clears the preference.
Services.prefs.setBoolPref(gPrefToCheck, true)
gUP.checkForUpdates();
}
function finishTest() {
checkPrefHasUserValue(true);
finishTestDefault();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,58 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: update available with never pref and without showNeverForVersion"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
gPrefToCheck = PREFBRANCH_APP_UPDATE_NEVER + Services.appinfo.version;
const TESTS = [ {
pageid: PAGEID_FOUND_BASIC,
extraDelayedCheckFunction: checkPrefHasUserValue,
prefHasUserValue: true,
buttonClick: "extra1"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&showPrompt=1" +
getVersionParams();
setUpdateURL(url);
// add the never preference for this version to verify that checking for
// updates clears the preference.
Services.prefs.setBoolPref(gPrefToCheck, true)
gAUS.notify(null);
}
function finishTest() {
Services.prefs.clearUserPref(gPrefToCheck)
finishTestDefault();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,50 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Test notification when multiple background check errors occur (bug 595455)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_ERROR_EXTRA,
extraDelayedCheckFunction: checkErrorExtraPage,
shouldBeHidden: false,
displayedTextElem: "bgErrorLabel",
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?xmlMalformed=1";
setUpdateURL(url);
errorsPrefObserver.init(PREF_APP_UPDATE_BACKGROUNDERRORS,
PREF_APP_UPDATE_BACKGROUNDMAXERRORS);
gAUS.notify(null);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,96 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Test that an update check that fails due to being offline is performed after going online"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_FOUND_BASIC,
buttonClick: "extra1"
} ];
const NETWORK_ERROR_OFFLINE = 111;
var gProxyPrefValue;
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, true);
Services.prefs.setBoolPref(PREF_APP_UPDATE_AUTO, false);
Services.io.offline = true;
gProxyPrefValue = Services.prefs.getIntPref("network.proxy.type");
Services.prefs.setIntPref("network.proxy.type", 0);
gUpdateChecker.checkForUpdates(updateCheckListener, true);
}
function resetOffline() {
Services.prefs.setIntPref("network.proxy.type", gProxyPrefValue);
Services.io.offline = false;
}
/* Update check listener */
const updateCheckListener = {
onProgress: function UCL_onProgress(aRequest, aPosition, aTotalSize) {
},
onCheckComplete: function UCL_onCheckComplete(aRequest, aUpdates, aUpdateCount) {
let status = aRequest.status;
if (status == 0) {
status = aRequest.channel.QueryInterface(Ci.nsIRequest).status;
}
debugDump("url = " + aRequest.channel.originalURI.spec + ", " +
"request.status = " + status + ", " +
"updateCount = " + aUpdateCount);
ok(false, "Unexpected updateCheckListener::onCheckComplete called");
},
onError: function UCL_onError(aRequest, aUpdate) {
let status = aRequest.status;
if (status == 0) {
status = aRequest.channel.QueryInterface(Ci.nsIRequest).status;
}
is(status, Cr.NS_ERROR_OFFLINE,
"checking the request status value");
is(aUpdate.errorCode, NETWORK_ERROR_OFFLINE,
"checking the update error code");
debugDump("url = " + aRequest.channel.originalURI.spec + ", " +
"request.status = " + status + ", " +
"update.statusText = " +
(aUpdate.statusText ? aUpdate.statusText : "null"));
gAUS.onError(aRequest, aUpdate);
// Use a timeout to allow the XHR to complete
SimpleTest.executeSoon(resetOffline);
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIUpdateCheckListener])
};
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,50 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Test checking for updates when system is no longer supported (bug 843497)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_UNSUPPORTED,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
// When checking manually the unsupported page should still be shown even if
// it was shown previously.
Services.prefs.setBoolPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, true);
let url = URL_HTTP_UPDATE_XML + "?unsupported=1";
setUpdateURL(url);
gUP.checkForUpdates();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,44 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Test notification of updates when system is no longer supported (bug 843497)"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_UNSUPPORTED,
buttonClick: "finish"
} ];
function runTest() {
debugDump("entering");
let url = URL_HTTP_UPDATE_XML + "?unsupported=1";
setUpdateURL(url);
gAUS.notify(null);
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,64 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: manual"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_CHECKING
}, {
pageid: PAGEID_MANUAL_UPDATE,
buttonClick: "finish",
extraCheckFunction: getWriteTestFile
} ];
function runTest() {
debugDump("entering");
let file = getWriteTestFile();
file.create(file.NORMAL_FILE_TYPE, 0o444);
file.fileAttributesWin |= file.WFA_READONLY;
file.fileAttributesWin &= ~file.WFA_READWRITE;
let url = URL_HTTP_UPDATE_XML + "?showDetails=1" + getVersionParams();
setUpdateURL(url);
gUP.checkForUpdates();
}
function getWriteTestFile() {
let file = getAppBaseDir();
file.append(FILE_UPDATE_TEST);
file.QueryInterface(Ci.nsILocalFileWin);
if (file.exists()) {
file.fileAttributesWin |= file.WFA_READWRITE;
file.fileAttributesWin &= ~file.WFA_READONLY;
file.remove(true);
}
return file;
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,63 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Update Wizard pages: manual"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTestDefault();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
const TESTS = [ {
pageid: PAGEID_MANUAL_UPDATE,
buttonClick: "finish",
extraCheckFunction: getWriteTestFile
} ];
function runTest() {
debugDump("entering");
let file = getWriteTestFile();
file.create(file.NORMAL_FILE_TYPE, 0o444);
file.fileAttributesWin |= file.WFA_READONLY;
file.fileAttributesWin &= ~file.WFA_READWRITE;
let url = URL_HTTP_UPDATE_XML + "?showDetails=1&showPrompt=1" +
getVersionParams();
setUpdateURL(url);
gAUS.checkForBackgroundUpdates();
}
function getWriteTestFile() {
let file = getAppBaseDir();
file.append(FILE_UPDATE_TEST);
file.QueryInterface(Ci.nsILocalFileWin);
if (file.exists()) {
file.fileAttributesWin |= file.WFA_READWRITE;
file.fileAttributesWin &= ~file.WFA_READONLY;
file.remove(true);
}
return file;
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,112 +0,0 @@
<?xml version="1.0"?>
<!--
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
/**
* Removes files and preferences for previous application update tests in case
* any of them had a fatal error. The test name ensures that it will run after
* all other tests as long as the test naming uses the same format as the
* existing tests.
*/
-->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window title="Application Update test cleanup"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTest();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="utils.js"/>
<script type="application/javascript">
<![CDATA[
/**
* If the application update tests left behind any of the files it uses it could
* be a very bad thing. The purpose of this test is to prevent that from
* happening.
*/
function runTest() {
debugDump("entering");
SimpleTest.waitForExplicitFinish();
if (DEBUG_AUS_TEST) {
Services.prefs.setBoolPref(PREF_APP_UPDATE_LOG, true);
}
closeUpdateWindow();
// Always leave the app.update.enabled and app.update.staging.enabled
// preferences set to false when cleaning up.
Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, false);
Services.prefs.setBoolPref(PREF_APP_UPDATE_STAGING_ENABLED, false);
resetFiles();
removeUpdateDirsAndFiles();
reloadUpdateManagerData();
let file = getUpdatesXMLFile(true);
ok(!file.exists(), file.path + " should not exist");
file = getUpdatesXMLFile(false);
ok(!file.exists(), file.path + " should not exist");
let dir = getUpdatesDir();
file = dir.clone();
file.append(FILE_UPDATE_STATUS);
ok(!file.exists(), file.path + " should not exist");
file = dir.clone();
file.append(FILE_UPDATE_MAR);
ok(!file.exists(), file.path + " should not exist");
cleanupRestoreUpdaterBackup();
}
/**
* After all tests finish this will repeatedly attempt to restore the real
* updater if it exists and then call finishTest after the restore is
* successful.
*/
function cleanupRestoreUpdaterBackup() {
debugDump("entering");
try {
// Windows debug builds keep the updater file in use for a short period of
// time after the updater process exits.
restoreUpdaterBackup();
} catch (e) {
logTestInfo("Attempt to restore the backed up updater failed... " +
"will try again, Exception: " + e);
SimpleTest.executeSoon(cleanupRestoreUpdaterBackup);
return;
}
SimpleTest.executeSoon(finishTest);
}
function finishTest() {
debugDump("entering");
if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_LOG)) {
Services.prefs.clearUserPref(PREF_APP_UPDATE_LOG);
}
SimpleTest.finish();
}
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</window>

View file

@ -1,194 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
/**
* Server side http server script for application update tests.
*/
const { classes: Cc, interfaces: Ci } = Components;
const REL_PATH_DATA = "chrome/toolkit/mozapps/update/tests/data/";
function getTestDataFile(aFilename) {
let file = Cc["@mozilla.org/file/directory_service;1"].
getService(Ci.nsIProperties).get("CurWorkD", Ci.nsILocalFile);
let pathParts = REL_PATH_DATA.split("/");
for (let i = 0; i < pathParts.length; ++i) {
file.append(pathParts[i]);
}
if (aFilename) {
file.append(aFilename);
}
return file;
}
function loadHelperScript() {
let scriptFile = getTestDataFile("sharedUpdateXML.js");
let io = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService2);
let scriptSpec = io.newFileURI(scriptFile).spec;
let scriptloader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
getService(Ci.mozIJSSubScriptLoader);
scriptloader.loadSubScript(scriptSpec, this);
}
loadHelperScript();
const URL_HOST = "http://example.com";
const URL_PATH_UPDATE_XML = "/chrome/toolkit/mozapps/update/tests/chrome/update.sjs";
const URL_HTTP_UPDATE_SJS = URL_HOST + URL_PATH_UPDATE_XML;
const SERVICE_URL = URL_HOST + "/" + REL_PATH_DATA + FILE_SIMPLE_MAR;
const SLOW_MAR_DOWNLOAD_INTERVAL = 100;
var gTimer;
function handleRequest(aRequest, aResponse) {
let params = { };
if (aRequest.queryString) {
params = parseQueryString(aRequest.queryString);
}
let statusCode = params.statusCode ? parseInt(params.statusCode) : 200;
let statusReason = params.statusReason ? params.statusReason : "OK";
aResponse.setStatusLine(aRequest.httpVersion, statusCode, statusReason);
aResponse.setHeader("Cache-Control", "no-cache", false);
// When a mar download is started by the update service it can finish
// downloading before the ui has loaded. By specifying a serviceURL for the
// update patch that points to this file and has a slowDownloadMar param the
// mar will be downloaded asynchronously which will allow the ui to load
// before the download completes.
if (params.slowDownloadMar) {
aResponse.processAsync();
aResponse.setHeader("Content-Type", "binary/octet-stream");
aResponse.setHeader("Content-Length", SIZE_SIMPLE_MAR);
var continueFile = getTestDataFile("continue");
var contents = readFileBytes(getTestDataFile(FILE_SIMPLE_MAR));
gTimer = Cc["@mozilla.org/timer;1"].
createInstance(Ci.nsITimer);
gTimer.initWithCallback(function(aTimer) {
if (continueFile.exists()) {
gTimer.cancel();
aResponse.write(contents);
aResponse.finish();
}
}, SLOW_MAR_DOWNLOAD_INTERVAL, Ci.nsITimer.TYPE_REPEATING_SLACK);
return;
}
if (params.uiURL) {
let remoteType = "";
if (!params.remoteNoTypeAttr && params.uiURL == "BILLBOARD") {
remoteType = " " + params.uiURL.toLowerCase() + "=\"1\"";
}
aResponse.write("<html><head><meta http-equiv=\"content-type\" content=" +
"\"text/html; charset=utf-8\"></head><body" +
remoteType + ">" + params.uiURL +
"<br><br>this is a test mar that will not affect your " +
"build.</body></html>");
return;
}
if (params.xmlMalformed) {
aResponse.write("xml error");
return;
}
if (params.noUpdates) {
aResponse.write(getRemoteUpdatesXMLString(""));
return;
}
if (params.unsupported) {
aResponse.write(getRemoteUpdatesXMLString(" <update type=\"major\" " +
"unsupported=\"true\" " +
"detailsURL=\"" + URL_HOST +
"\"></update>\n"));
return;
}
let size;
let patches = "";
if (!params.partialPatchOnly) {
size = SIZE_SIMPLE_MAR + (params.invalidCompleteSize ? "1" : "");
patches += getRemotePatchString("complete", SERVICE_URL, "SHA512",
SHA512_HASH_SIMPLE_MAR, size);
}
if (!params.completePatchOnly) {
size = SIZE_SIMPLE_MAR + (params.invalidPartialSize ? "1" : "");
patches += getRemotePatchString("partial", SERVICE_URL, "SHA512",
SHA512_HASH_SIMPLE_MAR, size);
}
let type = params.type ? params.type : "major";
let name = params.name ? params.name : "App Update Test";
let appVersion = params.appVersion ? params.appVersion : "999999.9";
let displayVersion = params.displayVersion ? params.displayVersion
: "version " + appVersion;
let buildID = params.buildID ? params.buildID : "01234567890123";
// XXXrstrong - not specifying a detailsURL will cause a leak due to bug 470244
// let detailsURL = params.showDetails ? URL_HTTP_UPDATE_SJS + "?uiURL=DETAILS" : null;
let detailsURL = URL_HTTP_UPDATE_SJS + "?uiURL=DETAILS";
let showPrompt = params.showPrompt ? "true" : null;
let showNever = params.showNever ? "true" : null;
let promptWaitTime = params.promptWaitTime ? params.promptWaitTime : null;
let updates = getRemoteUpdateString(patches, type, "App Update Test",
displayVersion, appVersion, buildID,
detailsURL, showPrompt, showNever,
promptWaitTime);
aResponse.write(getRemoteUpdatesXMLString(updates));
}
/**
* Helper function to create a JS object representing the url parameters from
* the request's queryString.
*
* @param aQueryString
* The request's query string.
* @return A JS object representing the url parameters from the request's
* queryString.
*/
function parseQueryString(aQueryString) {
let paramArray = aQueryString.split("&");
let regex = /^([^=]+)=(.*)$/;
let params = {};
for (let i = 0, sz = paramArray.length; i < sz; i++) {
let match = regex.exec(paramArray[i]);
if (!match) {
throw "Bad parameter in queryString! '" + paramArray[i] + "'";
}
params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);
}
return params;
}
/**
* Reads the binary contents of a file and returns it as a string.
*
* @param aFile
* The file to read from.
* @return The contents of the file as a string.
*/
function readFileBytes(aFile) {
let fis = Cc["@mozilla.org/network/file-input-stream;1"].
createInstance(Ci.nsIFileInputStream);
fis.init(aFile, -1, -1, false);
let bis = Cc["@mozilla.org/binaryinputstream;1"].
createInstance(Ci.nsIBinaryInputStream);
bis.setInputStream(fis);
let data = [];
let count = fis.available();
while (count > 0) {
let bytes = bis.readByteArray(Math.min(65535, count));
data.push(String.fromCharCode.apply(null, bytes));
count -= bytes.length;
if (bytes.length == 0) {
throw "Nothing read from input stream!";
}
}
data.join('');
fis.close();
return data.toString();
}

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 B

View file

@ -1,332 +0,0 @@
UPDATE TYPE complete
PREPARE REMOVEFILE Contents/Resources/searchplugins/searchpluginstext0
PREPARE REMOVEFILE Contents/Resources/searchplugins/searchpluginspng0.png
PREPARE REMOVEFILE Contents/Resources/removed-files
PREPARE REMOVEFILE Contents/Resources/precomplete
PREPARE REMOVEFILE Contents/Resources/2/20/20text0
PREPARE REMOVEFILE Contents/Resources/2/20/20png0.png
PREPARE REMOVEFILE Contents/Resources/0/0exe0.exe
PREPARE REMOVEFILE Contents/Resources/0/00/00text0
PREPARE REMOVEFILE Contents/MacOS/exe0.exe
PREPARE REMOVEDIR Contents/Resources/searchplugins/
PREPARE REMOVEDIR Contents/Resources/defaults/pref/
PREPARE REMOVEDIR Contents/Resources/defaults/
PREPARE REMOVEDIR Contents/Resources/2/20/
PREPARE REMOVEDIR Contents/Resources/2/
PREPARE REMOVEDIR Contents/Resources/0/00/
PREPARE REMOVEDIR Contents/Resources/0/
PREPARE REMOVEDIR Contents/Resources/
PREPARE REMOVEDIR Contents/MacOS/
PREPARE REMOVEDIR Contents/
PREPARE ADD Contents/Resources/searchplugins/searchpluginstext0
PREPARE ADD Contents/Resources/searchplugins/searchpluginspng1.png
PREPARE ADD Contents/Resources/searchplugins/searchpluginspng0.png
PREPARE ADD Contents/Resources/removed-files
PREPARE ADD Contents/Resources/precomplete
PREPARE ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
PREPARE ADD Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
PREPARE ADD Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
PREPARE ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
PREPARE ADD Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
PREPARE ADD Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
PREPARE ADD Contents/Resources/1/10/10text0
PREPARE ADD Contents/Resources/0/0exe0.exe
PREPARE ADD Contents/Resources/0/00/00text1
PREPARE ADD Contents/Resources/0/00/00text0
PREPARE ADD Contents/Resources/0/00/00png0.png
PREPARE ADD Contents/MacOS/exe0.exe
PREPARE REMOVEDIR Contents/Resources/9/99/
PREPARE REMOVEDIR Contents/Resources/9/99/
PREPARE REMOVEDIR Contents/Resources/9/98/
PREPARE REMOVEFILE Contents/Resources/9/97/970/97xtext0
PREPARE REMOVEFILE Contents/Resources/9/97/970/97xtext1
PREPARE REMOVEDIR Contents/Resources/9/97/970/
PREPARE REMOVEFILE Contents/Resources/9/97/971/97xtext0
PREPARE REMOVEFILE Contents/Resources/9/97/971/97xtext1
PREPARE REMOVEDIR Contents/Resources/9/97/971/
PREPARE REMOVEDIR Contents/Resources/9/97/
PREPARE REMOVEFILE Contents/Resources/9/96/96text0
PREPARE REMOVEFILE Contents/Resources/9/96/96text1
PREPARE REMOVEDIR Contents/Resources/9/96/
PREPARE REMOVEDIR Contents/Resources/9/95/
PREPARE REMOVEDIR Contents/Resources/9/95/
PREPARE REMOVEDIR Contents/Resources/9/94/
PREPARE REMOVEDIR Contents/Resources/9/94/
PREPARE REMOVEDIR Contents/Resources/9/93/
PREPARE REMOVEDIR Contents/Resources/9/92/
PREPARE REMOVEDIR Contents/Resources/9/91/
PREPARE REMOVEDIR Contents/Resources/9/90/
PREPARE REMOVEDIR Contents/Resources/9/90/
PREPARE REMOVEDIR Contents/Resources/8/89/
PREPARE REMOVEDIR Contents/Resources/8/89/
PREPARE REMOVEDIR Contents/Resources/8/88/
PREPARE REMOVEFILE Contents/Resources/8/87/870/87xtext0
PREPARE REMOVEFILE Contents/Resources/8/87/870/87xtext1
PREPARE REMOVEDIR Contents/Resources/8/87/870/
PREPARE REMOVEFILE Contents/Resources/8/87/871/87xtext0
PREPARE REMOVEFILE Contents/Resources/8/87/871/87xtext1
PREPARE REMOVEDIR Contents/Resources/8/87/871/
PREPARE REMOVEDIR Contents/Resources/8/87/
PREPARE REMOVEFILE Contents/Resources/8/86/86text0
PREPARE REMOVEFILE Contents/Resources/8/86/86text1
PREPARE REMOVEDIR Contents/Resources/8/86/
PREPARE REMOVEDIR Contents/Resources/8/85/
PREPARE REMOVEDIR Contents/Resources/8/85/
PREPARE REMOVEDIR Contents/Resources/8/84/
PREPARE REMOVEDIR Contents/Resources/8/84/
PREPARE REMOVEDIR Contents/Resources/8/83/
PREPARE REMOVEDIR Contents/Resources/8/82/
PREPARE REMOVEDIR Contents/Resources/8/81/
PREPARE REMOVEDIR Contents/Resources/8/80/
PREPARE REMOVEDIR Contents/Resources/8/80/
PREPARE REMOVEFILE Contents/Resources/7/70/7xtest.exe
PREPARE REMOVEFILE Contents/Resources/7/70/7xtext0
PREPARE REMOVEFILE Contents/Resources/7/70/7xtext1
PREPARE REMOVEDIR Contents/Resources/7/70/
PREPARE REMOVEFILE Contents/Resources/7/71/7xtest.exe
PREPARE REMOVEFILE Contents/Resources/7/71/7xtext0
PREPARE REMOVEFILE Contents/Resources/7/71/7xtext1
PREPARE REMOVEDIR Contents/Resources/7/71/
PREPARE REMOVEFILE Contents/Resources/7/7text0
PREPARE REMOVEFILE Contents/Resources/7/7text1
PREPARE REMOVEDIR Contents/Resources/7/
PREPARE REMOVEDIR Contents/Resources/6/
PREPARE REMOVEFILE Contents/Resources/5/5text1
PREPARE REMOVEFILE Contents/Resources/5/5text0
PREPARE REMOVEFILE Contents/Resources/5/5test.exe
PREPARE REMOVEFILE Contents/Resources/5/5text0
PREPARE REMOVEFILE Contents/Resources/5/5text1
PREPARE REMOVEDIR Contents/Resources/5/
PREPARE REMOVEFILE Contents/Resources/4/4text1
PREPARE REMOVEFILE Contents/Resources/4/4text0
PREPARE REMOVEDIR Contents/Resources/4/
PREPARE REMOVEFILE Contents/Resources/3/3text1
PREPARE REMOVEFILE Contents/Resources/3/3text0
EXECUTE REMOVEFILE Contents/Resources/searchplugins/searchpluginstext0
EXECUTE REMOVEFILE Contents/Resources/searchplugins/searchpluginspng0.png
EXECUTE REMOVEFILE Contents/Resources/removed-files
EXECUTE REMOVEFILE Contents/Resources/precomplete
EXECUTE REMOVEFILE Contents/Resources/2/20/20text0
EXECUTE REMOVEFILE Contents/Resources/2/20/20png0.png
EXECUTE REMOVEFILE Contents/Resources/0/0exe0.exe
EXECUTE REMOVEFILE Contents/Resources/0/00/00text0
EXECUTE REMOVEFILE Contents/MacOS/exe0.exe
EXECUTE REMOVEDIR Contents/Resources/searchplugins/
EXECUTE REMOVEDIR Contents/Resources/defaults/pref/
EXECUTE REMOVEDIR Contents/Resources/defaults/
EXECUTE REMOVEDIR Contents/Resources/2/20/
EXECUTE REMOVEDIR Contents/Resources/2/
EXECUTE REMOVEDIR Contents/Resources/0/00/
EXECUTE REMOVEDIR Contents/Resources/0/
EXECUTE REMOVEDIR Contents/Resources/
EXECUTE REMOVEDIR Contents/MacOS/
EXECUTE REMOVEDIR Contents/
EXECUTE ADD Contents/Resources/searchplugins/searchpluginstext0
EXECUTE ADD Contents/Resources/searchplugins/searchpluginspng1.png
EXECUTE ADD Contents/Resources/searchplugins/searchpluginspng0.png
EXECUTE ADD Contents/Resources/removed-files
EXECUTE ADD Contents/Resources/precomplete
EXECUTE ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
EXECUTE ADD Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
EXECUTE ADD Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
EXECUTE ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
EXECUTE ADD Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
EXECUTE ADD Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
EXECUTE ADD Contents/Resources/1/10/10text0
EXECUTE ADD Contents/Resources/0/0exe0.exe
EXECUTE ADD Contents/Resources/0/00/00text1
EXECUTE ADD Contents/Resources/0/00/00text0
EXECUTE ADD Contents/Resources/0/00/00png0.png
EXECUTE ADD Contents/MacOS/exe0.exe
EXECUTE REMOVEDIR Contents/Resources/9/99/
EXECUTE REMOVEDIR Contents/Resources/9/99/
EXECUTE REMOVEDIR Contents/Resources/9/98/
EXECUTE REMOVEFILE Contents/Resources/9/97/970/97xtext0
EXECUTE REMOVEFILE Contents/Resources/9/97/970/97xtext1
EXECUTE REMOVEDIR Contents/Resources/9/97/970/
EXECUTE REMOVEFILE Contents/Resources/9/97/971/97xtext0
EXECUTE REMOVEFILE Contents/Resources/9/97/971/97xtext1
EXECUTE REMOVEDIR Contents/Resources/9/97/971/
EXECUTE REMOVEDIR Contents/Resources/9/97/
EXECUTE REMOVEFILE Contents/Resources/9/96/96text0
EXECUTE REMOVEFILE Contents/Resources/9/96/96text1
EXECUTE REMOVEDIR Contents/Resources/9/96/
EXECUTE REMOVEDIR Contents/Resources/9/95/
EXECUTE REMOVEDIR Contents/Resources/9/95/
EXECUTE REMOVEDIR Contents/Resources/9/94/
EXECUTE REMOVEDIR Contents/Resources/9/94/
EXECUTE REMOVEDIR Contents/Resources/9/93/
EXECUTE REMOVEDIR Contents/Resources/9/92/
EXECUTE REMOVEDIR Contents/Resources/9/91/
EXECUTE REMOVEDIR Contents/Resources/9/90/
EXECUTE REMOVEDIR Contents/Resources/9/90/
EXECUTE REMOVEDIR Contents/Resources/8/89/
EXECUTE REMOVEDIR Contents/Resources/8/89/
EXECUTE REMOVEDIR Contents/Resources/8/88/
EXECUTE REMOVEFILE Contents/Resources/8/87/870/87xtext0
EXECUTE REMOVEFILE Contents/Resources/8/87/870/87xtext1
EXECUTE REMOVEDIR Contents/Resources/8/87/870/
EXECUTE REMOVEFILE Contents/Resources/8/87/871/87xtext0
EXECUTE REMOVEFILE Contents/Resources/8/87/871/87xtext1
EXECUTE REMOVEDIR Contents/Resources/8/87/871/
EXECUTE REMOVEDIR Contents/Resources/8/87/
EXECUTE REMOVEFILE Contents/Resources/8/86/86text0
EXECUTE REMOVEFILE Contents/Resources/8/86/86text1
EXECUTE REMOVEDIR Contents/Resources/8/86/
EXECUTE REMOVEDIR Contents/Resources/8/85/
EXECUTE REMOVEDIR Contents/Resources/8/85/
EXECUTE REMOVEDIR Contents/Resources/8/84/
EXECUTE REMOVEDIR Contents/Resources/8/84/
EXECUTE REMOVEDIR Contents/Resources/8/83/
EXECUTE REMOVEDIR Contents/Resources/8/82/
EXECUTE REMOVEDIR Contents/Resources/8/81/
EXECUTE REMOVEDIR Contents/Resources/8/80/
EXECUTE REMOVEDIR Contents/Resources/8/80/
EXECUTE REMOVEFILE Contents/Resources/7/70/7xtest.exe
EXECUTE REMOVEFILE Contents/Resources/7/70/7xtext0
EXECUTE REMOVEFILE Contents/Resources/7/70/7xtext1
EXECUTE REMOVEDIR Contents/Resources/7/70/
EXECUTE REMOVEFILE Contents/Resources/7/71/7xtest.exe
EXECUTE REMOVEFILE Contents/Resources/7/71/7xtext0
EXECUTE REMOVEFILE Contents/Resources/7/71/7xtext1
EXECUTE REMOVEDIR Contents/Resources/7/71/
EXECUTE REMOVEFILE Contents/Resources/7/7text0
EXECUTE REMOVEFILE Contents/Resources/7/7text1
EXECUTE REMOVEDIR Contents/Resources/7/
EXECUTE REMOVEDIR Contents/Resources/6/
EXECUTE REMOVEFILE Contents/Resources/5/5text1
EXECUTE REMOVEFILE Contents/Resources/5/5text0
EXECUTE REMOVEFILE Contents/Resources/5/5test.exe
EXECUTE REMOVEFILE Contents/Resources/5/5text0
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEFILE Contents/Resources/5/5text1
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEDIR Contents/Resources/5/
EXECUTE REMOVEFILE Contents/Resources/4/4text1
EXECUTE REMOVEFILE Contents/Resources/4/4text0
EXECUTE REMOVEDIR Contents/Resources/4/
EXECUTE REMOVEFILE Contents/Resources/3/3text1
EXECUTE REMOVEFILE Contents/Resources/3/3text0
FINISH REMOVEFILE Contents/Resources/searchplugins/searchpluginstext0
FINISH REMOVEFILE Contents/Resources/searchplugins/searchpluginspng0.png
FINISH REMOVEFILE Contents/Resources/removed-files
FINISH REMOVEFILE Contents/Resources/precomplete
FINISH REMOVEFILE Contents/Resources/2/20/20text0
FINISH REMOVEFILE Contents/Resources/2/20/20png0.png
FINISH REMOVEFILE Contents/Resources/0/0exe0.exe
FINISH REMOVEFILE Contents/Resources/0/00/00text0
FINISH REMOVEFILE Contents/MacOS/exe0.exe
FINISH REMOVEDIR Contents/Resources/searchplugins/
removing directory: Contents/Resources/searchplugins/, rv: 0
FINISH REMOVEDIR Contents/Resources/defaults/pref/
removing directory: Contents/Resources/defaults/pref/, rv: 0
FINISH REMOVEDIR Contents/Resources/defaults/
removing directory: Contents/Resources/defaults/, rv: 0
FINISH REMOVEDIR Contents/Resources/2/20/
FINISH REMOVEDIR Contents/Resources/2/
FINISH REMOVEDIR Contents/Resources/0/00/
removing directory: Contents/Resources/0/00/, rv: 0
FINISH REMOVEDIR Contents/Resources/0/
removing directory: Contents/Resources/0/, rv: 0
FINISH REMOVEDIR Contents/Resources/
removing directory: Contents/Resources/, rv: 0
FINISH REMOVEDIR Contents/MacOS/
removing directory: Contents/MacOS/, rv: 0
FINISH REMOVEDIR Contents/
removing directory: Contents/, rv: 0
FINISH ADD Contents/Resources/searchplugins/searchpluginstext0
FINISH ADD Contents/Resources/searchplugins/searchpluginspng1.png
FINISH ADD Contents/Resources/searchplugins/searchpluginspng0.png
FINISH ADD Contents/Resources/removed-files
FINISH ADD Contents/Resources/precomplete
FINISH ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
FINISH ADD Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
FINISH ADD Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
FINISH ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
FINISH ADD Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
FINISH ADD Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
FINISH ADD Contents/Resources/1/10/10text0
FINISH ADD Contents/Resources/0/0exe0.exe
FINISH ADD Contents/Resources/0/00/00text1
FINISH ADD Contents/Resources/0/00/00text0
FINISH ADD Contents/Resources/0/00/00png0.png
FINISH ADD Contents/MacOS/exe0.exe
FINISH REMOVEDIR Contents/Resources/9/99/
FINISH REMOVEDIR Contents/Resources/9/99/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/9/98/
FINISH REMOVEFILE Contents/Resources/9/97/970/97xtext0
FINISH REMOVEFILE Contents/Resources/9/97/970/97xtext1
FINISH REMOVEDIR Contents/Resources/9/97/970/
FINISH REMOVEFILE Contents/Resources/9/97/971/97xtext0
FINISH REMOVEFILE Contents/Resources/9/97/971/97xtext1
FINISH REMOVEDIR Contents/Resources/9/97/971/
FINISH REMOVEDIR Contents/Resources/9/97/
FINISH REMOVEFILE Contents/Resources/9/96/96text0
FINISH REMOVEFILE Contents/Resources/9/96/96text1
FINISH REMOVEDIR Contents/Resources/9/96/
FINISH REMOVEDIR Contents/Resources/9/95/
FINISH REMOVEDIR Contents/Resources/9/95/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/9/94/
FINISH REMOVEDIR Contents/Resources/9/94/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/9/93/
FINISH REMOVEDIR Contents/Resources/9/92/
removing directory: Contents/Resources/9/92/, rv: 0
FINISH REMOVEDIR Contents/Resources/9/91/
removing directory: Contents/Resources/9/91/, rv: 0
FINISH REMOVEDIR Contents/Resources/9/90/
FINISH REMOVEDIR Contents/Resources/9/90/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/89/
FINISH REMOVEDIR Contents/Resources/8/89/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/88/
FINISH REMOVEFILE Contents/Resources/8/87/870/87xtext0
FINISH REMOVEFILE Contents/Resources/8/87/870/87xtext1
FINISH REMOVEDIR Contents/Resources/8/87/870/
FINISH REMOVEFILE Contents/Resources/8/87/871/87xtext0
FINISH REMOVEFILE Contents/Resources/8/87/871/87xtext1
FINISH REMOVEDIR Contents/Resources/8/87/871/
FINISH REMOVEDIR Contents/Resources/8/87/
FINISH REMOVEFILE Contents/Resources/8/86/86text0
FINISH REMOVEFILE Contents/Resources/8/86/86text1
FINISH REMOVEDIR Contents/Resources/8/86/
FINISH REMOVEDIR Contents/Resources/8/85/
FINISH REMOVEDIR Contents/Resources/8/85/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/84/
FINISH REMOVEDIR Contents/Resources/8/84/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/83/
FINISH REMOVEDIR Contents/Resources/8/82/
removing directory: Contents/Resources/8/82/, rv: 0
FINISH REMOVEDIR Contents/Resources/8/81/
removing directory: Contents/Resources/8/81/, rv: 0
FINISH REMOVEDIR Contents/Resources/8/80/
FINISH REMOVEDIR Contents/Resources/8/80/
directory no longer exists; skipping
FINISH REMOVEFILE Contents/Resources/7/70/7xtest.exe
FINISH REMOVEFILE Contents/Resources/7/70/7xtext0
FINISH REMOVEFILE Contents/Resources/7/70/7xtext1
FINISH REMOVEDIR Contents/Resources/7/70/
FINISH REMOVEFILE Contents/Resources/7/71/7xtest.exe
FINISH REMOVEFILE Contents/Resources/7/71/7xtext0
FINISH REMOVEFILE Contents/Resources/7/71/7xtext1
FINISH REMOVEDIR Contents/Resources/7/71/
FINISH REMOVEFILE Contents/Resources/7/7text0
FINISH REMOVEFILE Contents/Resources/7/7text1
FINISH REMOVEDIR Contents/Resources/7/
FINISH REMOVEDIR Contents/Resources/6/
FINISH REMOVEFILE Contents/Resources/5/5text1
FINISH REMOVEFILE Contents/Resources/5/5text0
FINISH REMOVEFILE Contents/Resources/5/5test.exe
FINISH REMOVEDIR Contents/Resources/5/
FINISH REMOVEFILE Contents/Resources/4/4text1
FINISH REMOVEFILE Contents/Resources/4/4text0
FINISH REMOVEDIR Contents/Resources/4/
FINISH REMOVEFILE Contents/Resources/3/3text1
FINISH REMOVEFILE Contents/Resources/3/3text0
succeeded
calling QuitProgressUI

View file

@ -1,320 +0,0 @@
UPDATE TYPE complete
PREPARE REMOVEFILE searchplugins/searchpluginstext0
PREPARE REMOVEFILE searchplugins/searchpluginspng0.png
PREPARE REMOVEFILE removed-files
PREPARE REMOVEFILE precomplete
PREPARE REMOVEFILE exe0.exe
PREPARE REMOVEFILE 2/20/20text0
PREPARE REMOVEFILE 2/20/20png0.png
PREPARE REMOVEFILE 0/0exe0.exe
PREPARE REMOVEFILE 0/00/00text0
PREPARE REMOVEDIR searchplugins/
PREPARE REMOVEDIR defaults/pref/
PREPARE REMOVEDIR defaults/
PREPARE REMOVEDIR 2/20/
PREPARE REMOVEDIR 2/
PREPARE REMOVEDIR 0/00/
PREPARE REMOVEDIR 0/
PREPARE ADD searchplugins/searchpluginstext0
PREPARE ADD searchplugins/searchpluginspng1.png
PREPARE ADD searchplugins/searchpluginspng0.png
PREPARE ADD removed-files
PREPARE ADD precomplete
PREPARE ADD exe0.exe
PREPARE ADD distribution/extensions/extensions1/extensions1text0
PREPARE ADD distribution/extensions/extensions1/extensions1png1.png
PREPARE ADD distribution/extensions/extensions1/extensions1png0.png
PREPARE ADD distribution/extensions/extensions0/extensions0text0
PREPARE ADD distribution/extensions/extensions0/extensions0png1.png
PREPARE ADD distribution/extensions/extensions0/extensions0png0.png
PREPARE ADD 1/10/10text0
PREPARE ADD 0/0exe0.exe
PREPARE ADD 0/00/00text1
PREPARE ADD 0/00/00text0
PREPARE ADD 0/00/00png0.png
PREPARE REMOVEDIR 9/99/
PREPARE REMOVEDIR 9/99/
PREPARE REMOVEDIR 9/98/
PREPARE REMOVEFILE 9/97/970/97xtext0
PREPARE REMOVEFILE 9/97/970/97xtext1
PREPARE REMOVEDIR 9/97/970/
PREPARE REMOVEFILE 9/97/971/97xtext0
PREPARE REMOVEFILE 9/97/971/97xtext1
PREPARE REMOVEDIR 9/97/971/
PREPARE REMOVEDIR 9/97/
PREPARE REMOVEFILE 9/96/96text0
PREPARE REMOVEFILE 9/96/96text1
PREPARE REMOVEDIR 9/96/
PREPARE REMOVEDIR 9/95/
PREPARE REMOVEDIR 9/95/
PREPARE REMOVEDIR 9/94/
PREPARE REMOVEDIR 9/94/
PREPARE REMOVEDIR 9/93/
PREPARE REMOVEDIR 9/92/
PREPARE REMOVEDIR 9/91/
PREPARE REMOVEDIR 9/90/
PREPARE REMOVEDIR 9/90/
PREPARE REMOVEDIR 8/89/
PREPARE REMOVEDIR 8/89/
PREPARE REMOVEDIR 8/88/
PREPARE REMOVEFILE 8/87/870/87xtext0
PREPARE REMOVEFILE 8/87/870/87xtext1
PREPARE REMOVEDIR 8/87/870/
PREPARE REMOVEFILE 8/87/871/87xtext0
PREPARE REMOVEFILE 8/87/871/87xtext1
PREPARE REMOVEDIR 8/87/871/
PREPARE REMOVEDIR 8/87/
PREPARE REMOVEFILE 8/86/86text0
PREPARE REMOVEFILE 8/86/86text1
PREPARE REMOVEDIR 8/86/
PREPARE REMOVEDIR 8/85/
PREPARE REMOVEDIR 8/85/
PREPARE REMOVEDIR 8/84/
PREPARE REMOVEDIR 8/84/
PREPARE REMOVEDIR 8/83/
PREPARE REMOVEDIR 8/82/
PREPARE REMOVEDIR 8/81/
PREPARE REMOVEDIR 8/80/
PREPARE REMOVEDIR 8/80/
PREPARE REMOVEFILE 7/70/7xtest.exe
PREPARE REMOVEFILE 7/70/7xtext0
PREPARE REMOVEFILE 7/70/7xtext1
PREPARE REMOVEDIR 7/70/
PREPARE REMOVEFILE 7/71/7xtest.exe
PREPARE REMOVEFILE 7/71/7xtext0
PREPARE REMOVEFILE 7/71/7xtext1
PREPARE REMOVEDIR 7/71/
PREPARE REMOVEFILE 7/7text0
PREPARE REMOVEFILE 7/7text1
PREPARE REMOVEDIR 7/
PREPARE REMOVEDIR 6/
PREPARE REMOVEFILE 5/5text1
PREPARE REMOVEFILE 5/5text0
PREPARE REMOVEFILE 5/5test.exe
PREPARE REMOVEFILE 5/5text0
PREPARE REMOVEFILE 5/5text1
PREPARE REMOVEDIR 5/
PREPARE REMOVEFILE 4/4text1
PREPARE REMOVEFILE 4/4text0
PREPARE REMOVEDIR 4/
PREPARE REMOVEFILE 3/3text1
PREPARE REMOVEFILE 3/3text0
EXECUTE REMOVEFILE searchplugins/searchpluginstext0
EXECUTE REMOVEFILE searchplugins/searchpluginspng0.png
EXECUTE REMOVEFILE removed-files
EXECUTE REMOVEFILE precomplete
EXECUTE REMOVEFILE exe0.exe
EXECUTE REMOVEFILE 2/20/20text0
EXECUTE REMOVEFILE 2/20/20png0.png
EXECUTE REMOVEFILE 0/0exe0.exe
EXECUTE REMOVEFILE 0/00/00text0
EXECUTE REMOVEDIR searchplugins/
EXECUTE REMOVEDIR defaults/pref/
EXECUTE REMOVEDIR defaults/
EXECUTE REMOVEDIR 2/20/
EXECUTE REMOVEDIR 2/
EXECUTE REMOVEDIR 0/00/
EXECUTE REMOVEDIR 0/
EXECUTE ADD searchplugins/searchpluginstext0
EXECUTE ADD searchplugins/searchpluginspng1.png
EXECUTE ADD searchplugins/searchpluginspng0.png
EXECUTE ADD removed-files
EXECUTE ADD precomplete
EXECUTE ADD exe0.exe
EXECUTE ADD distribution/extensions/extensions1/extensions1text0
EXECUTE ADD distribution/extensions/extensions1/extensions1png1.png
EXECUTE ADD distribution/extensions/extensions1/extensions1png0.png
EXECUTE ADD distribution/extensions/extensions0/extensions0text0
EXECUTE ADD distribution/extensions/extensions0/extensions0png1.png
EXECUTE ADD distribution/extensions/extensions0/extensions0png0.png
EXECUTE ADD 1/10/10text0
EXECUTE ADD 0/0exe0.exe
EXECUTE ADD 0/00/00text1
EXECUTE ADD 0/00/00text0
EXECUTE ADD 0/00/00png0.png
EXECUTE REMOVEDIR 9/99/
EXECUTE REMOVEDIR 9/99/
EXECUTE REMOVEDIR 9/98/
EXECUTE REMOVEFILE 9/97/970/97xtext0
EXECUTE REMOVEFILE 9/97/970/97xtext1
EXECUTE REMOVEDIR 9/97/970/
EXECUTE REMOVEFILE 9/97/971/97xtext0
EXECUTE REMOVEFILE 9/97/971/97xtext1
EXECUTE REMOVEDIR 9/97/971/
EXECUTE REMOVEDIR 9/97/
EXECUTE REMOVEFILE 9/96/96text0
EXECUTE REMOVEFILE 9/96/96text1
EXECUTE REMOVEDIR 9/96/
EXECUTE REMOVEDIR 9/95/
EXECUTE REMOVEDIR 9/95/
EXECUTE REMOVEDIR 9/94/
EXECUTE REMOVEDIR 9/94/
EXECUTE REMOVEDIR 9/93/
EXECUTE REMOVEDIR 9/92/
EXECUTE REMOVEDIR 9/91/
EXECUTE REMOVEDIR 9/90/
EXECUTE REMOVEDIR 9/90/
EXECUTE REMOVEDIR 8/89/
EXECUTE REMOVEDIR 8/89/
EXECUTE REMOVEDIR 8/88/
EXECUTE REMOVEFILE 8/87/870/87xtext0
EXECUTE REMOVEFILE 8/87/870/87xtext1
EXECUTE REMOVEDIR 8/87/870/
EXECUTE REMOVEFILE 8/87/871/87xtext0
EXECUTE REMOVEFILE 8/87/871/87xtext1
EXECUTE REMOVEDIR 8/87/871/
EXECUTE REMOVEDIR 8/87/
EXECUTE REMOVEFILE 8/86/86text0
EXECUTE REMOVEFILE 8/86/86text1
EXECUTE REMOVEDIR 8/86/
EXECUTE REMOVEDIR 8/85/
EXECUTE REMOVEDIR 8/85/
EXECUTE REMOVEDIR 8/84/
EXECUTE REMOVEDIR 8/84/
EXECUTE REMOVEDIR 8/83/
EXECUTE REMOVEDIR 8/82/
EXECUTE REMOVEDIR 8/81/
EXECUTE REMOVEDIR 8/80/
EXECUTE REMOVEDIR 8/80/
EXECUTE REMOVEFILE 7/70/7xtest.exe
EXECUTE REMOVEFILE 7/70/7xtext0
EXECUTE REMOVEFILE 7/70/7xtext1
EXECUTE REMOVEDIR 7/70/
EXECUTE REMOVEFILE 7/71/7xtest.exe
EXECUTE REMOVEFILE 7/71/7xtext0
EXECUTE REMOVEFILE 7/71/7xtext1
EXECUTE REMOVEDIR 7/71/
EXECUTE REMOVEFILE 7/7text0
EXECUTE REMOVEFILE 7/7text1
EXECUTE REMOVEDIR 7/
EXECUTE REMOVEDIR 6/
EXECUTE REMOVEFILE 5/5text1
EXECUTE REMOVEFILE 5/5text0
EXECUTE REMOVEFILE 5/5test.exe
EXECUTE REMOVEFILE 5/5text0
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEFILE 5/5text1
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEDIR 5/
EXECUTE REMOVEFILE 4/4text1
EXECUTE REMOVEFILE 4/4text0
EXECUTE REMOVEDIR 4/
EXECUTE REMOVEFILE 3/3text1
EXECUTE REMOVEFILE 3/3text0
FINISH REMOVEFILE searchplugins/searchpluginstext0
FINISH REMOVEFILE searchplugins/searchpluginspng0.png
FINISH REMOVEFILE removed-files
FINISH REMOVEFILE precomplete
FINISH REMOVEFILE exe0.exe
FINISH REMOVEFILE 2/20/20text0
FINISH REMOVEFILE 2/20/20png0.png
FINISH REMOVEFILE 0/0exe0.exe
FINISH REMOVEFILE 0/00/00text0
FINISH REMOVEDIR searchplugins/
removing directory: searchplugins/, rv: 0
FINISH REMOVEDIR defaults/pref/
removing directory: defaults/pref/, rv: 0
FINISH REMOVEDIR defaults/
removing directory: defaults/, rv: 0
FINISH REMOVEDIR 2/20/
FINISH REMOVEDIR 2/
FINISH REMOVEDIR 0/00/
removing directory: 0/00/, rv: 0
FINISH REMOVEDIR 0/
removing directory: 0/, rv: 0
FINISH ADD searchplugins/searchpluginstext0
FINISH ADD searchplugins/searchpluginspng1.png
FINISH ADD searchplugins/searchpluginspng0.png
FINISH ADD removed-files
FINISH ADD precomplete
FINISH ADD exe0.exe
FINISH ADD distribution/extensions/extensions1/extensions1text0
FINISH ADD distribution/extensions/extensions1/extensions1png1.png
FINISH ADD distribution/extensions/extensions1/extensions1png0.png
FINISH ADD distribution/extensions/extensions0/extensions0text0
FINISH ADD distribution/extensions/extensions0/extensions0png1.png
FINISH ADD distribution/extensions/extensions0/extensions0png0.png
FINISH ADD 1/10/10text0
FINISH ADD 0/0exe0.exe
FINISH ADD 0/00/00text1
FINISH ADD 0/00/00text0
FINISH ADD 0/00/00png0.png
FINISH REMOVEDIR 9/99/
FINISH REMOVEDIR 9/99/
directory no longer exists; skipping
FINISH REMOVEDIR 9/98/
FINISH REMOVEFILE 9/97/970/97xtext0
FINISH REMOVEFILE 9/97/970/97xtext1
FINISH REMOVEDIR 9/97/970/
FINISH REMOVEFILE 9/97/971/97xtext0
FINISH REMOVEFILE 9/97/971/97xtext1
FINISH REMOVEDIR 9/97/971/
FINISH REMOVEDIR 9/97/
FINISH REMOVEFILE 9/96/96text0
FINISH REMOVEFILE 9/96/96text1
FINISH REMOVEDIR 9/96/
FINISH REMOVEDIR 9/95/
FINISH REMOVEDIR 9/95/
directory no longer exists; skipping
FINISH REMOVEDIR 9/94/
FINISH REMOVEDIR 9/94/
directory no longer exists; skipping
FINISH REMOVEDIR 9/93/
FINISH REMOVEDIR 9/92/
removing directory: 9/92/, rv: 0
FINISH REMOVEDIR 9/91/
removing directory: 9/91/, rv: 0
FINISH REMOVEDIR 9/90/
FINISH REMOVEDIR 9/90/
directory no longer exists; skipping
FINISH REMOVEDIR 8/89/
FINISH REMOVEDIR 8/89/
directory no longer exists; skipping
FINISH REMOVEDIR 8/88/
FINISH REMOVEFILE 8/87/870/87xtext0
FINISH REMOVEFILE 8/87/870/87xtext1
FINISH REMOVEDIR 8/87/870/
FINISH REMOVEFILE 8/87/871/87xtext0
FINISH REMOVEFILE 8/87/871/87xtext1
FINISH REMOVEDIR 8/87/871/
FINISH REMOVEDIR 8/87/
FINISH REMOVEFILE 8/86/86text0
FINISH REMOVEFILE 8/86/86text1
FINISH REMOVEDIR 8/86/
FINISH REMOVEDIR 8/85/
FINISH REMOVEDIR 8/85/
directory no longer exists; skipping
FINISH REMOVEDIR 8/84/
FINISH REMOVEDIR 8/84/
directory no longer exists; skipping
FINISH REMOVEDIR 8/83/
FINISH REMOVEDIR 8/82/
removing directory: 8/82/, rv: 0
FINISH REMOVEDIR 8/81/
removing directory: 8/81/, rv: 0
FINISH REMOVEDIR 8/80/
FINISH REMOVEDIR 8/80/
directory no longer exists; skipping
FINISH REMOVEFILE 7/70/7xtest.exe
FINISH REMOVEFILE 7/70/7xtext0
FINISH REMOVEFILE 7/70/7xtext1
FINISH REMOVEDIR 7/70/
FINISH REMOVEFILE 7/71/7xtest.exe
FINISH REMOVEFILE 7/71/7xtext0
FINISH REMOVEFILE 7/71/7xtext1
FINISH REMOVEDIR 7/71/
FINISH REMOVEFILE 7/7text0
FINISH REMOVEFILE 7/7text1
FINISH REMOVEDIR 7/
FINISH REMOVEDIR 6/
FINISH REMOVEFILE 5/5text1
FINISH REMOVEFILE 5/5text0
FINISH REMOVEFILE 5/5test.exe
FINISH REMOVEDIR 5/
FINISH REMOVEFILE 4/4text1
FINISH REMOVEFILE 4/4text0
FINISH REMOVEDIR 4/
FINISH REMOVEFILE 3/3text1
FINISH REMOVEFILE 3/3text0
succeeded
calling QuitProgressUI

View file

@ -1,18 +0,0 @@
remove "searchplugins/searchpluginstext0"
remove "searchplugins/searchpluginspng1.png"
remove "searchplugins/searchpluginspng0.png"
remove "removed-files"
remove "precomplete"
remove "exe0.exe"
remove "1/10/10text0"
remove "0/0exe0.exe"
remove "0/00/00text1"
remove "0/00/00text0"
remove "0/00/00png0.png"
rmdir "searchplugins/"
rmdir "defaults/pref/"
rmdir "defaults/"
rmdir "1/10/"
rmdir "1/"
rmdir "0/00/"
rmdir "0/"

View file

@ -1,21 +0,0 @@
remove "Contents/Resources/searchplugins/searchpluginstext0"
remove "Contents/Resources/searchplugins/searchpluginspng1.png"
remove "Contents/Resources/searchplugins/searchpluginspng0.png"
remove "Contents/Resources/removed-files"
remove "Contents/Resources/precomplete"
remove "Contents/Resources/1/10/10text0"
remove "Contents/Resources/0/0exe0.exe"
remove "Contents/Resources/0/00/00text1"
remove "Contents/Resources/0/00/00text0"
remove "Contents/Resources/0/00/00png0.png"
remove "Contents/MacOS/exe0.exe"
rmdir "Contents/Resources/searchplugins/"
rmdir "Contents/Resources/defaults/pref/"
rmdir "Contents/Resources/defaults/"
rmdir "Contents/Resources/1/10/"
rmdir "Contents/Resources/1/"
rmdir "Contents/Resources/0/00/"
rmdir "Contents/Resources/0/"
rmdir "Contents/Resources/"
rmdir "Contents/MacOS/"
rmdir "Contents/"

View file

@ -1,41 +0,0 @@
text0
text1
3/3text0
3/3text1
4/exe0.exe
4/4text0
4/4text1
4/
5/5text0
5/5text1
5/*
6/
7/*
8/80/
8/81/
8/82/
8/83/
8/84/
8/85/*
8/86/*
8/87/*
8/88/*
8/89/*
8/80/
8/84/*
8/85/*
8/89/
9/90/
9/91/
9/92/
9/93/
9/94/
9/95/*
9/96/*
9/97/*
9/98/*
9/99/*
9/90/
9/94/*
9/95/*
9/99/

View file

@ -1,41 +0,0 @@
Contents/Resources/text0
Contents/Resources/text1
Contents/Resources/3/3text0
Contents/Resources/3/3text1
Contents/Resources/4/exe0.exe
Contents/Resources/4/4text0
Contents/Resources/4/4text1
Contents/Resources/4/
Contents/Resources/5/5text0
Contents/Resources/5/5text1
Contents/Resources/5/*
Contents/Resources/6/
Contents/Resources/7/*
Contents/Resources/8/80/
Contents/Resources/8/81/
Contents/Resources/8/82/
Contents/Resources/8/83/
Contents/Resources/8/84/
Contents/Resources/8/85/*
Contents/Resources/8/86/*
Contents/Resources/8/87/*
Contents/Resources/8/88/*
Contents/Resources/8/89/*
Contents/Resources/8/80/
Contents/Resources/8/84/*
Contents/Resources/8/85/*
Contents/Resources/8/89/
Contents/Resources/9/90/
Contents/Resources/9/91/
Contents/Resources/9/92/
Contents/Resources/9/93/
Contents/Resources/9/94/
Contents/Resources/9/95/*
Contents/Resources/9/96/*
Contents/Resources/9/97/*
Contents/Resources/9/98/*
Contents/Resources/9/99/*
Contents/Resources/9/90/
Contents/Resources/9/94/*
Contents/Resources/9/95/*
Contents/Resources/9/99/

View file

@ -1,59 +0,0 @@
type "complete"
add "precomplete"
add "searchplugins/searchpluginstext0"
add "searchplugins/searchpluginspng1.png"
add "searchplugins/searchpluginspng0.png"
add "removed-files"
add-if "extensions/extensions1" "extensions/extensions1/extensions1text0"
add-if "extensions/extensions1" "extensions/extensions1/extensions1png1.png"
add-if "extensions/extensions1" "extensions/extensions1/extensions1png0.png"
add-if "extensions/extensions0" "extensions/extensions0/extensions0text0"
add-if "extensions/extensions0" "extensions/extensions0/extensions0png1.png"
add-if "extensions/extensions0" "extensions/extensions0/extensions0png0.png"
add "exe0.exe"
add "1/10/10text0"
add "0/0exe0.exe"
add "0/00/00text1"
add "0/00/00text0"
add "0/00/00png0.png"
remove "text1"
remove "text0"
rmrfdir "9/99/"
rmdir "9/99/"
rmrfdir "9/98/"
rmrfdir "9/97/"
rmrfdir "9/96/"
rmrfdir "9/95/"
rmrfdir "9/95/"
rmrfdir "9/94/"
rmdir "9/94/"
rmdir "9/93/"
rmdir "9/92/"
rmdir "9/91/"
rmdir "9/90/"
rmdir "9/90/"
rmrfdir "8/89/"
rmdir "8/89/"
rmrfdir "8/88/"
rmrfdir "8/87/"
rmrfdir "8/86/"
rmrfdir "8/85/"
rmrfdir "8/85/"
rmrfdir "8/84/"
rmdir "8/84/"
rmdir "8/83/"
rmdir "8/82/"
rmdir "8/81/"
rmdir "8/80/"
rmdir "8/80/"
rmrfdir "7/"
rmdir "6/"
remove "5/5text1"
remove "5/5text0"
rmrfdir "5/"
remove "4/exe0.exe"
remove "4/4text1"
remove "4/4text0"
rmdir "4/"
remove "3/3text1"
remove "3/3text0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 776 B

View file

@ -1,192 +0,0 @@
UPDATE TYPE partial
PREPARE ADD Contents/Resources/searchplugins/searchpluginstext0
PREPARE PATCH Contents/Resources/searchplugins/searchpluginspng1.png
PREPARE PATCH Contents/Resources/searchplugins/searchpluginspng0.png
PREPARE ADD Contents/Resources/precomplete
PREPARE ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
PREPARE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
PREPARE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
PREPARE ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
PREPARE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
PREPARE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
PREPARE PATCH Contents/Resources/0/0exe0.exe
PREPARE ADD Contents/Resources/0/00/00text0
PREPARE PATCH Contents/Resources/0/00/00png0.png
PREPARE PATCH Contents/MacOS/exe0.exe
PREPARE ADD Contents/Resources/2/20/20text0
PREPARE ADD Contents/Resources/2/20/20png0.png
PREPARE ADD Contents/Resources/0/00/00text2
PREPARE REMOVEFILE Contents/Resources/1/10/10text0
PREPARE REMOVEFILE Contents/Resources/0/00/00text1
PREPARE REMOVEDIR Contents/Resources/9/99/
PREPARE REMOVEDIR Contents/Resources/9/99/
PREPARE REMOVEDIR Contents/Resources/9/98/
PREPARE REMOVEFILE Contents/Resources/9/97/970/97xtext0
PREPARE REMOVEFILE Contents/Resources/9/97/970/97xtext1
PREPARE REMOVEDIR Contents/Resources/9/97/970/
PREPARE REMOVEFILE Contents/Resources/9/97/971/97xtext0
PREPARE REMOVEFILE Contents/Resources/9/97/971/97xtext1
PREPARE REMOVEDIR Contents/Resources/9/97/971/
PREPARE REMOVEDIR Contents/Resources/9/97/
PREPARE REMOVEFILE Contents/Resources/9/96/96text0
PREPARE REMOVEFILE Contents/Resources/9/96/96text1
PREPARE REMOVEDIR Contents/Resources/9/96/
PREPARE REMOVEDIR Contents/Resources/9/95/
PREPARE REMOVEDIR Contents/Resources/9/95/
PREPARE REMOVEDIR Contents/Resources/9/94/
PREPARE REMOVEDIR Contents/Resources/9/94/
PREPARE REMOVEDIR Contents/Resources/9/93/
PREPARE REMOVEDIR Contents/Resources/9/92/
PREPARE REMOVEDIR Contents/Resources/9/91/
PREPARE REMOVEDIR Contents/Resources/9/90/
PREPARE REMOVEDIR Contents/Resources/9/90/
PREPARE REMOVEDIR Contents/Resources/8/89/
PREPARE REMOVEDIR Contents/Resources/8/89/
PREPARE REMOVEDIR Contents/Resources/8/88/
PREPARE REMOVEFILE Contents/Resources/8/87/870/87xtext0
PREPARE REMOVEFILE Contents/Resources/8/87/870/87xtext1
PREPARE REMOVEDIR Contents/Resources/8/87/870/
PREPARE REMOVEFILE Contents/Resources/8/87/871/87xtext0
PREPARE REMOVEFILE Contents/Resources/8/87/871/87xtext1
PREPARE REMOVEDIR Contents/Resources/8/87/871/
PREPARE REMOVEDIR Contents/Resources/8/87/
PREPARE REMOVEFILE Contents/Resources/8/86/86text0
PREPARE REMOVEFILE Contents/Resources/8/86/86text1
PREPARE REMOVEDIR Contents/Resources/8/86/
PREPARE REMOVEDIR Contents/Resources/8/85/
PREPARE REMOVEDIR Contents/Resources/8/85/
PREPARE REMOVEDIR Contents/Resources/8/84/
PREPARE REMOVEDIR Contents/Resources/8/84/
PREPARE REMOVEDIR Contents/Resources/8/83/
PREPARE REMOVEDIR Contents/Resources/8/82/
PREPARE REMOVEDIR Contents/Resources/8/81/
PREPARE REMOVEDIR Contents/Resources/8/80/
PREPARE REMOVEDIR Contents/Resources/8/80/
PREPARE REMOVEFILE Contents/Resources/7/70/7xtest.exe
PREPARE REMOVEFILE Contents/Resources/7/70/7xtext0
PREPARE REMOVEFILE Contents/Resources/7/70/7xtext1
PREPARE REMOVEDIR Contents/Resources/7/70/
PREPARE REMOVEFILE Contents/Resources/7/71/7xtest.exe
PREPARE REMOVEFILE Contents/Resources/7/71/7xtext0
PREPARE REMOVEFILE Contents/Resources/7/71/7xtext1
PREPARE REMOVEDIR Contents/Resources/7/71/
PREPARE REMOVEFILE Contents/Resources/7/7text0
PREPARE REMOVEFILE Contents/Resources/7/7text1
PREPARE REMOVEDIR Contents/Resources/7/
PREPARE REMOVEDIR Contents/Resources/6/
PREPARE REMOVEFILE Contents/Resources/5/5text1
PREPARE REMOVEFILE Contents/Resources/5/5text0
PREPARE REMOVEFILE Contents/Resources/5/5test.exe
PREPARE REMOVEFILE Contents/Resources/5/5text0
PREPARE REMOVEFILE Contents/Resources/5/5text1
PREPARE REMOVEDIR Contents/Resources/5/
PREPARE REMOVEFILE Contents/Resources/4/4text1
PREPARE REMOVEFILE Contents/Resources/4/4text0
PREPARE REMOVEDIR Contents/Resources/4/
PREPARE REMOVEFILE Contents/Resources/3/3text1
PREPARE REMOVEFILE Contents/Resources/3/3text0
PREPARE REMOVEDIR Contents/Resources/1/10/
PREPARE REMOVEDIR Contents/Resources/1/
EXECUTE ADD Contents/Resources/searchplugins/searchpluginstext0
EXECUTE PATCH Contents/Resources/searchplugins/searchpluginspng1.png
EXECUTE PATCH Contents/Resources/searchplugins/searchpluginspng0.png
EXECUTE ADD Contents/Resources/precomplete
EXECUTE ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
EXECUTE ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
EXECUTE PATCH Contents/Resources/0/0exe0.exe
LoadSourceFile: destination file size 776 does not match expected size 79872
LoadSourceFile failed
### execution failed
FINISH ADD Contents/Resources/searchplugins/searchpluginstext0
FINISH PATCH Contents/Resources/searchplugins/searchpluginspng1.png
FINISH PATCH Contents/Resources/searchplugins/searchpluginspng0.png
FINISH ADD Contents/Resources/precomplete
FINISH ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
backup_restore: backup file doesn't exist: Contents/Resources/distribution/extensions/extensions1/extensions1text0.moz-backup
FINISH PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
FINISH PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
FINISH ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
FINISH PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
FINISH PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
FINISH PATCH Contents/Resources/0/0exe0.exe
backup_restore: backup file doesn't exist: Contents/Resources/0/0exe0.exe.moz-backup
FINISH ADD Contents/Resources/0/00/00text0
backup_restore: backup file doesn't exist: Contents/Resources/0/00/00text0.moz-backup
FINISH PATCH Contents/Resources/0/00/00png0.png
backup_restore: backup file doesn't exist: Contents/Resources/0/00/00png0.png.moz-backup
FINISH PATCH Contents/MacOS/exe0.exe
backup_restore: backup file doesn't exist: Contents/MacOS/exe0.exe.moz-backup
FINISH ADD Contents/Resources/2/20/20text0
backup_restore: backup file doesn't exist: Contents/Resources/2/20/20text0.moz-backup
FINISH ADD Contents/Resources/2/20/20png0.png
backup_restore: backup file doesn't exist: Contents/Resources/2/20/20png0.png.moz-backup
FINISH ADD Contents/Resources/0/00/00text2
backup_restore: backup file doesn't exist: Contents/Resources/0/00/00text2.moz-backup
FINISH REMOVEFILE Contents/Resources/1/10/10text0
backup_restore: backup file doesn't exist: Contents/Resources/1/10/10text0.moz-backup
FINISH REMOVEFILE Contents/Resources/0/00/00text1
backup_restore: backup file doesn't exist: Contents/Resources/0/00/00text1.moz-backup
FINISH REMOVEFILE Contents/Resources/9/97/970/97xtext0
backup_restore: backup file doesn't exist: Contents/Resources/9/97/970/97xtext0.moz-backup
FINISH REMOVEFILE Contents/Resources/9/97/970/97xtext1
backup_restore: backup file doesn't exist: Contents/Resources/9/97/970/97xtext1.moz-backup
FINISH REMOVEFILE Contents/Resources/9/97/971/97xtext0
backup_restore: backup file doesn't exist: Contents/Resources/9/97/971/97xtext0.moz-backup
FINISH REMOVEFILE Contents/Resources/9/97/971/97xtext1
backup_restore: backup file doesn't exist: Contents/Resources/9/97/971/97xtext1.moz-backup
FINISH REMOVEFILE Contents/Resources/9/96/96text0
backup_restore: backup file doesn't exist: Contents/Resources/9/96/96text0.moz-backup
FINISH REMOVEFILE Contents/Resources/9/96/96text1
backup_restore: backup file doesn't exist: Contents/Resources/9/96/96text1.moz-backup
FINISH REMOVEFILE Contents/Resources/8/87/870/87xtext0
backup_restore: backup file doesn't exist: Contents/Resources/8/87/870/87xtext0.moz-backup
FINISH REMOVEFILE Contents/Resources/8/87/870/87xtext1
backup_restore: backup file doesn't exist: Contents/Resources/8/87/870/87xtext1.moz-backup
FINISH REMOVEFILE Contents/Resources/8/87/871/87xtext0
backup_restore: backup file doesn't exist: Contents/Resources/8/87/871/87xtext0.moz-backup
FINISH REMOVEFILE Contents/Resources/8/87/871/87xtext1
backup_restore: backup file doesn't exist: Contents/Resources/8/87/871/87xtext1.moz-backup
FINISH REMOVEFILE Contents/Resources/8/86/86text0
backup_restore: backup file doesn't exist: Contents/Resources/8/86/86text0.moz-backup
FINISH REMOVEFILE Contents/Resources/8/86/86text1
backup_restore: backup file doesn't exist: Contents/Resources/8/86/86text1.moz-backup
FINISH REMOVEFILE Contents/Resources/7/70/7xtest.exe
backup_restore: backup file doesn't exist: Contents/Resources/7/70/7xtest.exe.moz-backup
FINISH REMOVEFILE Contents/Resources/7/70/7xtext0
backup_restore: backup file doesn't exist: Contents/Resources/7/70/7xtext0.moz-backup
FINISH REMOVEFILE Contents/Resources/7/70/7xtext1
backup_restore: backup file doesn't exist: Contents/Resources/7/70/7xtext1.moz-backup
FINISH REMOVEFILE Contents/Resources/7/71/7xtest.exe
backup_restore: backup file doesn't exist: Contents/Resources/7/71/7xtest.exe.moz-backup
FINISH REMOVEFILE Contents/Resources/7/71/7xtext0
backup_restore: backup file doesn't exist: Contents/Resources/7/71/7xtext0.moz-backup
FINISH REMOVEFILE Contents/Resources/7/71/7xtext1
backup_restore: backup file doesn't exist: Contents/Resources/7/71/7xtext1.moz-backup
FINISH REMOVEFILE Contents/Resources/7/7text0
backup_restore: backup file doesn't exist: Contents/Resources/7/7text0.moz-backup
FINISH REMOVEFILE Contents/Resources/7/7text1
backup_restore: backup file doesn't exist: Contents/Resources/7/7text1.moz-backup
FINISH REMOVEFILE Contents/Resources/5/5text1
backup_restore: backup file doesn't exist: Contents/Resources/5/5text1.moz-backup
FINISH REMOVEFILE Contents/Resources/5/5text0
backup_restore: backup file doesn't exist: Contents/Resources/5/5text0.moz-backup
FINISH REMOVEFILE Contents/Resources/5/5test.exe
backup_restore: backup file doesn't exist: Contents/Resources/5/5test.exe.moz-backup
FINISH REMOVEFILE Contents/Resources/5/5text0
backup_restore: backup file doesn't exist: Contents/Resources/5/5text0.moz-backup
FINISH REMOVEFILE Contents/Resources/5/5text1
backup_restore: backup file doesn't exist: Contents/Resources/5/5text1.moz-backup
FINISH REMOVEFILE Contents/Resources/4/4text1
backup_restore: backup file doesn't exist: Contents/Resources/4/4text1.moz-backup
FINISH REMOVEFILE Contents/Resources/4/4text0
backup_restore: backup file doesn't exist: Contents/Resources/4/4text0.moz-backup
FINISH REMOVEFILE Contents/Resources/3/3text1
backup_restore: backup file doesn't exist: Contents/Resources/3/3text1.moz-backup
FINISH REMOVEFILE Contents/Resources/3/3text0
backup_restore: backup file doesn't exist: Contents/Resources/3/3text0.moz-backup
failed: 2
calling QuitProgressUI

View file

@ -1,192 +0,0 @@
UPDATE TYPE partial
PREPARE ADD searchplugins/searchpluginstext0
PREPARE PATCH searchplugins/searchpluginspng1.png
PREPARE PATCH searchplugins/searchpluginspng0.png
PREPARE ADD precomplete
PREPARE PATCH exe0.exe
PREPARE ADD distribution/extensions/extensions1/extensions1text0
PREPARE PATCH distribution/extensions/extensions1/extensions1png1.png
PREPARE PATCH distribution/extensions/extensions1/extensions1png0.png
PREPARE ADD distribution/extensions/extensions0/extensions0text0
PREPARE PATCH distribution/extensions/extensions0/extensions0png1.png
PREPARE PATCH distribution/extensions/extensions0/extensions0png0.png
PREPARE PATCH 0/0exe0.exe
PREPARE ADD 0/00/00text0
PREPARE PATCH 0/00/00png0.png
PREPARE ADD 2/20/20text0
PREPARE ADD 2/20/20png0.png
PREPARE ADD 0/00/00text2
PREPARE REMOVEFILE 1/10/10text0
PREPARE REMOVEFILE 0/00/00text1
PREPARE REMOVEDIR 9/99/
PREPARE REMOVEDIR 9/99/
PREPARE REMOVEDIR 9/98/
PREPARE REMOVEFILE 9/97/970/97xtext0
PREPARE REMOVEFILE 9/97/970/97xtext1
PREPARE REMOVEDIR 9/97/970/
PREPARE REMOVEFILE 9/97/971/97xtext0
PREPARE REMOVEFILE 9/97/971/97xtext1
PREPARE REMOVEDIR 9/97/971/
PREPARE REMOVEDIR 9/97/
PREPARE REMOVEFILE 9/96/96text0
PREPARE REMOVEFILE 9/96/96text1
PREPARE REMOVEDIR 9/96/
PREPARE REMOVEDIR 9/95/
PREPARE REMOVEDIR 9/95/
PREPARE REMOVEDIR 9/94/
PREPARE REMOVEDIR 9/94/
PREPARE REMOVEDIR 9/93/
PREPARE REMOVEDIR 9/92/
PREPARE REMOVEDIR 9/91/
PREPARE REMOVEDIR 9/90/
PREPARE REMOVEDIR 9/90/
PREPARE REMOVEDIR 8/89/
PREPARE REMOVEDIR 8/89/
PREPARE REMOVEDIR 8/88/
PREPARE REMOVEFILE 8/87/870/87xtext0
PREPARE REMOVEFILE 8/87/870/87xtext1
PREPARE REMOVEDIR 8/87/870/
PREPARE REMOVEFILE 8/87/871/87xtext0
PREPARE REMOVEFILE 8/87/871/87xtext1
PREPARE REMOVEDIR 8/87/871/
PREPARE REMOVEDIR 8/87/
PREPARE REMOVEFILE 8/86/86text0
PREPARE REMOVEFILE 8/86/86text1
PREPARE REMOVEDIR 8/86/
PREPARE REMOVEDIR 8/85/
PREPARE REMOVEDIR 8/85/
PREPARE REMOVEDIR 8/84/
PREPARE REMOVEDIR 8/84/
PREPARE REMOVEDIR 8/83/
PREPARE REMOVEDIR 8/82/
PREPARE REMOVEDIR 8/81/
PREPARE REMOVEDIR 8/80/
PREPARE REMOVEDIR 8/80/
PREPARE REMOVEFILE 7/70/7xtest.exe
PREPARE REMOVEFILE 7/70/7xtext0
PREPARE REMOVEFILE 7/70/7xtext1
PREPARE REMOVEDIR 7/70/
PREPARE REMOVEFILE 7/71/7xtest.exe
PREPARE REMOVEFILE 7/71/7xtext0
PREPARE REMOVEFILE 7/71/7xtext1
PREPARE REMOVEDIR 7/71/
PREPARE REMOVEFILE 7/7text0
PREPARE REMOVEFILE 7/7text1
PREPARE REMOVEDIR 7/
PREPARE REMOVEDIR 6/
PREPARE REMOVEFILE 5/5text1
PREPARE REMOVEFILE 5/5text0
PREPARE REMOVEFILE 5/5test.exe
PREPARE REMOVEFILE 5/5text0
PREPARE REMOVEFILE 5/5text1
PREPARE REMOVEDIR 5/
PREPARE REMOVEFILE 4/4text1
PREPARE REMOVEFILE 4/4text0
PREPARE REMOVEDIR 4/
PREPARE REMOVEFILE 3/3text1
PREPARE REMOVEFILE 3/3text0
PREPARE REMOVEDIR 1/10/
PREPARE REMOVEDIR 1/
EXECUTE ADD searchplugins/searchpluginstext0
EXECUTE PATCH searchplugins/searchpluginspng1.png
EXECUTE PATCH searchplugins/searchpluginspng0.png
EXECUTE ADD precomplete
EXECUTE PATCH exe0.exe
EXECUTE ADD distribution/extensions/extensions1/extensions1text0
EXECUTE PATCH distribution/extensions/extensions1/extensions1png1.png
EXECUTE PATCH distribution/extensions/extensions1/extensions1png0.png
EXECUTE ADD distribution/extensions/extensions0/extensions0text0
EXECUTE PATCH distribution/extensions/extensions0/extensions0png1.png
EXECUTE PATCH distribution/extensions/extensions0/extensions0png0.png
EXECUTE PATCH 0/0exe0.exe
LoadSourceFile: destination file size 776 does not match expected size 79872
LoadSourceFile failed
### execution failed
FINISH ADD searchplugins/searchpluginstext0
FINISH PATCH searchplugins/searchpluginspng1.png
FINISH PATCH searchplugins/searchpluginspng0.png
FINISH ADD precomplete
FINISH PATCH exe0.exe
FINISH ADD distribution/extensions/extensions1/extensions1text0
backup_restore: backup file doesn't exist: distribution/extensions/extensions1/extensions1text0.moz-backup
FINISH PATCH distribution/extensions/extensions1/extensions1png1.png
FINISH PATCH distribution/extensions/extensions1/extensions1png0.png
FINISH ADD distribution/extensions/extensions0/extensions0text0
FINISH PATCH distribution/extensions/extensions0/extensions0png1.png
FINISH PATCH distribution/extensions/extensions0/extensions0png0.png
FINISH PATCH 0/0exe0.exe
backup_restore: backup file doesn't exist: 0/0exe0.exe.moz-backup
FINISH ADD 0/00/00text0
backup_restore: backup file doesn't exist: 0/00/00text0.moz-backup
FINISH PATCH 0/00/00png0.png
backup_restore: backup file doesn't exist: 0/00/00png0.png.moz-backup
FINISH ADD 2/20/20text0
backup_restore: backup file doesn't exist: 2/20/20text0.moz-backup
FINISH ADD 2/20/20png0.png
backup_restore: backup file doesn't exist: 2/20/20png0.png.moz-backup
FINISH ADD 0/00/00text2
backup_restore: backup file doesn't exist: 0/00/00text2.moz-backup
FINISH REMOVEFILE 1/10/10text0
backup_restore: backup file doesn't exist: 1/10/10text0.moz-backup
FINISH REMOVEFILE 0/00/00text1
backup_restore: backup file doesn't exist: 0/00/00text1.moz-backup
FINISH REMOVEFILE 9/97/970/97xtext0
backup_restore: backup file doesn't exist: 9/97/970/97xtext0.moz-backup
FINISH REMOVEFILE 9/97/970/97xtext1
backup_restore: backup file doesn't exist: 9/97/970/97xtext1.moz-backup
FINISH REMOVEFILE 9/97/971/97xtext0
backup_restore: backup file doesn't exist: 9/97/971/97xtext0.moz-backup
FINISH REMOVEFILE 9/97/971/97xtext1
backup_restore: backup file doesn't exist: 9/97/971/97xtext1.moz-backup
FINISH REMOVEFILE 9/96/96text0
backup_restore: backup file doesn't exist: 9/96/96text0.moz-backup
FINISH REMOVEFILE 9/96/96text1
backup_restore: backup file doesn't exist: 9/96/96text1.moz-backup
FINISH REMOVEFILE 8/87/870/87xtext0
backup_restore: backup file doesn't exist: 8/87/870/87xtext0.moz-backup
FINISH REMOVEFILE 8/87/870/87xtext1
backup_restore: backup file doesn't exist: 8/87/870/87xtext1.moz-backup
FINISH REMOVEFILE 8/87/871/87xtext0
backup_restore: backup file doesn't exist: 8/87/871/87xtext0.moz-backup
FINISH REMOVEFILE 8/87/871/87xtext1
backup_restore: backup file doesn't exist: 8/87/871/87xtext1.moz-backup
FINISH REMOVEFILE 8/86/86text0
backup_restore: backup file doesn't exist: 8/86/86text0.moz-backup
FINISH REMOVEFILE 8/86/86text1
backup_restore: backup file doesn't exist: 8/86/86text1.moz-backup
FINISH REMOVEFILE 7/70/7xtest.exe
backup_restore: backup file doesn't exist: 7/70/7xtest.exe.moz-backup
FINISH REMOVEFILE 7/70/7xtext0
backup_restore: backup file doesn't exist: 7/70/7xtext0.moz-backup
FINISH REMOVEFILE 7/70/7xtext1
backup_restore: backup file doesn't exist: 7/70/7xtext1.moz-backup
FINISH REMOVEFILE 7/71/7xtest.exe
backup_restore: backup file doesn't exist: 7/71/7xtest.exe.moz-backup
FINISH REMOVEFILE 7/71/7xtext0
backup_restore: backup file doesn't exist: 7/71/7xtext0.moz-backup
FINISH REMOVEFILE 7/71/7xtext1
backup_restore: backup file doesn't exist: 7/71/7xtext1.moz-backup
FINISH REMOVEFILE 7/7text0
backup_restore: backup file doesn't exist: 7/7text0.moz-backup
FINISH REMOVEFILE 7/7text1
backup_restore: backup file doesn't exist: 7/7text1.moz-backup
FINISH REMOVEFILE 5/5text1
backup_restore: backup file doesn't exist: 5/5text1.moz-backup
FINISH REMOVEFILE 5/5text0
backup_restore: backup file doesn't exist: 5/5text0.moz-backup
FINISH REMOVEFILE 5/5test.exe
backup_restore: backup file doesn't exist: 5/5test.exe.moz-backup
FINISH REMOVEFILE 5/5text0
backup_restore: backup file doesn't exist: 5/5text0.moz-backup
FINISH REMOVEFILE 5/5text1
backup_restore: backup file doesn't exist: 5/5text1.moz-backup
FINISH REMOVEFILE 4/4text1
backup_restore: backup file doesn't exist: 4/4text1.moz-backup
FINISH REMOVEFILE 4/4text0
backup_restore: backup file doesn't exist: 4/4text0.moz-backup
FINISH REMOVEFILE 3/3text1
backup_restore: backup file doesn't exist: 3/3text1.moz-backup
FINISH REMOVEFILE 3/3text0
backup_restore: backup file doesn't exist: 3/3text0.moz-backup
failed: 2
calling QuitProgressUI

View file

@ -1,279 +0,0 @@
UPDATE TYPE partial
PREPARE ADD Contents/Resources/searchplugins/searchpluginstext0
PREPARE PATCH Contents/Resources/searchplugins/searchpluginspng1.png
PREPARE PATCH Contents/Resources/searchplugins/searchpluginspng0.png
PREPARE ADD Contents/Resources/precomplete
PREPARE ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
PREPARE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
PREPARE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
PREPARE ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
PREPARE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
PREPARE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
PREPARE PATCH Contents/Resources/0/0exe0.exe
PREPARE ADD Contents/Resources/0/00/00text0
PREPARE PATCH Contents/Resources/0/00/00png0.png
PREPARE PATCH Contents/MacOS/exe0.exe
PREPARE ADD Contents/Resources/2/20/20text0
PREPARE ADD Contents/Resources/2/20/20png0.png
PREPARE ADD Contents/Resources/0/00/00text2
PREPARE REMOVEFILE Contents/Resources/1/10/10text0
PREPARE REMOVEFILE Contents/Resources/0/00/00text1
PREPARE REMOVEDIR Contents/Resources/9/99/
PREPARE REMOVEDIR Contents/Resources/9/99/
PREPARE REMOVEDIR Contents/Resources/9/98/
PREPARE REMOVEFILE Contents/Resources/9/97/970/97xtext0
PREPARE REMOVEFILE Contents/Resources/9/97/970/97xtext1
PREPARE REMOVEDIR Contents/Resources/9/97/970/
PREPARE REMOVEFILE Contents/Resources/9/97/971/97xtext0
PREPARE REMOVEFILE Contents/Resources/9/97/971/97xtext1
PREPARE REMOVEDIR Contents/Resources/9/97/971/
PREPARE REMOVEDIR Contents/Resources/9/97/
PREPARE REMOVEFILE Contents/Resources/9/96/96text0
PREPARE REMOVEFILE Contents/Resources/9/96/96text1
PREPARE REMOVEDIR Contents/Resources/9/96/
PREPARE REMOVEDIR Contents/Resources/9/95/
PREPARE REMOVEDIR Contents/Resources/9/95/
PREPARE REMOVEDIR Contents/Resources/9/94/
PREPARE REMOVEDIR Contents/Resources/9/94/
PREPARE REMOVEDIR Contents/Resources/9/93/
PREPARE REMOVEDIR Contents/Resources/9/92/
PREPARE REMOVEDIR Contents/Resources/9/91/
PREPARE REMOVEDIR Contents/Resources/9/90/
PREPARE REMOVEDIR Contents/Resources/9/90/
PREPARE REMOVEDIR Contents/Resources/8/89/
PREPARE REMOVEDIR Contents/Resources/8/89/
PREPARE REMOVEDIR Contents/Resources/8/88/
PREPARE REMOVEFILE Contents/Resources/8/87/870/87xtext0
PREPARE REMOVEFILE Contents/Resources/8/87/870/87xtext1
PREPARE REMOVEDIR Contents/Resources/8/87/870/
PREPARE REMOVEFILE Contents/Resources/8/87/871/87xtext0
PREPARE REMOVEFILE Contents/Resources/8/87/871/87xtext1
PREPARE REMOVEDIR Contents/Resources/8/87/871/
PREPARE REMOVEDIR Contents/Resources/8/87/
PREPARE REMOVEFILE Contents/Resources/8/86/86text0
PREPARE REMOVEFILE Contents/Resources/8/86/86text1
PREPARE REMOVEDIR Contents/Resources/8/86/
PREPARE REMOVEDIR Contents/Resources/8/85/
PREPARE REMOVEDIR Contents/Resources/8/85/
PREPARE REMOVEDIR Contents/Resources/8/84/
PREPARE REMOVEDIR Contents/Resources/8/84/
PREPARE REMOVEDIR Contents/Resources/8/83/
PREPARE REMOVEDIR Contents/Resources/8/82/
PREPARE REMOVEDIR Contents/Resources/8/81/
PREPARE REMOVEDIR Contents/Resources/8/80/
PREPARE REMOVEDIR Contents/Resources/8/80/
PREPARE REMOVEFILE Contents/Resources/7/70/7xtest.exe
PREPARE REMOVEFILE Contents/Resources/7/70/7xtext0
PREPARE REMOVEFILE Contents/Resources/7/70/7xtext1
PREPARE REMOVEDIR Contents/Resources/7/70/
PREPARE REMOVEFILE Contents/Resources/7/71/7xtest.exe
PREPARE REMOVEFILE Contents/Resources/7/71/7xtext0
PREPARE REMOVEFILE Contents/Resources/7/71/7xtext1
PREPARE REMOVEDIR Contents/Resources/7/71/
PREPARE REMOVEFILE Contents/Resources/7/7text0
PREPARE REMOVEFILE Contents/Resources/7/7text1
PREPARE REMOVEDIR Contents/Resources/7/
PREPARE REMOVEDIR Contents/Resources/6/
PREPARE REMOVEFILE Contents/Resources/5/5text1
PREPARE REMOVEFILE Contents/Resources/5/5text0
PREPARE REMOVEFILE Contents/Resources/5/5test.exe
PREPARE REMOVEFILE Contents/Resources/5/5text0
PREPARE REMOVEFILE Contents/Resources/5/5text1
PREPARE REMOVEDIR Contents/Resources/5/
PREPARE REMOVEFILE Contents/Resources/4/4text1
PREPARE REMOVEFILE Contents/Resources/4/4text0
PREPARE REMOVEDIR Contents/Resources/4/
PREPARE REMOVEFILE Contents/Resources/3/3text1
PREPARE REMOVEFILE Contents/Resources/3/3text0
PREPARE REMOVEDIR Contents/Resources/1/10/
PREPARE REMOVEDIR Contents/Resources/1/
EXECUTE ADD Contents/Resources/searchplugins/searchpluginstext0
EXECUTE PATCH Contents/Resources/searchplugins/searchpluginspng1.png
EXECUTE PATCH Contents/Resources/searchplugins/searchpluginspng0.png
EXECUTE ADD Contents/Resources/precomplete
EXECUTE ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
EXECUTE ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
EXECUTE PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
EXECUTE PATCH Contents/Resources/0/0exe0.exe
EXECUTE ADD Contents/Resources/0/00/00text0
EXECUTE PATCH Contents/Resources/0/00/00png0.png
EXECUTE PATCH Contents/MacOS/exe0.exe
EXECUTE ADD Contents/Resources/2/20/20text0
EXECUTE ADD Contents/Resources/2/20/20png0.png
EXECUTE ADD Contents/Resources/0/00/00text2
EXECUTE REMOVEFILE Contents/Resources/1/10/10text0
EXECUTE REMOVEFILE Contents/Resources/0/00/00text1
EXECUTE REMOVEDIR Contents/Resources/9/99/
EXECUTE REMOVEDIR Contents/Resources/9/99/
EXECUTE REMOVEDIR Contents/Resources/9/98/
EXECUTE REMOVEFILE Contents/Resources/9/97/970/97xtext0
EXECUTE REMOVEFILE Contents/Resources/9/97/970/97xtext1
EXECUTE REMOVEDIR Contents/Resources/9/97/970/
EXECUTE REMOVEFILE Contents/Resources/9/97/971/97xtext0
EXECUTE REMOVEFILE Contents/Resources/9/97/971/97xtext1
EXECUTE REMOVEDIR Contents/Resources/9/97/971/
EXECUTE REMOVEDIR Contents/Resources/9/97/
EXECUTE REMOVEFILE Contents/Resources/9/96/96text0
EXECUTE REMOVEFILE Contents/Resources/9/96/96text1
EXECUTE REMOVEDIR Contents/Resources/9/96/
EXECUTE REMOVEDIR Contents/Resources/9/95/
EXECUTE REMOVEDIR Contents/Resources/9/95/
EXECUTE REMOVEDIR Contents/Resources/9/94/
EXECUTE REMOVEDIR Contents/Resources/9/94/
EXECUTE REMOVEDIR Contents/Resources/9/93/
EXECUTE REMOVEDIR Contents/Resources/9/92/
EXECUTE REMOVEDIR Contents/Resources/9/91/
EXECUTE REMOVEDIR Contents/Resources/9/90/
EXECUTE REMOVEDIR Contents/Resources/9/90/
EXECUTE REMOVEDIR Contents/Resources/8/89/
EXECUTE REMOVEDIR Contents/Resources/8/89/
EXECUTE REMOVEDIR Contents/Resources/8/88/
EXECUTE REMOVEFILE Contents/Resources/8/87/870/87xtext0
EXECUTE REMOVEFILE Contents/Resources/8/87/870/87xtext1
EXECUTE REMOVEDIR Contents/Resources/8/87/870/
EXECUTE REMOVEFILE Contents/Resources/8/87/871/87xtext0
EXECUTE REMOVEFILE Contents/Resources/8/87/871/87xtext1
EXECUTE REMOVEDIR Contents/Resources/8/87/871/
EXECUTE REMOVEDIR Contents/Resources/8/87/
EXECUTE REMOVEFILE Contents/Resources/8/86/86text0
EXECUTE REMOVEFILE Contents/Resources/8/86/86text1
EXECUTE REMOVEDIR Contents/Resources/8/86/
EXECUTE REMOVEDIR Contents/Resources/8/85/
EXECUTE REMOVEDIR Contents/Resources/8/85/
EXECUTE REMOVEDIR Contents/Resources/8/84/
EXECUTE REMOVEDIR Contents/Resources/8/84/
EXECUTE REMOVEDIR Contents/Resources/8/83/
EXECUTE REMOVEDIR Contents/Resources/8/82/
EXECUTE REMOVEDIR Contents/Resources/8/81/
EXECUTE REMOVEDIR Contents/Resources/8/80/
EXECUTE REMOVEDIR Contents/Resources/8/80/
EXECUTE REMOVEFILE Contents/Resources/7/70/7xtest.exe
EXECUTE REMOVEFILE Contents/Resources/7/70/7xtext0
EXECUTE REMOVEFILE Contents/Resources/7/70/7xtext1
EXECUTE REMOVEDIR Contents/Resources/7/70/
EXECUTE REMOVEFILE Contents/Resources/7/71/7xtest.exe
EXECUTE REMOVEFILE Contents/Resources/7/71/7xtext0
EXECUTE REMOVEFILE Contents/Resources/7/71/7xtext1
EXECUTE REMOVEDIR Contents/Resources/7/71/
EXECUTE REMOVEFILE Contents/Resources/7/7text0
EXECUTE REMOVEFILE Contents/Resources/7/7text1
EXECUTE REMOVEDIR Contents/Resources/7/
EXECUTE REMOVEDIR Contents/Resources/6/
EXECUTE REMOVEFILE Contents/Resources/5/5text1
EXECUTE REMOVEFILE Contents/Resources/5/5text0
EXECUTE REMOVEFILE Contents/Resources/5/5test.exe
EXECUTE REMOVEFILE Contents/Resources/5/5text0
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEFILE Contents/Resources/5/5text1
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEDIR Contents/Resources/5/
EXECUTE REMOVEFILE Contents/Resources/4/4text1
EXECUTE REMOVEFILE Contents/Resources/4/4text0
EXECUTE REMOVEDIR Contents/Resources/4/
EXECUTE REMOVEFILE Contents/Resources/3/3text1
EXECUTE REMOVEFILE Contents/Resources/3/3text0
EXECUTE REMOVEDIR Contents/Resources/1/10/
EXECUTE REMOVEDIR Contents/Resources/1/
FINISH ADD Contents/Resources/searchplugins/searchpluginstext0
FINISH PATCH Contents/Resources/searchplugins/searchpluginspng1.png
FINISH PATCH Contents/Resources/searchplugins/searchpluginspng0.png
FINISH ADD Contents/Resources/precomplete
FINISH ADD Contents/Resources/distribution/extensions/extensions1/extensions1text0
FINISH PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png1.png
FINISH PATCH Contents/Resources/distribution/extensions/extensions1/extensions1png0.png
FINISH ADD Contents/Resources/distribution/extensions/extensions0/extensions0text0
FINISH PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png1.png
FINISH PATCH Contents/Resources/distribution/extensions/extensions0/extensions0png0.png
FINISH PATCH Contents/Resources/0/0exe0.exe
FINISH ADD Contents/Resources/0/00/00text0
FINISH PATCH Contents/Resources/0/00/00png0.png
FINISH PATCH Contents/MacOS/exe0.exe
FINISH ADD Contents/Resources/2/20/20text0
FINISH ADD Contents/Resources/2/20/20png0.png
FINISH ADD Contents/Resources/0/00/00text2
FINISH REMOVEFILE Contents/Resources/1/10/10text0
FINISH REMOVEFILE Contents/Resources/0/00/00text1
FINISH REMOVEDIR Contents/Resources/9/99/
FINISH REMOVEDIR Contents/Resources/9/99/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/9/98/
FINISH REMOVEFILE Contents/Resources/9/97/970/97xtext0
FINISH REMOVEFILE Contents/Resources/9/97/970/97xtext1
FINISH REMOVEDIR Contents/Resources/9/97/970/
FINISH REMOVEFILE Contents/Resources/9/97/971/97xtext0
FINISH REMOVEFILE Contents/Resources/9/97/971/97xtext1
FINISH REMOVEDIR Contents/Resources/9/97/971/
FINISH REMOVEDIR Contents/Resources/9/97/
FINISH REMOVEFILE Contents/Resources/9/96/96text0
FINISH REMOVEFILE Contents/Resources/9/96/96text1
FINISH REMOVEDIR Contents/Resources/9/96/
FINISH REMOVEDIR Contents/Resources/9/95/
FINISH REMOVEDIR Contents/Resources/9/95/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/9/94/
FINISH REMOVEDIR Contents/Resources/9/94/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/9/93/
FINISH REMOVEDIR Contents/Resources/9/92/
removing directory: Contents/Resources/9/92/, rv: 0
FINISH REMOVEDIR Contents/Resources/9/91/
removing directory: Contents/Resources/9/91/, rv: 0
FINISH REMOVEDIR Contents/Resources/9/90/
FINISH REMOVEDIR Contents/Resources/9/90/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/89/
FINISH REMOVEDIR Contents/Resources/8/89/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/88/
FINISH REMOVEFILE Contents/Resources/8/87/870/87xtext0
FINISH REMOVEFILE Contents/Resources/8/87/870/87xtext1
FINISH REMOVEDIR Contents/Resources/8/87/870/
FINISH REMOVEFILE Contents/Resources/8/87/871/87xtext0
FINISH REMOVEFILE Contents/Resources/8/87/871/87xtext1
FINISH REMOVEDIR Contents/Resources/8/87/871/
FINISH REMOVEDIR Contents/Resources/8/87/
FINISH REMOVEFILE Contents/Resources/8/86/86text0
FINISH REMOVEFILE Contents/Resources/8/86/86text1
FINISH REMOVEDIR Contents/Resources/8/86/
FINISH REMOVEDIR Contents/Resources/8/85/
FINISH REMOVEDIR Contents/Resources/8/85/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/84/
FINISH REMOVEDIR Contents/Resources/8/84/
directory no longer exists; skipping
FINISH REMOVEDIR Contents/Resources/8/83/
FINISH REMOVEDIR Contents/Resources/8/82/
removing directory: Contents/Resources/8/82/, rv: 0
FINISH REMOVEDIR Contents/Resources/8/81/
removing directory: Contents/Resources/8/81/, rv: 0
FINISH REMOVEDIR Contents/Resources/8/80/
FINISH REMOVEDIR Contents/Resources/8/80/
directory no longer exists; skipping
FINISH REMOVEFILE Contents/Resources/7/70/7xtest.exe
FINISH REMOVEFILE Contents/Resources/7/70/7xtext0
FINISH REMOVEFILE Contents/Resources/7/70/7xtext1
FINISH REMOVEDIR Contents/Resources/7/70/
FINISH REMOVEFILE Contents/Resources/7/71/7xtest.exe
FINISH REMOVEFILE Contents/Resources/7/71/7xtext0
FINISH REMOVEFILE Contents/Resources/7/71/7xtext1
FINISH REMOVEDIR Contents/Resources/7/71/
FINISH REMOVEFILE Contents/Resources/7/7text0
FINISH REMOVEFILE Contents/Resources/7/7text1
FINISH REMOVEDIR Contents/Resources/7/
FINISH REMOVEDIR Contents/Resources/6/
FINISH REMOVEFILE Contents/Resources/5/5text1
FINISH REMOVEFILE Contents/Resources/5/5text0
FINISH REMOVEFILE Contents/Resources/5/5test.exe
FINISH REMOVEDIR Contents/Resources/5/
FINISH REMOVEFILE Contents/Resources/4/4text1
FINISH REMOVEFILE Contents/Resources/4/4text0
FINISH REMOVEDIR Contents/Resources/4/
FINISH REMOVEFILE Contents/Resources/3/3text1
FINISH REMOVEFILE Contents/Resources/3/3text0
FINISH REMOVEDIR Contents/Resources/1/10/
FINISH REMOVEDIR Contents/Resources/1/
succeeded
calling QuitProgressUI

View file

@ -1,279 +0,0 @@
UPDATE TYPE partial
PREPARE ADD searchplugins/searchpluginstext0
PREPARE PATCH searchplugins/searchpluginspng1.png
PREPARE PATCH searchplugins/searchpluginspng0.png
PREPARE ADD precomplete
PREPARE PATCH exe0.exe
PREPARE ADD distribution/extensions/extensions1/extensions1text0
PREPARE PATCH distribution/extensions/extensions1/extensions1png1.png
PREPARE PATCH distribution/extensions/extensions1/extensions1png0.png
PREPARE ADD distribution/extensions/extensions0/extensions0text0
PREPARE PATCH distribution/extensions/extensions0/extensions0png1.png
PREPARE PATCH distribution/extensions/extensions0/extensions0png0.png
PREPARE PATCH 0/0exe0.exe
PREPARE ADD 0/00/00text0
PREPARE PATCH 0/00/00png0.png
PREPARE ADD 2/20/20text0
PREPARE ADD 2/20/20png0.png
PREPARE ADD 0/00/00text2
PREPARE REMOVEFILE 1/10/10text0
PREPARE REMOVEFILE 0/00/00text1
PREPARE REMOVEDIR 9/99/
PREPARE REMOVEDIR 9/99/
PREPARE REMOVEDIR 9/98/
PREPARE REMOVEFILE 9/97/970/97xtext0
PREPARE REMOVEFILE 9/97/970/97xtext1
PREPARE REMOVEDIR 9/97/970/
PREPARE REMOVEFILE 9/97/971/97xtext0
PREPARE REMOVEFILE 9/97/971/97xtext1
PREPARE REMOVEDIR 9/97/971/
PREPARE REMOVEDIR 9/97/
PREPARE REMOVEFILE 9/96/96text0
PREPARE REMOVEFILE 9/96/96text1
PREPARE REMOVEDIR 9/96/
PREPARE REMOVEDIR 9/95/
PREPARE REMOVEDIR 9/95/
PREPARE REMOVEDIR 9/94/
PREPARE REMOVEDIR 9/94/
PREPARE REMOVEDIR 9/93/
PREPARE REMOVEDIR 9/92/
PREPARE REMOVEDIR 9/91/
PREPARE REMOVEDIR 9/90/
PREPARE REMOVEDIR 9/90/
PREPARE REMOVEDIR 8/89/
PREPARE REMOVEDIR 8/89/
PREPARE REMOVEDIR 8/88/
PREPARE REMOVEFILE 8/87/870/87xtext0
PREPARE REMOVEFILE 8/87/870/87xtext1
PREPARE REMOVEDIR 8/87/870/
PREPARE REMOVEFILE 8/87/871/87xtext0
PREPARE REMOVEFILE 8/87/871/87xtext1
PREPARE REMOVEDIR 8/87/871/
PREPARE REMOVEDIR 8/87/
PREPARE REMOVEFILE 8/86/86text0
PREPARE REMOVEFILE 8/86/86text1
PREPARE REMOVEDIR 8/86/
PREPARE REMOVEDIR 8/85/
PREPARE REMOVEDIR 8/85/
PREPARE REMOVEDIR 8/84/
PREPARE REMOVEDIR 8/84/
PREPARE REMOVEDIR 8/83/
PREPARE REMOVEDIR 8/82/
PREPARE REMOVEDIR 8/81/
PREPARE REMOVEDIR 8/80/
PREPARE REMOVEDIR 8/80/
PREPARE REMOVEFILE 7/70/7xtest.exe
PREPARE REMOVEFILE 7/70/7xtext0
PREPARE REMOVEFILE 7/70/7xtext1
PREPARE REMOVEDIR 7/70/
PREPARE REMOVEFILE 7/71/7xtest.exe
PREPARE REMOVEFILE 7/71/7xtext0
PREPARE REMOVEFILE 7/71/7xtext1
PREPARE REMOVEDIR 7/71/
PREPARE REMOVEFILE 7/7text0
PREPARE REMOVEFILE 7/7text1
PREPARE REMOVEDIR 7/
PREPARE REMOVEDIR 6/
PREPARE REMOVEFILE 5/5text1
PREPARE REMOVEFILE 5/5text0
PREPARE REMOVEFILE 5/5test.exe
PREPARE REMOVEFILE 5/5text0
PREPARE REMOVEFILE 5/5text1
PREPARE REMOVEDIR 5/
PREPARE REMOVEFILE 4/4text1
PREPARE REMOVEFILE 4/4text0
PREPARE REMOVEDIR 4/
PREPARE REMOVEFILE 3/3text1
PREPARE REMOVEFILE 3/3text0
PREPARE REMOVEDIR 1/10/
PREPARE REMOVEDIR 1/
EXECUTE ADD searchplugins/searchpluginstext0
EXECUTE PATCH searchplugins/searchpluginspng1.png
EXECUTE PATCH searchplugins/searchpluginspng0.png
EXECUTE ADD precomplete
EXECUTE PATCH exe0.exe
EXECUTE ADD distribution/extensions/extensions1/extensions1text0
EXECUTE PATCH distribution/extensions/extensions1/extensions1png1.png
EXECUTE PATCH distribution/extensions/extensions1/extensions1png0.png
EXECUTE ADD distribution/extensions/extensions0/extensions0text0
EXECUTE PATCH distribution/extensions/extensions0/extensions0png1.png
EXECUTE PATCH distribution/extensions/extensions0/extensions0png0.png
EXECUTE PATCH 0/0exe0.exe
EXECUTE ADD 0/00/00text0
EXECUTE PATCH 0/00/00png0.png
EXECUTE ADD 2/20/20text0
EXECUTE ADD 2/20/20png0.png
EXECUTE ADD 0/00/00text2
EXECUTE REMOVEFILE 1/10/10text0
EXECUTE REMOVEFILE 0/00/00text1
EXECUTE REMOVEDIR 9/99/
EXECUTE REMOVEDIR 9/99/
EXECUTE REMOVEDIR 9/98/
EXECUTE REMOVEFILE 9/97/970/97xtext0
EXECUTE REMOVEFILE 9/97/970/97xtext1
EXECUTE REMOVEDIR 9/97/970/
EXECUTE REMOVEFILE 9/97/971/97xtext0
EXECUTE REMOVEFILE 9/97/971/97xtext1
EXECUTE REMOVEDIR 9/97/971/
EXECUTE REMOVEDIR 9/97/
EXECUTE REMOVEFILE 9/96/96text0
EXECUTE REMOVEFILE 9/96/96text1
EXECUTE REMOVEDIR 9/96/
EXECUTE REMOVEDIR 9/95/
EXECUTE REMOVEDIR 9/95/
EXECUTE REMOVEDIR 9/94/
EXECUTE REMOVEDIR 9/94/
EXECUTE REMOVEDIR 9/93/
EXECUTE REMOVEDIR 9/92/
EXECUTE REMOVEDIR 9/91/
EXECUTE REMOVEDIR 9/90/
EXECUTE REMOVEDIR 9/90/
EXECUTE REMOVEDIR 8/89/
EXECUTE REMOVEDIR 8/89/
EXECUTE REMOVEDIR 8/88/
EXECUTE REMOVEFILE 8/87/870/87xtext0
EXECUTE REMOVEFILE 8/87/870/87xtext1
EXECUTE REMOVEDIR 8/87/870/
EXECUTE REMOVEFILE 8/87/871/87xtext0
EXECUTE REMOVEFILE 8/87/871/87xtext1
EXECUTE REMOVEDIR 8/87/871/
EXECUTE REMOVEDIR 8/87/
EXECUTE REMOVEFILE 8/86/86text0
EXECUTE REMOVEFILE 8/86/86text1
EXECUTE REMOVEDIR 8/86/
EXECUTE REMOVEDIR 8/85/
EXECUTE REMOVEDIR 8/85/
EXECUTE REMOVEDIR 8/84/
EXECUTE REMOVEDIR 8/84/
EXECUTE REMOVEDIR 8/83/
EXECUTE REMOVEDIR 8/82/
EXECUTE REMOVEDIR 8/81/
EXECUTE REMOVEDIR 8/80/
EXECUTE REMOVEDIR 8/80/
EXECUTE REMOVEFILE 7/70/7xtest.exe
EXECUTE REMOVEFILE 7/70/7xtext0
EXECUTE REMOVEFILE 7/70/7xtext1
EXECUTE REMOVEDIR 7/70/
EXECUTE REMOVEFILE 7/71/7xtest.exe
EXECUTE REMOVEFILE 7/71/7xtext0
EXECUTE REMOVEFILE 7/71/7xtext1
EXECUTE REMOVEDIR 7/71/
EXECUTE REMOVEFILE 7/7text0
EXECUTE REMOVEFILE 7/7text1
EXECUTE REMOVEDIR 7/
EXECUTE REMOVEDIR 6/
EXECUTE REMOVEFILE 5/5text1
EXECUTE REMOVEFILE 5/5text0
EXECUTE REMOVEFILE 5/5test.exe
EXECUTE REMOVEFILE 5/5text0
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEFILE 5/5text1
file cannot be removed because it does not exist; skipping
EXECUTE REMOVEDIR 5/
EXECUTE REMOVEFILE 4/4text1
EXECUTE REMOVEFILE 4/4text0
EXECUTE REMOVEDIR 4/
EXECUTE REMOVEFILE 3/3text1
EXECUTE REMOVEFILE 3/3text0
EXECUTE REMOVEDIR 1/10/
EXECUTE REMOVEDIR 1/
FINISH ADD searchplugins/searchpluginstext0
FINISH PATCH searchplugins/searchpluginspng1.png
FINISH PATCH searchplugins/searchpluginspng0.png
FINISH ADD precomplete
FINISH PATCH exe0.exe
FINISH ADD distribution/extensions/extensions1/extensions1text0
FINISH PATCH distribution/extensions/extensions1/extensions1png1.png
FINISH PATCH distribution/extensions/extensions1/extensions1png0.png
FINISH ADD distribution/extensions/extensions0/extensions0text0
FINISH PATCH distribution/extensions/extensions0/extensions0png1.png
FINISH PATCH distribution/extensions/extensions0/extensions0png0.png
FINISH PATCH 0/0exe0.exe
FINISH ADD 0/00/00text0
FINISH PATCH 0/00/00png0.png
FINISH ADD 2/20/20text0
FINISH ADD 2/20/20png0.png
FINISH ADD 0/00/00text2
FINISH REMOVEFILE 1/10/10text0
FINISH REMOVEFILE 0/00/00text1
FINISH REMOVEDIR 9/99/
FINISH REMOVEDIR 9/99/
directory no longer exists; skipping
FINISH REMOVEDIR 9/98/
FINISH REMOVEFILE 9/97/970/97xtext0
FINISH REMOVEFILE 9/97/970/97xtext1
FINISH REMOVEDIR 9/97/970/
FINISH REMOVEFILE 9/97/971/97xtext0
FINISH REMOVEFILE 9/97/971/97xtext1
FINISH REMOVEDIR 9/97/971/
FINISH REMOVEDIR 9/97/
FINISH REMOVEFILE 9/96/96text0
FINISH REMOVEFILE 9/96/96text1
FINISH REMOVEDIR 9/96/
FINISH REMOVEDIR 9/95/
FINISH REMOVEDIR 9/95/
directory no longer exists; skipping
FINISH REMOVEDIR 9/94/
FINISH REMOVEDIR 9/94/
directory no longer exists; skipping
FINISH REMOVEDIR 9/93/
FINISH REMOVEDIR 9/92/
removing directory: 9/92/, rv: 0
FINISH REMOVEDIR 9/91/
removing directory: 9/91/, rv: 0
FINISH REMOVEDIR 9/90/
FINISH REMOVEDIR 9/90/
directory no longer exists; skipping
FINISH REMOVEDIR 8/89/
FINISH REMOVEDIR 8/89/
directory no longer exists; skipping
FINISH REMOVEDIR 8/88/
FINISH REMOVEFILE 8/87/870/87xtext0
FINISH REMOVEFILE 8/87/870/87xtext1
FINISH REMOVEDIR 8/87/870/
FINISH REMOVEFILE 8/87/871/87xtext0
FINISH REMOVEFILE 8/87/871/87xtext1
FINISH REMOVEDIR 8/87/871/
FINISH REMOVEDIR 8/87/
FINISH REMOVEFILE 8/86/86text0
FINISH REMOVEFILE 8/86/86text1
FINISH REMOVEDIR 8/86/
FINISH REMOVEDIR 8/85/
FINISH REMOVEDIR 8/85/
directory no longer exists; skipping
FINISH REMOVEDIR 8/84/
FINISH REMOVEDIR 8/84/
directory no longer exists; skipping
FINISH REMOVEDIR 8/83/
FINISH REMOVEDIR 8/82/
removing directory: 8/82/, rv: 0
FINISH REMOVEDIR 8/81/
removing directory: 8/81/, rv: 0
FINISH REMOVEDIR 8/80/
FINISH REMOVEDIR 8/80/
directory no longer exists; skipping
FINISH REMOVEFILE 7/70/7xtest.exe
FINISH REMOVEFILE 7/70/7xtext0
FINISH REMOVEFILE 7/70/7xtext1
FINISH REMOVEDIR 7/70/
FINISH REMOVEFILE 7/71/7xtest.exe
FINISH REMOVEFILE 7/71/7xtext0
FINISH REMOVEFILE 7/71/7xtext1
FINISH REMOVEDIR 7/71/
FINISH REMOVEFILE 7/7text0
FINISH REMOVEFILE 7/7text1
FINISH REMOVEDIR 7/
FINISH REMOVEDIR 6/
FINISH REMOVEFILE 5/5text1
FINISH REMOVEFILE 5/5text0
FINISH REMOVEFILE 5/5test.exe
FINISH REMOVEDIR 5/
FINISH REMOVEFILE 4/4text1
FINISH REMOVEFILE 4/4text0
FINISH REMOVEDIR 4/
FINISH REMOVEFILE 3/3text1
FINISH REMOVEFILE 3/3text0
FINISH REMOVEDIR 1/10/
FINISH REMOVEDIR 1/
succeeded
calling QuitProgressUI

View file

@ -1,19 +0,0 @@
remove "searchplugins/searchpluginstext0"
remove "searchplugins/searchpluginspng1.png"
remove "searchplugins/searchpluginspng0.png"
remove "removed-files"
remove "precomplete"
remove "exe0.exe"
remove "2/20/20text0"
remove "2/20/20png0.png"
remove "0/0exe0.exe"
remove "0/00/00text2"
remove "0/00/00text0"
remove "0/00/00png0.png"
rmdir "searchplugins/"
rmdir "defaults/pref/"
rmdir "defaults/"
rmdir "2/20/"
rmdir "2/"
rmdir "0/00/"
rmdir "0/"

View file

@ -1,22 +0,0 @@
remove "Contents/Resources/searchplugins/searchpluginstext0"
remove "Contents/Resources/searchplugins/searchpluginspng1.png"
remove "Contents/Resources/searchplugins/searchpluginspng0.png"
remove "Contents/Resources/removed-files"
remove "Contents/Resources/precomplete"
remove "Contents/Resources/2/20/20text0"
remove "Contents/Resources/2/20/20png0.png"
remove "Contents/Resources/0/0exe0.exe"
remove "Contents/Resources/0/00/00text2"
remove "Contents/Resources/0/00/00text0"
remove "Contents/Resources/0/00/00png0.png"
remove "Contents/MacOS/exe0.exe"
rmdir "Contents/Resources/searchplugins/"
rmdir "Contents/Resources/defaults/pref/"
rmdir "Contents/Resources/defaults/"
rmdir "Contents/Resources/2/20/"
rmdir "Contents/Resources/2/"
rmdir "Contents/Resources/0/00/"
rmdir "Contents/Resources/0/"
rmdir "Contents/Resources/"
rmdir "Contents/MacOS/"
rmdir "Contents/"

View file

@ -1,41 +0,0 @@
a/b/text0
a/b/text1
a/b/3/3text0
a/b/3/3text1
a/b/4/4exe0.exe
a/b/4/4text0
a/b/4/4text1
a/b/4/
a/b/5/5text0
a/b/5/5text1
a/b/5/*
a/b/6/
a/b/7/*
a/b/8/80/
a/b/8/81/
a/b/8/82/
a/b/8/83/
a/b/8/84/
a/b/8/85/*
a/b/8/86/*
a/b/8/87/*
a/b/8/88/*
a/b/8/89/*
a/b/8/80/
a/b/8/84/*
a/b/8/85/*
a/b/8/89/
a/b/9/90/
a/b/9/91/
a/b/9/92/
a/b/9/93/
a/b/9/94/
a/b/9/95/*
a/b/9/96/*
a/b/9/97/*
a/b/9/98/*
a/b/9/99/*
a/b/9/90/
a/b/9/94/*
a/b/9/95/*
a/b/9/99/

View file

@ -1,41 +0,0 @@
Contents/Resources/text0
Contents/Resources/text1
Contents/Resources/3/3text0
Contents/Resources/3/3text1
Contents/Resources/4/exe0.exe
Contents/Resources/4/4text0
Contents/Resources/4/4text1
Contents/Resources/4/
Contents/Resources/5/5text0
Contents/Resources/5/5text1
Contents/Resources/5/*
Contents/Resources/6/
Contents/Resources/7/*
Contents/Resources/8/80/
Contents/Resources/8/81/
Contents/Resources/8/82/
Contents/Resources/8/83/
Contents/Resources/8/84/
Contents/Resources/8/85/*
Contents/Resources/8/86/*
Contents/Resources/8/87/*
Contents/Resources/8/88/*
Contents/Resources/8/89/*
Contents/Resources/8/80/
Contents/Resources/8/84/*
Contents/Resources/8/85/*
Contents/Resources/8/89/
Contents/Resources/9/90/
Contents/Resources/9/91/
Contents/Resources/9/92/
Contents/Resources/9/93/
Contents/Resources/9/94/
Contents/Resources/9/95/*
Contents/Resources/9/96/*
Contents/Resources/9/97/*
Contents/Resources/9/98/*
Contents/Resources/9/99/*
Contents/Resources/9/90/
Contents/Resources/9/94/*
Contents/Resources/9/95/*
Contents/Resources/9/99/

View file

@ -1,63 +0,0 @@
type "partial"
add "precomplete"
add "a/b/searchplugins/searchpluginstext0"
patch-if "a/b/searchplugins/searchpluginspng1.png" "a/b/searchplugins/searchpluginspng1.png.patch" "a/b/searchplugins/searchpluginspng1.png"
patch-if "a/b/searchplugins/searchpluginspng0.png" "a/b/searchplugins/searchpluginspng0.png.patch" "a/b/searchplugins/searchpluginspng0.png"
add-if "a/b/extensions/extensions1" "a/b/extensions/extensions1/extensions1text0"
patch-if "a/b/extensions/extensions1" "a/b/extensions/extensions1/extensions1png1.png.patch" "a/b/extensions/extensions1/extensions1png1.png"
patch-if "a/b/extensions/extensions1" "a/b/extensions/extensions1/extensions1png0.png.patch" "a/b/extensions/extensions1/extensions1png0.png"
add-if "a/b/extensions/extensions0" "a/b/extensions/extensions0/extensions0text0"
patch-if "a/b/extensions/extensions0" "a/b/extensions/extensions0/extensions0png1.png.patch" "a/b/extensions/extensions0/extensions0png1.png"
patch-if "a/b/extensions/extensions0" "a/b/extensions/extensions0/extensions0png0.png.patch" "a/b/extensions/extensions0/extensions0png0.png"
patch "a/b/exe0.exe.patch" "a/b/exe0.exe"
patch "a/b/0/0exe0.exe.patch" "a/b/0/0exe0.exe"
add "a/b/0/00/00text0"
patch "a/b/0/00/00png0.png.patch" "a/b/0/00/00png0.png"
add "a/b/2/20/20text0"
add "a/b/2/20/20png0.png"
add "a/b/0/00/00text2"
remove "a/b/1/10/10text0"
remove "a/b/0/00/00text1"
remove "a/b/text1"
remove "a/b/text0"
rmrfdir "a/b/9/99/"
rmdir "a/b/9/99/"
rmrfdir "a/b/9/98/"
rmrfdir "a/b/9/97/"
rmrfdir "a/b/9/96/"
rmrfdir "a/b/9/95/"
rmrfdir "a/b/9/95/"
rmrfdir "a/b/9/94/"
rmdir "a/b/9/94/"
rmdir "a/b/9/93/"
rmdir "a/b/9/92/"
rmdir "a/b/9/91/"
rmdir "a/b/9/90/"
rmdir "a/b/9/90/"
rmrfdir "a/b/8/89/"
rmdir "a/b/8/89/"
rmrfdir "a/b/8/88/"
rmrfdir "a/b/8/87/"
rmrfdir "a/b/8/86/"
rmrfdir "a/b/8/85/"
rmrfdir "a/b/8/85/"
rmrfdir "a/b/8/84/"
rmdir "a/b/8/84/"
rmdir "a/b/8/83/"
rmdir "a/b/8/82/"
rmdir "a/b/8/81/"
rmdir "a/b/8/80/"
rmdir "a/b/8/80/"
rmrfdir "a/b/7/"
rmdir "a/b/6/"
remove "a/b/5/5text1"
remove "a/b/5/5text0"
rmrfdir "a/b/5/"
remove "a/b/4/4text1"
remove "a/b/4/4text0"
remove "a/b/4/4exe0.exe"
rmdir "a/b/4/"
remove "a/b/3/3text1"
remove "a/b/3/3text0"
rmdir "a/b/1/10/"
rmdir "a/b/1/"

View file

@ -1,6 +0,0 @@
Performing a replace request
rename_file: proceeding to rename the directory
rename_file: proceeding to rename the directory
Now, remove the tmpDir
succeeded
calling QuitProgressUI

View file

@ -1,632 +0,0 @@
/* 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/. */
/* Shared code for xpcshell and mochitests-chrome */
/* eslint-disable no-undef */
Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
const PREF_APP_UPDATE_AUTO = "app.update.auto";
const PREF_APP_UPDATE_BACKGROUNDERRORS = "app.update.backgroundErrors";
const PREF_APP_UPDATE_BACKGROUNDMAXERRORS = "app.update.backgroundMaxErrors";
const PREF_APP_UPDATE_CHANNEL = "app.update.channel";
const PREF_APP_UPDATE_DOWNLOADBACKGROUNDINTERVAL = "app.update.download.backgroundInterval";
const PREF_APP_UPDATE_ENABLED = "app.update.enabled";
const PREF_APP_UPDATE_IDLETIME = "app.update.idletime";
const PREF_APP_UPDATE_LOG = "app.update.log";
const PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED = "app.update.notifiedUnsupported";
const PREF_APP_UPDATE_PROMPTWAITTIME = "app.update.promptWaitTime";
const PREF_APP_UPDATE_RETRYTIMEOUT = "app.update.socket.retryTimeout";
const PREF_APP_UPDATE_SERVICE_ENABLED = "app.update.service.enabled";
const PREF_APP_UPDATE_SILENT = "app.update.silent";
const PREF_APP_UPDATE_SOCKET_MAXERRORS = "app.update.socket.maxErrors";
const PREF_APP_UPDATE_STAGING_ENABLED = "app.update.staging.enabled";
const PREF_APP_UPDATE_URL = "app.update.url";
const PREF_APP_UPDATE_URL_DETAILS = "app.update.url.details";
const PREFBRANCH_APP_UPDATE_NEVER = "app.update.never.";
const PREFBRANCH_APP_PARTNER = "app.partner.";
const PREF_DISTRIBUTION_ID = "distribution.id";
const PREF_DISTRIBUTION_VERSION = "distribution.version";
const PREF_TOOLKIT_TELEMETRY_ENABLED = "toolkit.telemetry.enabled";
const NS_APP_PROFILE_DIR_STARTUP = "ProfDS";
const NS_APP_USER_PROFILE_50_DIR = "ProfD";
const NS_GRE_DIR = "GreD";
const NS_GRE_BIN_DIR = "GreBinD";
const NS_XPCOM_CURRENT_PROCESS_DIR = "XCurProcD";
const XRE_EXECUTABLE_FILE = "XREExeF";
const XRE_UPDATE_ROOT_DIR = "UpdRootD";
const DIR_PATCH = "0";
const DIR_TOBEDELETED = "tobedeleted";
const DIR_UPDATES = "updates";
const DIR_UPDATED = IS_MACOSX ? "Updated.app" : "updated";
const FILE_ACTIVE_UPDATE_XML = "active-update.xml";
const FILE_APPLICATION_INI = "application.ini";
const FILE_BACKUP_UPDATE_LOG = "backup-update.log";
const FILE_LAST_UPDATE_LOG = "last-update.log";
const FILE_UPDATE_SETTINGS_INI = "update-settings.ini";
const FILE_UPDATE_SETTINGS_INI_BAK = "update-settings.ini.bak";
const FILE_UPDATER_INI = "updater.ini";
const FILE_UPDATES_XML = "updates.xml";
const FILE_UPDATE_LOG = "update.log";
const FILE_UPDATE_MAR = "update.mar";
const FILE_UPDATE_STATUS = "update.status";
const FILE_UPDATE_TEST = "update.test";
const FILE_UPDATE_VERSION = "update.version";
const UPDATE_SETTINGS_CONTENTS = "[Settings]\n" +
"ACCEPTED_MAR_CHANNEL_IDS=xpcshell-test\n";
const PR_RDWR = 0x04;
const PR_CREATE_FILE = 0x08;
const PR_TRUNCATE = 0x20;
const DEFAULT_UPDATE_VERSION = "999999.0";
var gChannel;
/* import-globals-from ../data/sharedUpdateXML.js */
Services.scriptloader.loadSubScript(DATA_URI_SPEC + "sharedUpdateXML.js", this);
const PERMS_FILE = FileUtils.PERMS_FILE;
const PERMS_DIRECTORY = FileUtils.PERMS_DIRECTORY;
const MODE_WRONLY = FileUtils.MODE_WRONLY;
const MODE_CREATE = FileUtils.MODE_CREATE;
const MODE_APPEND = FileUtils.MODE_APPEND;
const MODE_TRUNCATE = FileUtils.MODE_TRUNCATE;
const URI_UPDATES_PROPERTIES = "chrome://mozapps/locale/update/updates.properties";
const gUpdateBundle = Services.strings.createBundle(URI_UPDATES_PROPERTIES);
XPCOMUtils.defineLazyGetter(this, "gAUS", function test_gAUS() {
return Cc["@mozilla.org/updates/update-service;1"].
getService(Ci.nsIApplicationUpdateService).
QueryInterface(Ci.nsITimerCallback).
QueryInterface(Ci.nsIObserver).
QueryInterface(Ci.nsIUpdateCheckListener);
});
XPCOMUtils.defineLazyServiceGetter(this, "gUpdateManager",
"@mozilla.org/updates/update-manager;1",
"nsIUpdateManager");
XPCOMUtils.defineLazyGetter(this, "gUpdateChecker", function test_gUC() {
return Cc["@mozilla.org/updates/update-checker;1"].
createInstance(Ci.nsIUpdateChecker);
});
XPCOMUtils.defineLazyGetter(this, "gUP", function test_gUP() {
return Cc["@mozilla.org/updates/update-prompt;1"].
createInstance(Ci.nsIUpdatePrompt);
});
XPCOMUtils.defineLazyGetter(this, "gDefaultPrefBranch", function test_gDPB() {
return Services.prefs.getDefaultBranch(null);
});
XPCOMUtils.defineLazyGetter(this, "gPrefRoot", function test_gPR() {
return Services.prefs.getBranch(null);
});
XPCOMUtils.defineLazyServiceGetter(this, "gEnv",
"@mozilla.org/process/environment;1",
"nsIEnvironment");
XPCOMUtils.defineLazyGetter(this, "gZipW", function test_gZipW() {
return Cc["@mozilla.org/zipwriter;1"].
createInstance(Ci.nsIZipWriter);
});
/* Triggers post-update processing */
function testPostUpdateProcessing() {
gAUS.observe(null, "test-post-update-processing", "");
}
/* Initializes the update service stub */
function initUpdateServiceStub() {
Cc["@mozilla.org/updates/update-service-stub;1"].
createInstance(Ci.nsISupports);
}
/* Reloads the update metadata from disk */
function reloadUpdateManagerData() {
gUpdateManager.QueryInterface(Ci.nsIObserver).
observe(null, "um-reload-update-data", "");
}
const observer = {
observe: function(aSubject, aTopic, aData) {
if (aTopic == "nsPref:changed" && aData == PREF_APP_UPDATE_CHANNEL) {
let channel = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_CHANNEL);
if (channel != gChannel) {
debugDump("Changing channel from " + channel + " to " + gChannel);
gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_CHANNEL, gChannel);
}
}
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver])
};
/**
* Sets the app.update.channel preference.
*
* @param aChannel
* The update channel.
*/
function setUpdateChannel(aChannel) {
gChannel = aChannel;
debugDump("setting default pref " + PREF_APP_UPDATE_CHANNEL + " to " + gChannel);
gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_CHANNEL, gChannel);
gPrefRoot.addObserver(PREF_APP_UPDATE_CHANNEL, observer, false);
}
/**
* Sets the app.update.url default preference.
*
* @param aURL
* The update url. If not specified 'URL_HOST + "/update.xml"' will be
* used.
*/
function setUpdateURL(aURL) {
let url = aURL ? aURL : URL_HOST + "/update.xml";
debugDump("setting " + PREF_APP_UPDATE_URL + " to " + url);
gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
}
/**
* Returns either the active or regular update database XML file.
*
* @param isActiveUpdate
* If true this will return the active-update.xml otherwise it will
* return the updates.xml file.
*/
function getUpdatesXMLFile(aIsActiveUpdate) {
let file = getUpdatesRootDir();
file.append(aIsActiveUpdate ? FILE_ACTIVE_UPDATE_XML : FILE_UPDATES_XML);
return file;
}
/**
* Writes the updates specified to either the active-update.xml or the
* updates.xml.
*
* @param aContent
* The updates represented as a string to write to the XML file.
* @param isActiveUpdate
* If true this will write to the active-update.xml otherwise it will
* write to the updates.xml file.
*/
function writeUpdatesToXMLFile(aContent, aIsActiveUpdate) {
writeFile(getUpdatesXMLFile(aIsActiveUpdate), aContent);
}
/**
* Writes the current update operation/state to a file in the patch
* directory, indicating to the patching system that operations need
* to be performed.
*
* @param aStatus
* The status value to write.
*/
function writeStatusFile(aStatus) {
let file = getUpdatesPatchDir();
file.append(FILE_UPDATE_STATUS);
writeFile(file, aStatus + "\n");
}
/**
* Writes the current update version to a file in the patch directory,
* indicating to the patching system the version of the update.
*
* @param aVersion
* The version value to write.
*/
function writeVersionFile(aVersion) {
let file = getUpdatesPatchDir();
file.append(FILE_UPDATE_VERSION);
writeFile(file, aVersion + "\n");
}
/**
* Gets the root directory for the updates directory.
*
* @return nsIFile for the updates root directory.
*/
function getUpdatesRootDir() {
return Services.dirsvc.get(XRE_UPDATE_ROOT_DIR, Ci.nsIFile);
}
/**
* Gets the updates directory.
*
* @return nsIFile for the updates directory.
*/
function getUpdatesDir() {
let dir = getUpdatesRootDir();
dir.append(DIR_UPDATES);
return dir;
}
/**
* Gets the directory for update patches.
*
* @return nsIFile for the updates directory.
*/
function getUpdatesPatchDir() {
let dir = getUpdatesDir();
dir.append(DIR_PATCH);
return dir;
}
/**
* Writes text to a file. This will replace existing text if the file exists
* and create the file if it doesn't exist.
*
* @param aFile
* The file to write to. Will be created if it doesn't exist.
* @param aText
* The text to write to the file. If there is existing text it will be
* replaced.
*/
function writeFile(aFile, aText) {
let fos = Cc["@mozilla.org/network/file-output-stream;1"].
createInstance(Ci.nsIFileOutputStream);
if (!aFile.exists()) {
aFile.create(Ci.nsILocalFile.NORMAL_FILE_TYPE, PERMS_FILE);
}
fos.init(aFile, MODE_WRONLY | MODE_CREATE | MODE_TRUNCATE, PERMS_FILE, 0);
fos.write(aText, aText.length);
fos.close();
}
/**
* Reads the current update operation/state in the status file in the patch
* directory including the error code if it is present.
*
* @return The status value.
*/
function readStatusFile() {
let file = getUpdatesPatchDir();
file.append(FILE_UPDATE_STATUS);
if (!file.exists()) {
debugDump("update status file does not exists! Path: " + file.path);
return STATE_NONE;
}
return readFile(file).split("\n")[0];
}
/**
* Reads the current update operation/state in the status file in the patch
* directory without the error code if it is present.
*
* @return The state value.
*/
function readStatusState() {
return readStatusFile().split(": ")[0];
}
/**
* Reads the current update operation/state in the status file in the patch
* directory with the error code.
*
* @return The state value.
*/
function readStatusFailedCode() {
return readStatusFile().split(": ")[1];
}
/**
* Reads text from a file and returns the string.
*
* @param aFile
* The file to read from.
* @return The string of text read from the file.
*/
function readFile(aFile) {
let fis = Cc["@mozilla.org/network/file-input-stream;1"].
createInstance(Ci.nsIFileInputStream);
if (!aFile.exists()) {
return null;
}
// Specifying -1 for ioFlags will open the file with the default of PR_RDONLY.
// Specifying -1 for perm will open the file with the default of 0.
fis.init(aFile, -1, -1, Ci.nsIFileInputStream.CLOSE_ON_EOF);
let sis = Cc["@mozilla.org/scriptableinputstream;1"].
createInstance(Ci.nsIScriptableInputStream);
sis.init(fis);
let text = sis.read(sis.available());
sis.close();
return text;
}
/**
* Reads the binary contents of a file and returns it as a string.
*
* @param aFile
* The file to read from.
* @return The contents of the file as a string.
*/
function readFileBytes(aFile) {
debugDump("attempting to read file, path: " + aFile.path);
let fis = Cc["@mozilla.org/network/file-input-stream;1"].
createInstance(Ci.nsIFileInputStream);
// Specifying -1 for ioFlags will open the file with the default of PR_RDONLY.
// Specifying -1 for perm will open the file with the default of 0.
fis.init(aFile, -1, -1, Ci.nsIFileInputStream.CLOSE_ON_EOF);
let bis = Cc["@mozilla.org/binaryinputstream;1"].
createInstance(Ci.nsIBinaryInputStream);
bis.setInputStream(fis);
let data = [];
let count = fis.available();
while (count > 0) {
let bytes = bis.readByteArray(Math.min(65535, count));
data.push(String.fromCharCode.apply(null, bytes));
count -= bytes.length;
if (bytes.length == 0) {
throw "Nothing read from input stream!";
}
}
data.join('');
fis.close();
return data.toString();
}
/* Returns human readable status text from the updates.properties bundle */
function getStatusText(aErrCode) {
return getString("check_error-" + aErrCode);
}
/* Returns a string from the updates.properties bundle */
function getString(aName) {
try {
return gUpdateBundle.GetStringFromName(aName);
} catch (e) {
}
return null;
}
/**
* Gets the file extension for an nsIFile.
*
* @param aFile
* The file to get the file extension for.
* @return The file extension.
*/
function getFileExtension(aFile) {
return Services.io.newFileURI(aFile).QueryInterface(Ci.nsIURL).
fileExtension;
}
/**
* Removes the updates.xml file, active-update.xml file, and all files and
* sub-directories in the updates directory except for the "0" sub-directory.
* This prevents some tests from failing due to files being left behind when the
* tests are interrupted.
*/
function removeUpdateDirsAndFiles() {
let file = getUpdatesXMLFile(true);
try {
if (file.exists()) {
file.remove(false);
}
} catch (e) {
logTestInfo("Unable to remove file. Path: " + file.path +
", Exception: " + e);
}
file = getUpdatesXMLFile(false);
try {
if (file.exists()) {
file.remove(false);
}
} catch (e) {
logTestInfo("Unable to remove file. Path: " + file.path +
", Exception: " + e);
}
// This fails sporadically on Mac OS X so wrap it in a try catch
let updatesDir = getUpdatesDir();
try {
cleanUpdatesDir(updatesDir);
} catch (e) {
logTestInfo("Unable to remove files / directories from directory. Path: " +
updatesDir.path + ", Exception: " + e);
}
}
/**
* Removes all files and sub-directories in the updates directory except for
* the "0" sub-directory.
*
* @param aDir
* nsIFile for the directory to be deleted.
*/
function cleanUpdatesDir(aDir) {
if (!aDir.exists()) {
return;
}
let dirEntries = aDir.directoryEntries;
while (dirEntries.hasMoreElements()) {
let entry = dirEntries.getNext().QueryInterface(Ci.nsIFile);
if (entry.isDirectory()) {
if (entry.leafName == DIR_PATCH && entry.parent.leafName == DIR_UPDATES) {
cleanUpdatesDir(entry);
entry.permissions = PERMS_DIRECTORY;
} else {
try {
entry.remove(true);
return;
} catch (e) {
}
cleanUpdatesDir(entry);
entry.permissions = PERMS_DIRECTORY;
try {
entry.remove(true);
} catch (e) {
logTestInfo("cleanUpdatesDir: unable to remove directory. Path: " +
entry.path + ", Exception: " + e);
throw (e);
}
}
} else {
entry.permissions = PERMS_FILE;
try {
entry.remove(false);
} catch (e) {
logTestInfo("cleanUpdatesDir: unable to remove file. Path: " +
entry.path + ", Exception: " + e);
throw (e);
}
}
}
}
/**
* Deletes a directory and its children. First it tries nsIFile::Remove(true).
* If that fails it will fall back to recursing, setting the appropriate
* permissions, and deleting the current entry.
*
* @param aDir
* nsIFile for the directory to be deleted.
*/
function removeDirRecursive(aDir) {
if (!aDir.exists()) {
return;
}
try {
debugDump("attempting to remove directory. Path: " + aDir.path);
aDir.remove(true);
return;
} catch (e) {
logTestInfo("non-fatal error removing directory. Exception: " + e);
}
let dirEntries = aDir.directoryEntries;
while (dirEntries.hasMoreElements()) {
let entry = dirEntries.getNext().QueryInterface(Ci.nsIFile);
if (entry.isDirectory()) {
removeDirRecursive(entry);
} else {
entry.permissions = PERMS_FILE;
try {
debugDump("attempting to remove file. Path: " + entry.path);
entry.remove(false);
} catch (e) {
logTestInfo("error removing file. Exception: " + e);
throw (e);
}
}
}
aDir.permissions = PERMS_DIRECTORY;
try {
debugDump("attempting to remove directory. Path: " + aDir.path);
aDir.remove(true);
} catch (e) {
logTestInfo("error removing directory. Exception: " + e);
throw (e);
}
}
/**
* Returns the directory for the currently running process. This is used to
* clean up after the tests and to locate the active-update.xml and updates.xml
* files.
*
* @return nsIFile for the current process directory.
*/
function getCurrentProcessDir() {
return Services.dirsvc.get(NS_XPCOM_CURRENT_PROCESS_DIR, Ci.nsIFile);
}
/**
* Gets the application base directory.
*
* @return nsIFile object for the application base directory.
*/
function getAppBaseDir() {
return Services.dirsvc.get(XRE_EXECUTABLE_FILE, Ci.nsIFile).parent;
}
/**
* Returns the Gecko Runtime Engine directory where files other than executable
* binaries are located. On Mac OS X this will be <bundle>/Contents/Resources/
* and the installation directory on all other platforms.
*
* @return nsIFile for the Gecko Runtime Engine directory.
*/
function getGREDir() {
return Services.dirsvc.get(NS_GRE_DIR, Ci.nsIFile);
}
/**
* Returns the Gecko Runtime Engine Binary directory where the executable
* binaries are located such as the updater binary (Windows and Linux) or
* updater package (Mac OS X). On Mac OS X this will be
* <bundle>/Contents/MacOS/ and the installation directory on all other
* platforms.
*
* @return nsIFile for the Gecko Runtime Engine Binary directory.
*/
function getGREBinDir() {
return Services.dirsvc.get(NS_GRE_BIN_DIR, Ci.nsIFile);
}
/**
* Logs TEST-INFO messages.
*
* @param aText
* The text to log.
* @param aCaller (optional)
* An optional Components.stack.caller. If not specified
* Components.stack.caller will be used.
*/
function logTestInfo(aText, aCaller) {
let caller = aCaller ? aCaller : Components.stack.caller;
let now = new Date();
let hh = now.getHours();
let mm = now.getMinutes();
let ss = now.getSeconds();
let ms = now.getMilliseconds();
let time = (hh < 10 ? "0" + hh : hh) + ":" +
(mm < 10 ? "0" + mm : mm) + ":" +
(ss < 10 ? "0" + ss : ss) + ":";
if (ms < 10) {
time += "00";
} else if (ms < 100) {
time += "0";
}
time += ms;
let msg = time + " | TEST-INFO | " + caller.filename + " | [" + caller.name +
" : " + caller.lineNumber + "] " + aText;
LOG_FUNCTION(msg);
}
/**
* Logs TEST-INFO messages when DEBUG_AUS_TEST evaluates to true.
*
* @param aText
* The text to log.
* @param aCaller (optional)
* An optional Components.stack.caller. If not specified
* Components.stack.caller will be used.
*/
function debugDump(aText, aCaller) {
if (DEBUG_AUS_TEST) {
let caller = aCaller ? aCaller : Components.stack.caller;
logTestInfo(aText, caller);
}
}

View file

@ -1,364 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
/**
* Helper functions for creating xml strings used by application update tests.
*
* !IMPORTANT - This file contains everything needed (along with dependencies)
* by the updates.sjs file used by the mochitest-chrome tests. Since xpcshell
* used by the http server is launched with -v 170 this file must not use
* features greater than JavaScript 1.7.
*/
/* eslint-disable no-undef */
const FILE_SIMPLE_MAR = "simple.mar";
const SIZE_SIMPLE_MAR = "1031";
const MD5_HASH_SIMPLE_MAR = "1f8c038577bb6845d94ccec4999113ee";
const SHA1_HASH_SIMPLE_MAR = "5d49a672c87f10f31d7e326349564a11272a028b";
const SHA256_HASH_SIMPLE_MAR = "1aabbed5b1dd6e16e139afc5b43d479e254e0c26" +
"3c8fb9249c0a1bb93071c5fb";
const SHA384_HASH_SIMPLE_MAR = "26615014ea034af32ef5651492d5f493f5a7a1a48522e" +
"d24c366442a5ec21d5ef02e23fb58d79729b8ca2f9541" +
"99dd53";
const SHA512_HASH_SIMPLE_MAR = "922e5ae22081795f6e8d65a3c508715c9a314054179a8" +
"bbfe5f50dc23919ad89888291bc0a07586ab17dd0304a" +
"b5347473601127571c66f61f5080348e05c36b";
const STATE_NONE = "null";
const STATE_DOWNLOADING = "downloading";
const STATE_PENDING = "pending";
const STATE_PENDING_SVC = "pending-service";
const STATE_APPLYING = "applying";
const STATE_APPLIED = "applied";
const STATE_APPLIED_SVC = "applied-service";
const STATE_SUCCEEDED = "succeeded";
const STATE_DOWNLOAD_FAILED = "download-failed";
const STATE_FAILED = "failed";
const LOADSOURCE_ERROR_WRONG_SIZE = 2;
const CRC_ERROR = 4;
const READ_ERROR = 6;
const WRITE_ERROR = 7;
const MAR_CHANNEL_MISMATCH_ERROR = 22;
const VERSION_DOWNGRADE_ERROR = 23;
const SERVICE_COULD_NOT_COPY_UPDATER = 49;
const SERVICE_INVALID_APPLYTO_DIR_STAGED_ERROR = 52;
const SERVICE_INVALID_APPLYTO_DIR_ERROR = 54;
const SERVICE_INVALID_INSTALL_DIR_PATH_ERROR = 55;
const SERVICE_INVALID_WORKING_DIR_PATH_ERROR = 56;
const INVALID_APPLYTO_DIR_STAGED_ERROR = 72;
const INVALID_APPLYTO_DIR_ERROR = 74;
const INVALID_INSTALL_DIR_PATH_ERROR = 75;
const INVALID_WORKING_DIR_PATH_ERROR = 76;
const INVALID_CALLBACK_PATH_ERROR = 77;
const INVALID_CALLBACK_DIR_ERROR = 78;
const STATE_FAILED_DELIMETER = ": ";
const STATE_FAILED_LOADSOURCE_ERROR_WRONG_SIZE =
STATE_FAILED + STATE_FAILED_DELIMETER + LOADSOURCE_ERROR_WRONG_SIZE;
const STATE_FAILED_CRC_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + CRC_ERROR;
const STATE_FAILED_READ_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + READ_ERROR;
const STATE_FAILED_WRITE_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + WRITE_ERROR;
const STATE_FAILED_MAR_CHANNEL_MISMATCH_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + MAR_CHANNEL_MISMATCH_ERROR;
const STATE_FAILED_VERSION_DOWNGRADE_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + VERSION_DOWNGRADE_ERROR;
const STATE_FAILED_SERVICE_COULD_NOT_COPY_UPDATER =
STATE_FAILED + STATE_FAILED_DELIMETER + SERVICE_COULD_NOT_COPY_UPDATER
const STATE_FAILED_SERVICE_INVALID_APPLYTO_DIR_STAGED_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + SERVICE_INVALID_APPLYTO_DIR_STAGED_ERROR;
const STATE_FAILED_SERVICE_INVALID_APPLYTO_DIR_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + SERVICE_INVALID_APPLYTO_DIR_ERROR;
const STATE_FAILED_SERVICE_INVALID_INSTALL_DIR_PATH_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + SERVICE_INVALID_INSTALL_DIR_PATH_ERROR;
const STATE_FAILED_SERVICE_INVALID_WORKING_DIR_PATH_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + SERVICE_INVALID_WORKING_DIR_PATH_ERROR;
const STATE_FAILED_INVALID_APPLYTO_DIR_STAGED_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + INVALID_APPLYTO_DIR_STAGED_ERROR;
const STATE_FAILED_INVALID_APPLYTO_DIR_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + INVALID_APPLYTO_DIR_ERROR;
const STATE_FAILED_INVALID_INSTALL_DIR_PATH_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + INVALID_INSTALL_DIR_PATH_ERROR;
const STATE_FAILED_INVALID_WORKING_DIR_PATH_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + INVALID_WORKING_DIR_PATH_ERROR;
const STATE_FAILED_INVALID_CALLBACK_PATH_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + INVALID_CALLBACK_PATH_ERROR;
const STATE_FAILED_INVALID_CALLBACK_DIR_ERROR =
STATE_FAILED + STATE_FAILED_DELIMETER + INVALID_CALLBACK_DIR_ERROR;
/**
* Constructs a string representing a remote update xml file.
*
* @param aUpdates
* The string representing the update elements.
* @return The string representing a remote update xml file.
*/
function getRemoteUpdatesXMLString(aUpdates) {
return "<?xml version=\"1.0\"?>\n" +
"<updates>\n" +
aUpdates +
"</updates>\n";
}
/**
* Constructs a string representing an update element for a remote update xml
* file. See getUpdateString for parameter information not provided below.
*
* @param aPatches
* String representing the application update patches.
* @return The string representing an update element for an update xml file.
*/
function getRemoteUpdateString(aPatches, aType, aName, aDisplayVersion,
aAppVersion, aBuildID, aDetailsURL, aShowPrompt,
aShowNeverForVersion, aPromptWaitTime,
aBackgroundInterval, aCustom1, aCustom2) {
return getUpdateString(aType, aName, aDisplayVersion, aAppVersion,
aBuildID, aDetailsURL, aShowPrompt,
aShowNeverForVersion, aPromptWaitTime,
aBackgroundInterval, aCustom1, aCustom2) + ">\n" +
aPatches +
" </update>\n";
}
/**
* Constructs a string representing a patch element for a remote update xml
* file. See getPatchString for parameter information not provided below.
*
* @return The string representing a patch element for a remote update xml file.
*/
function getRemotePatchString(aType, aURL, aHashFunction, aHashValue, aSize) {
return getPatchString(aType, aURL, aHashFunction, aHashValue, aSize) +
"/>\n";
}
/**
* Constructs a string representing a local update xml file.
*
* @param aUpdates
* The string representing the update elements.
* @return The string representing a local update xml file.
*/
function getLocalUpdatesXMLString(aUpdates) {
if (!aUpdates || aUpdates == "") {
return "<updates xmlns=\"http://www.mozilla.org/2005/app-update\"/>";
}
return ("<updates xmlns=\"http://www.mozilla.org/2005/app-update\">" +
aUpdates +
"</updates>").replace(/>\s+\n*</g, '><');
}
/**
* Constructs a string representing an update element for a local update xml
* file. See getUpdateString for parameter information not provided below.
*
* @param aPatches
* String representing the application update patches.
* @param aServiceURL (optional)
* The update's xml url.
* If not specified it will default to 'http://test_service/'.
* @param aIsCompleteUpdate (optional)
* The string 'true' if this update was a complete update or the string
* 'false' if this update was a partial update.
* If not specified it will default to 'true'.
* @param aChannel (optional)
* The update channel name.
* If not specified it will default to the default preference value of
* app.update.channel.
* @param aForegroundDownload (optional)
* The string 'true' if this update was manually downloaded or the
* string 'false' if this update was automatically downloaded.
* If not specified it will default to 'true'.
* @param aPreviousAppVersion (optional)
* The application version prior to applying the update.
* If not specified it will not be present.
* @return The string representing an update element for an update xml file.
*/
function getLocalUpdateString(aPatches, aType, aName, aDisplayVersion,
aAppVersion, aBuildID, aDetailsURL, aServiceURL,
aInstallDate, aStatusText, aIsCompleteUpdate,
aChannel, aForegroundDownload, aShowPrompt,
aShowNeverForVersion, aPromptWaitTime,
aBackgroundInterval, aPreviousAppVersion,
aCustom1, aCustom2) {
let serviceURL = aServiceURL ? aServiceURL : "http://test_service/";
let installDate = aInstallDate ? aInstallDate : "1238441400314";
let statusText = aStatusText ? aStatusText : "Install Pending";
let isCompleteUpdate =
typeof aIsCompleteUpdate == "string" ? aIsCompleteUpdate : "true";
let channel = aChannel ? aChannel
: gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_CHANNEL);
let foregroundDownload =
typeof aForegroundDownload == "string" ? aForegroundDownload : "true";
let previousAppVersion = aPreviousAppVersion ? "previousAppVersion=\"" +
aPreviousAppVersion + "\" "
: "";
return getUpdateString(aType, aName, aDisplayVersion, aAppVersion, aBuildID,
aDetailsURL, aShowPrompt, aShowNeverForVersion,
aPromptWaitTime, aBackgroundInterval, aCustom1, aCustom2) +
" " +
previousAppVersion +
"serviceURL=\"" + serviceURL + "\" " +
"installDate=\"" + installDate + "\" " +
"statusText=\"" + statusText + "\" " +
"isCompleteUpdate=\"" + isCompleteUpdate + "\" " +
"channel=\"" + channel + "\" " +
"foregroundDownload=\"" + foregroundDownload + "\">" +
aPatches +
" </update>";
}
/**
* Constructs a string representing a patch element for a local update xml file.
* See getPatchString for parameter information not provided below.
*
* @param aSelected (optional)
* Whether this patch is selected represented or not. The string 'true'
* denotes selected and the string 'false' denotes not selected.
* If not specified it will default to the string 'true'.
* @param aState (optional)
* The patch's state.
* If not specified it will default to STATE_SUCCEEDED.
* @return The string representing a patch element for a local update xml file.
*/
function getLocalPatchString(aType, aURL, aHashFunction, aHashValue, aSize,
aSelected, aState) {
let selected = typeof aSelected == "string" ? aSelected : "true";
let state = aState ? aState : STATE_SUCCEEDED;
return getPatchString(aType, aURL, aHashFunction, aHashValue, aSize) + " " +
"selected=\"" + selected + "\" " +
"state=\"" + state + "\"/>\n";
}
/**
* Constructs a string representing an update element for a remote update xml
* file.
*
* @param aType (optional)
* The update's type which should be major or minor. If not specified it
* will default to 'major'.
* @param aName (optional)
* The update's name.
* If not specified it will default to 'App Update Test'.
* @param aDisplayVersion (optional)
* The update's display version.
* If not specified it will default to 'version #' where # is the value
* of DEFAULT_UPDATE_VERSION.
* @param aAppVersion (optional)
* The update's application version.
* If not specified it will default to the value of
* DEFAULT_UPDATE_VERSION.
* @param aBuildID (optional)
* The update's build id.
* If not specified it will default to '20080811053724'.
* @param aDetailsURL (optional)
* The update's details url.
* If not specified it will default to 'http://test_details/' due to due
* to bug 470244.
* @param aShowPrompt (optional)
* Whether to show the prompt for the update when auto update is
* enabled.
* If not specified it will not be present and the update service will
* default to false.
* @param aShowNeverForVersion (optional)
* Whether to show the 'No Thanks' button in the update prompt.
* If not specified it will not be present and the update service will
* default to false.
* @param aPromptWaitTime (optional)
* Override for the app.update.promptWaitTime preference.
* @param aBackgroundInterval (optional)
* Override for the app.update.download.backgroundInterval preference.
* @param aCustom1 (optional)
* A custom attribute name and attribute value to add to the xml.
* Example: custom1_attribute="custom1 value"
* If not specified it will not be present.
* @param aCustom2 (optional)
* A custom attribute name and attribute value to add to the xml.
* Example: custom2_attribute="custom2 value"
* If not specified it will not be present.
* @return The string representing an update element for an update xml file.
*/
function getUpdateString(aType, aName, aDisplayVersion, aAppVersion, aBuildID,
aDetailsURL, aShowPrompt, aShowNeverForVersion,
aPromptWaitTime, aBackgroundInterval, aCustom1,
aCustom2) {
let type = aType ? aType : "major";
let name = aName ? aName : "App Update Test";
let displayVersion = aDisplayVersion ? "displayVersion=\"" +
aDisplayVersion + "\" "
: "";
let appVersion = "appVersion=\"" +
(aAppVersion ? aAppVersion : DEFAULT_UPDATE_VERSION) +
"\" ";
let buildID = aBuildID ? aBuildID : "20080811053724";
// XXXrstrong - not specifying a detailsURL will cause a leak due to bug 470244
// let detailsURL = aDetailsURL ? "detailsURL=\"" + aDetailsURL + "\" " : "";
let detailsURL = "detailsURL=\"" +
(aDetailsURL ? aDetailsURL
: "http://test_details/") + "\" ";
let showPrompt = aShowPrompt ? "showPrompt=\"" + aShowPrompt + "\" " : "";
let showNeverForVersion = aShowNeverForVersion ? "showNeverForVersion=\"" +
aShowNeverForVersion + "\" "
: "";
let promptWaitTime = aPromptWaitTime ? "promptWaitTime=\"" + aPromptWaitTime +
"\" "
: "";
let backgroundInterval = aBackgroundInterval ? "backgroundInterval=\"" +
aBackgroundInterval + "\" "
: "";
let custom1 = aCustom1 ? aCustom1 + " " : "";
let custom2 = aCustom2 ? aCustom2 + " " : "";
return " <update type=\"" + type + "\" " +
"name=\"" + name + "\" " +
displayVersion +
appVersion +
detailsURL +
showPrompt +
showNeverForVersion +
promptWaitTime +
backgroundInterval +
custom1 +
custom2 +
"buildID=\"" + buildID + "\"";
}
/**
* Constructs a string representing a patch element for an update xml file.
*
* @param aType (optional)
* The patch's type which should be complete or partial.
* If not specified it will default to 'complete'.
* @param aURL (optional)
* The patch's url to the mar file.
* If not specified it will default to the value of:
* gURLData + FILE_SIMPLE_MAR
* @param aHashFunction (optional)
* The patch's hash function used to verify the mar file.
* If not specified it will default to 'MD5'.
* @param aHashValue (optional)
* The patch's hash value used to verify the mar file.
* If not specified it will default to the value of MD5_HASH_SIMPLE_MAR
* which is the MD5 hash value for the file specified by FILE_SIMPLE_MAR.
* @param aSize (optional)
* The patch's file size for the mar file.
* If not specified it will default to the file size for FILE_SIMPLE_MAR
* specified by SIZE_SIMPLE_MAR.
* @return The string representing a patch element for an update xml file.
*/
function getPatchString(aType, aURL, aHashFunction, aHashValue, aSize) {
let type = aType ? aType : "complete";
let url = aURL ? aURL : gURLData + FILE_SIMPLE_MAR;
let hashFunction = aHashFunction ? aHashFunction : "MD5";
let hashValue = aHashValue ? aHashValue : MD5_HASH_SIMPLE_MAR;
let size = aSize ? aSize : SIZE_SIMPLE_MAR;
return " <patch type=\"" + type + "\" " +
"URL=\"" + url + "\" " +
"hashFunction=\"" + hashFunction + "\" " +
"hashValue=\"" + hashValue + "\" " +
"size=\"" + size + "\"";
}

View file

@ -1,53 +0,0 @@
/* 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/. */
/* Preprocessed constants used by xpcshell tests */
const INSTALL_LOCALE = "@AB_CD@";
const MOZ_APP_NAME = "@MOZ_APP_NAME@";
const BIN_SUFFIX = "@BIN_SUFFIX@";
// MOZ_APP_VENDOR is optional.
#ifdef MOZ_APP_VENDOR
const MOZ_APP_VENDOR = "@MOZ_APP_VENDOR@";
#else
const MOZ_APP_VENDOR = "";
#endif
// MOZ_APP_BASENAME is not optional for tests.
const MOZ_APP_BASENAME = "@MOZ_APP_BASENAME@";
const APP_BIN_SUFFIX = "@BIN_SUFFIX@";
const APP_INFO_NAME = "XPCShell";
const APP_INFO_VENDOR = "Mozilla";
#ifdef XP_WIN
const IS_WIN = true;
#else
const IS_WIN = false;
#endif
#ifdef XP_MACOSX
const IS_MACOSX = true;
#else
const IS_MACOSX = false;
#endif
#ifdef XP_UNIX
const IS_UNIX = true;
#else
const IS_UNIX = false;
#endif
#ifdef MOZ_VERIFY_MAR_SIGNATURE
const MOZ_VERIFY_MAR_SIGNATURE = true;
#else
const MOZ_VERIFY_MAR_SIGNATURE = false;
#endif
#ifdef DISABLE_UPDATER_AUTHENTICODE_CHECK
const IS_AUTHENTICODE_CHECK_ENABLED = false;
#else
const IS_AUTHENTICODE_CHECK_ENABLED = true;
#endif

File diff suppressed because it is too large Load diff

View file

@ -1,95 +0,0 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
HAS_MISC_RULE = True
FINAL_TARGET = '_tests/xpcshell/toolkit/mozapps/update/tests/data'
MOCHITEST_CHROME_MANIFESTS += ['chrome/chrome.ini']
XPCSHELL_TESTS_MANIFESTS += [
'unit_aus_update/xpcshell.ini',
'unit_base_updater/xpcshell.ini'
]
SimplePrograms([
'TestAUSHelper',
'TestAUSReadStrings',
])
LOCAL_INCLUDES += [
'/toolkit/mozapps/update',
'/toolkit/mozapps/update/common',
]
if CONFIG['OS_ARCH'] == 'WINNT':
USE_LIBS += [
'updatecommon-standalone',
]
OS_LIBS += [
'shlwapi',
]
else:
USE_LIBS += [
'updatecommon',
]
for var in ('MOZ_APP_NAME', 'MOZ_APP_BASENAME', 'MOZ_APP_DISPLAYNAME',
'MOZ_APP_VENDOR', 'BIN_SUFFIX', 'MOZ_DEBUG'):
DEFINES[var] = CONFIG[var]
DEFINES['NS_NO_XPCOM'] = True
# For debugging purposes only
#DEFINES['DISABLE_UPDATER_AUTHENTICODE_CHECK'] = True
if CONFIG['OS_ARCH'] == 'WINNT':
DEFINES['UNICODE'] = True
DEFINES['_UNICODE'] = True
USE_STATIC_LIBS = True
if CONFIG['GNU_CC']:
WIN32_EXE_LDFLAGS += ['-municode']
TEST_HARNESS_FILES.testing.mochitest.chrome.toolkit.mozapps.update.tests.data += [
'data/shared.js',
'data/sharedUpdateXML.js',
'data/simple.mar',
]
FINAL_TARGET_FILES += [
'data/complete.exe',
'data/complete.mar',
'data/complete.png',
'data/complete_log_success_mac',
'data/complete_log_success_win',
'data/complete_mac.mar',
'data/complete_precomplete',
'data/complete_precomplete_mac',
'data/complete_removed-files',
'data/complete_removed-files_mac',
'data/complete_update_manifest',
'data/old_version.mar',
'data/partial.exe',
'data/partial.mar',
'data/partial.png',
'data/partial_log_failure_mac',
'data/partial_log_failure_win',
'data/partial_log_success_mac',
'data/partial_log_success_win',
'data/partial_mac.mar',
'data/partial_precomplete',
'data/partial_precomplete_mac',
'data/partial_removed-files',
'data/partial_removed-files_mac',
'data/partial_update_manifest',
'data/replace_log_success',
'data/shared.js',
'data/sharedUpdateXML.js',
'data/simple.mar',
'data/wrong_product_channel.mar',
'data/xpcshellUtilsAUS.js',
]

Some files were not shown because too many files have changed in this diff Show more