From 7d1a8d37e84e27f0d42fd89b58cf6ef8375cca10 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Tue, 12 May 2009 22:23:36 +0430 Subject: [PATCH] Bug 491898 - Random Test Failure (browser_passwordmgrdlg.js); r=dolske --- .../passwordmgr/content/passwordManager.js | 19 ++++++++++++------- .../test/browser/browser_passwordmgrdlg.js | 18 +++++++++++++----- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/toolkit/components/passwordmgr/content/passwordManager.js b/toolkit/components/passwordmgr/content/passwordManager.js index 692f89012405..b103aa79a3bc 100644 --- a/toolkit/components/passwordmgr/content/passwordManager.js +++ b/toolkit/components/passwordmgr/content/passwordManager.js @@ -167,14 +167,19 @@ function DeleteAllSignons() { } function TogglePasswordVisible() { - if (!showingPasswords && !ConfirmShowPasswords()) - return; + if (showingPasswords || ConfirmShowPasswords()) { + showingPasswords = !showingPasswords; + document.getElementById("togglePasswords").label = kSignonBundle.getString(showingPasswords ? "hidePasswords" : "showPasswords"); + document.getElementById("togglePasswords").accessKey = kSignonBundle.getString(showingPasswords ? "hidePasswordsAccessKey" : "showPasswordsAccessKey"); + document.getElementById("passwordCol").hidden = !showingPasswords; + _filterPasswords(); + } - showingPasswords = !showingPasswords; - document.getElementById("togglePasswords").label = kSignonBundle.getString(showingPasswords ? "hidePasswords" : "showPasswords"); - document.getElementById("togglePasswords").accessKey = kSignonBundle.getString(showingPasswords ? "hidePasswordsAccessKey" : "showPasswordsAccessKey"); - document.getElementById("passwordCol").hidden = !showingPasswords; - _filterPasswords(); + // Notify observers that the password visibility toggling is + // completed. (Mostly useful for tests) + Components.classes["@mozilla.org/observer-service;1"] + .getService(Components.interfaces.nsIObserverService) + .notifyObservers(null, "passwordmgr-password-toggle-complete", null); } function AskUserShowPasswords() { diff --git a/toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js b/toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js index 105190101ca0..f346e24f65bc 100644 --- a/toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js +++ b/toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js @@ -139,10 +139,9 @@ function test() { if (showMode) { let obs = { observe: function(aSubject, aTopic, aData) { - if (aTopic == "domwindowclosed") { + if (aTopic == "domwindowclosed") ww.unregisterNotification(this); - setTimeout(func, 0); - } else if (aTopic == "domwindowopened") { + else if (aTopic == "domwindowopened") { let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); win.addEventListener("load", function() { win.removeEventListener("load", arguments.callee, true); @@ -156,9 +155,18 @@ function test() { ww.registerNotification(obs); } + let obsSvc = Cc["@mozilla.org/observer-service;1"]. + getService(Ci.nsIObserverService); + obsSvc.addObserver({ + observe: function(aSubject, aTopic, aData) { + if (aTopic == "passwordmgr-password-toggle-complete") { + obsSvc.removeObserver(this, "passwordmgr-password-toggle-complete", false); + func(); + } + } + }, "passwordmgr-password-toggle-complete", false); + EventUtils.synthesizeMouse(toggleButton, 1, 1, {}, win); - if (!showMode) - func(); } function runTests(mode, endFunction) {