diff --git a/browser/base/content/browser-fullZoom.js b/browser/base/content/browser-fullZoom.js index 0a6470d8449..24ff8df73ff 100644 --- a/browser/base/content/browser-fullZoom.js +++ b/browser/base/content/browser-fullZoom.js @@ -256,10 +256,10 @@ var FullZoom = { var self = this; Services.contentPrefs.getPref(aURI, this.name, function (aResult) { // Check that we're still where we expect to be in case this took a while. - let isSaneURI = (aBrowser && aBrowser.currentURI) ? - aURI.equals(aBrowser.currentURI) : false; - if (!aBrowser || isSaneURI) - self._applyPrefToSetting(aResult, aBrowser); + let browser = aBrowser || gBrowser.selectedBrowser; + if (aURI.equals(browser.currentURI)) { + self._applyPrefToSetting(aResult, browser); + } }); }, diff --git a/browser/base/content/test/Makefile.in b/browser/base/content/test/Makefile.in index f54073aa090..4a809bab8bf 100644 --- a/browser/base/content/test/Makefile.in +++ b/browser/base/content/test/Makefile.in @@ -138,6 +138,7 @@ _BROWSER_FILES = \ browser_bug555224.js \ browser_bug555767.js \ browser_bug556061.js \ + browser_bug559991.js \ browser_bug561623.js \ browser_bug562649.js \ browser_bug563588.js \ diff --git a/browser/base/content/test/browser_bug559991.js b/browser/base/content/test/browser_bug559991.js new file mode 100644 index 00000000000..ce8054d475e --- /dev/null +++ b/browser/base/content/test/browser_bug559991.js @@ -0,0 +1,64 @@ +function test() { + + // ---------- + // Test setup + + waitForExplicitFinish(); + + let oldOLC = FullZoom.onLocationChange; + FullZoom.onLocationChange = function(aURI, aIsTabSwitch, aBrowser) { + // Ignore calls that are not about tab switching on this test + if (aIsTabSwitch) + oldOLC.call(FullZoom, aURI, aIsTabSwitch, aBrowser); + }; + + gPrefService.setBoolPref("browser.zoom.updateBackgroundTabs", true); + gPrefService.setBoolPref("browser.zoom.siteSpecific", true); + + let oldAPTS = FullZoom._applyPrefToSetting; + let uri = "http://example.org/browser/browser/base/content/test/dummy_page.html"; + + // ------------------------------------------------------ + // Test 1 - Zoom should not be called if URIs don't match + FullZoom._applyPrefToSetting = function() { + ok(false, "This should not be called"); + }; + FullZoom.onLocationChange(makeURI(uri), true); + + let tab = gBrowser.addTab(); + tab.linkedBrowser.addEventListener("load", function(event) { + tab.linkedBrowser.removeEventListener("load", arguments.callee, true); + + // ------------------------------------------------------------------- + // Test 2 - Trigger a tab switch that should now update the zoom level + FullZoom._applyPrefToSetting = function() { + ok(true, "applyPrefToSetting was called"); + endTest(); + } + gBrowser.selectedTab = tab; + + }, true); + tab.linkedBrowser.loadURI(uri); + + // ------------- + // Test clean-up + function endTest() { + gBrowser.removeTab(tab); + FullZoom._applyPrefToSetting = oldAPTS; + FullZoom.onLocationChange = oldOLC; + + oldAPTS = null; + oldOLC = null; + tab = null; + + if (gPrefService.prefHasUserValue("browser.zoom.updateBackgroundTabs")) + gPrefService.clearUserPref("browser.zoom.updateBackgroundTabs"); + + if (gPrefService.prefHasUserValue("browser.zoom.siteSpecific")) + gPrefService.clearUserPref("browser.zoom.siteSpecific"); + + finish(); + } + +} +