diff options
Diffstat (limited to 'browser/base/content/test/tabs/browser_preloadedBrowser_zoom.js')
-rw-r--r-- | browser/base/content/test/tabs/browser_preloadedBrowser_zoom.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/browser/base/content/test/tabs/browser_preloadedBrowser_zoom.js b/browser/base/content/test/tabs/browser_preloadedBrowser_zoom.js new file mode 100644 index 0000000000..698cf82022 --- /dev/null +++ b/browser/base/content/test/tabs/browser_preloadedBrowser_zoom.js @@ -0,0 +1,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" + ); +}); |