Bug 559991. Zoom flicker when switching quickly between tabs. r=gavin.sharp a=blocking-betaN

This commit is contained in:
Felipe Gomes 2010-09-02 18:50:32 -03:00
parent 1e48d1c5b6
commit 5de8c7aeb3
3 changed files with 69 additions and 4 deletions

View File

@ -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);
}
});
},

View File

@ -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 \

View File

@ -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();
}
}