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
|
"use strict";
const ZOOM_CHANGE_TOPIC = "browser-fullZoom:location-change";
/**
* Helper to check the zoom level of the preloaded browser
*/
async function checkPreloadedZoom(level, message) {
// Clear up any previous preloaded to test a fresh version
NewTabPagePreloading.removePreloadedBrowser(window);
NewTabPagePreloading.maybeCreatePreloadedBrowser(window);
// Wait for zoom handling of preloaded
const browser = gBrowser.preloadedBrowser;
await new Promise(resolve =>
Services.obs.addObserver(function obs(subject) {
if (subject === browser) {
Services.obs.removeObserver(obs, ZOOM_CHANGE_TOPIC);
resolve();
}
}, ZOOM_CHANGE_TOPIC)
);
is(browser.fullZoom.toFixed(2), level, message);
// Clean up for other tests
NewTabPagePreloading.removePreloadedBrowser(window);
}
add_task(async function test_default_zoom() {
await checkPreloadedZoom("1.00", "default preloaded zoom is 1");
});
/**
* Helper to open about:newtab and zoom then check matching preloaded zoom
*/
async function zoomNewTab(changeZoom, message) {
const tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
"about:newtab"
);
changeZoom();
const level = tab.linkedBrowser.fullZoom.toFixed(2);
BrowserTestUtils.removeTab(tab);
// Wait for the the update of the full-zoom content pref value, that happens
// asynchronously after changing the zoom level.
let cps2 = Cc["@mozilla.org/content-pref/service;1"].getService(
Ci.nsIContentPrefService2
);
await BrowserTestUtils.waitForCondition(() => {
return new Promise(resolve => {
cps2.getByDomainAndName(
"about:newtab",
"browser.content.full-zoom",
null,
{
handleResult(pref) {
resolve(level == pref.value);
},
handleCompletion() {
console.log("handleCompletion");
},
}
);
});
});
await checkPreloadedZoom(level, `${message}: ${level}`);
}
add_task(async function test_preloaded_zoom_out() {
await zoomNewTab(() => FullZoom.reduce(), "zoomed out applied to preloaded");
});
add_task(async function test_preloaded_zoom_in() {
await zoomNewTab(() => {
FullZoom.enlarge();
FullZoom.enlarge();
}, "zoomed in applied to preloaded");
});
add_task(async function test_preloaded_zoom_default() {
await zoomNewTab(
() => FullZoom.reduce(),
"zoomed back to default applied to preloaded"
);
});
|