diff options
Diffstat (limited to 'browser/base/content/test/zoom/browser_background_zoom.js')
-rw-r--r-- | browser/base/content/test/zoom/browser_background_zoom.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/browser/base/content/test/zoom/browser_background_zoom.js b/browser/base/content/test/zoom/browser_background_zoom.js new file mode 100644 index 0000000000..3f30b1ab81 --- /dev/null +++ b/browser/base/content/test/zoom/browser_background_zoom.js @@ -0,0 +1,113 @@ +var gTestPage = + "http://example.org/browser/browser/base/content/test/zoom/zoom_test.html"; +var gTestImage = + "http://example.org/browser/browser/base/content/test/general/moz.png"; +var gTab1, gTab2, gTab3; +var gLevel; + +function test() { + waitForExplicitFinish(); + registerCleanupFunction(async () => { + await new Promise(resolve => { + ContentPrefService2.removeByName(FullZoom.name, Cu.createLoadContext(), { + handleCompletion: resolve, + }); + }); + }); + + (async function() { + gTab1 = BrowserTestUtils.addTab(gBrowser, gTestPage); + gTab2 = BrowserTestUtils.addTab(gBrowser); + gTab3 = BrowserTestUtils.addTab(gBrowser); + + await FullZoomHelper.selectTabAndWaitForLocationChange(gTab1); + await FullZoomHelper.load(gTab1, gTestPage); + await FullZoomHelper.load(gTab2, gTestPage); + })().then(secondPageLoaded, FullZoomHelper.failAndContinue(finish)); +} + +function secondPageLoaded() { + (async function() { + FullZoomHelper.zoomTest(gTab1, 1, "Initial zoom of tab 1 should be 1"); + FullZoomHelper.zoomTest(gTab2, 1, "Initial zoom of tab 2 should be 1"); + FullZoomHelper.zoomTest(gTab3, 1, "Initial zoom of tab 3 should be 1"); + + // Now have three tabs, two with the test page, one blank. Tab 1 is selected + // Zoom tab 1 + FullZoom.enlarge(); + gLevel = ZoomManager.getZoomForBrowser(gBrowser.getBrowserForTab(gTab1)); + + ok(gLevel > 1, "New zoom for tab 1 should be greater than 1"); + FullZoomHelper.zoomTest(gTab2, 1, "Zooming tab 1 should not affect tab 2"); + FullZoomHelper.zoomTest(gTab3, 1, "Zooming tab 1 should not affect tab 3"); + + await FullZoomHelper.load(gTab3, gTestPage); + })().then(thirdPageLoaded, FullZoomHelper.failAndContinue(finish)); +} + +function thirdPageLoaded() { + (async function() { + FullZoomHelper.zoomTest(gTab1, gLevel, "Tab 1 should still be zoomed"); + FullZoomHelper.zoomTest(gTab2, 1, "Tab 2 should still not be affected"); + FullZoomHelper.zoomTest( + gTab3, + gLevel, + "Tab 3 should have zoomed as it was loading in the background" + ); + + // Switching to tab 2 should update its zoom setting. + await FullZoomHelper.selectTabAndWaitForLocationChange(gTab2); + FullZoomHelper.zoomTest(gTab1, gLevel, "Tab 1 should still be zoomed"); + FullZoomHelper.zoomTest(gTab2, gLevel, "Tab 2 should be zoomed now"); + FullZoomHelper.zoomTest(gTab3, gLevel, "Tab 3 should still be zoomed"); + + await FullZoomHelper.load(gTab1, gTestImage); + })().then(imageLoaded, FullZoomHelper.failAndContinue(finish)); +} + +function imageLoaded() { + (async function() { + FullZoomHelper.zoomTest( + gTab1, + 1, + "Zoom should be 1 when image was loaded in the background" + ); + await FullZoomHelper.selectTabAndWaitForLocationChange(gTab1); + FullZoomHelper.zoomTest( + gTab1, + 1, + "Zoom should still be 1 when tab with image is selected" + ); + })().then(imageZoomSwitch, FullZoomHelper.failAndContinue(finish)); +} + +function imageZoomSwitch() { + (async function() { + await FullZoomHelper.navigate(FullZoomHelper.BACK); + await FullZoomHelper.navigate(FullZoomHelper.FORWARD); + FullZoomHelper.zoomTest( + gTab1, + 1, + "Tab 1 should not be zoomed when an image loads" + ); + + await FullZoomHelper.selectTabAndWaitForLocationChange(gTab2); + FullZoomHelper.zoomTest( + gTab1, + 1, + "Tab 1 should still not be zoomed when deselected" + ); + })().then(finishTest, FullZoomHelper.failAndContinue(finish)); +} + +var finishTestStarted = false; +function finishTest() { + (async function() { + ok(!finishTestStarted, "finishTest called more than once"); + finishTestStarted = true; + await FullZoomHelper.selectTabAndWaitForLocationChange(gTab1); + await FullZoomHelper.removeTabAndWaitForLocationChange(gTab1); + await FullZoomHelper.removeTabAndWaitForLocationChange(gTab2); + await FullZoomHelper.removeTabAndWaitForLocationChange(gTab3); + })().then(finish, FullZoomHelper.failAndContinue(finish)); +} |