summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/update/tests/unit_service_updater/marAppInUseBackgroundTaskFailureSvc_win.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/update/tests/unit_service_updater/marAppInUseBackgroundTaskFailureSvc_win.js')
-rw-r--r--toolkit/mozapps/update/tests/unit_service_updater/marAppInUseBackgroundTaskFailureSvc_win.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/toolkit/mozapps/update/tests/unit_service_updater/marAppInUseBackgroundTaskFailureSvc_win.js b/toolkit/mozapps/update/tests/unit_service_updater/marAppInUseBackgroundTaskFailureSvc_win.js
new file mode 100644
index 0000000000..bcb24bee94
--- /dev/null
+++ b/toolkit/mozapps/update/tests/unit_service_updater/marAppInUseBackgroundTaskFailureSvc_win.js
@@ -0,0 +1,51 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+/* Fail to apply a complete MAR when the application is in use and the callback is a background task. */
+
+async function run_test() {
+ if (!setupTestCommon()) {
+ return;
+ }
+
+ gTestFiles = gTestFilesCompleteSuccess;
+ gTestDirs = gTestDirsCompleteSuccess;
+ setTestFilesAndDirsForFailure();
+
+ // Add a dummy --backgroundtask arg; this will have no effect on the
+ // callback (TestAUSHelper) but will cause the updater to detect
+ // that this is a background task.
+ gCallbackArgs = gCallbackArgs.concat(["--backgroundtask", "not_found"]);
+
+ // Run the update with the helper file in use, expecting failure.
+ await setupUpdaterTest(FILE_COMPLETE_MAR, false);
+ await runHelperFileInUse(DIR_RESOURCES + gCallbackBinFile, false);
+ runUpdate(
+ STATE_FAILED_WRITE_ERROR_BACKGROUND_TASK_SHARING_VIOLATION,
+ false, // aSwitchApp
+ 1, // aExpectedExitValue
+ true // aCheckSvcLog
+ );
+ await waitForHelperExit();
+
+ standardInit();
+
+ checkPostUpdateRunningFile(false);
+ checkFilesAfterUpdateFailure(getApplyDirFile);
+ checkUpdateLogContains(ERR_BGTASK_EXCLUSIVE);
+
+ // Check that the update was reset to "pending".
+ await waitForUpdateXMLFiles(
+ true, // aActiveUpdateExists
+ false // aUpdatesExists
+ );
+ checkUpdateManager(
+ STATE_PENDING, // aStatusFileState
+ true, // aHasActiveUpdate
+ STATE_PENDING, // aUpdateStatusState
+ WRITE_ERROR_BACKGROUND_TASK_SHARING_VIOLATION,
+ 0 // aUpdateCount
+ );
+ checkCallbackLog();
+}