1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
var updateService = Cc["@mozilla.org/updates/update-service;1"].getService(
Ci.nsIApplicationUpdateService
);
add_task(async function test_updates_post_policy() {
is(
Services.policies.isAllowed("appUpdate"),
false,
"appUpdate should be disabled by policy."
);
is(
updateService.canCheckForUpdates,
false,
"Should not be able to check for updates with DisableAppUpdate enabled."
);
});
add_task(async function test_update_preferences_ui() {
let tabmail = document.getElementById("tabmail");
let prefsTabMode = tabmail.tabModes.preferencesTab;
let prefsDocument = await new Promise(resolve => {
Services.obs.addObserver(function documentLoaded(subject) {
if (subject.URL == "about:preferences") {
Services.obs.removeObserver(documentLoaded, "chrome-document-loaded");
resolve(subject);
}
}, "chrome-document-loaded");
window.openPreferencesTab("paneGeneral", "updateApp");
});
await new Promise(resolve => setTimeout(resolve));
let setting = prefsDocument.getElementById("updateSettingsContainer");
is(
setting.hidden,
true,
"Update choices should be disabled when app update is locked by policy"
);
tabmail.closeTab(prefsTabMode.tabs[0]);
});
add_task(async function test_update_about_ui() {
let aboutDialog = await waitForAboutDialog();
let panelId = "policyDisabled";
await BrowserTestUtils.waitForCondition(
() =>
aboutDialog.gAppUpdater.selectedPanel &&
aboutDialog.gAppUpdater.selectedPanel.id == panelId,
'Waiting for expected panel ID - expected "' + panelId + '"'
);
is(
aboutDialog.gAppUpdater.selectedPanel.id,
panelId,
"The About Dialog panel Id should equal " + panelId
);
// Make sure that we still remain on the "disabled by policy" panel after
// `AppUpdater.stop()` is called.
aboutDialog.gAppUpdater._appUpdater.stop();
is(
aboutDialog.gAppUpdater.selectedPanel.id,
panelId,
"The About Dialog panel Id should still equal " + panelId
);
aboutDialog.close();
});
/**
* Waits for the About Dialog to load.
*
* @returns A promise that returns the domWindow for the About Dialog and
* resolves when the About Dialog loads.
*/
function waitForAboutDialog() {
return new Promise(resolve => {
var listener = {
onOpenWindow: aAppWindow => {
Services.wm.removeListener(listener);
async function aboutDialogOnLoad() {
domwindow.removeEventListener("load", aboutDialogOnLoad, true);
let chromeURI = "chrome://messenger/content/aboutDialog.xhtml";
is(
domwindow.document.location.href,
chromeURI,
"About dialog appeared"
);
resolve(domwindow);
}
var domwindow = aAppWindow.docShell.domWindow;
domwindow.addEventListener("load", aboutDialogOnLoad, true);
},
onCloseWindow: aAppWindow => {},
};
Services.wm.addListener(listener);
openAboutDialog();
});
}
|