"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" ); });