toolkit-ui-lockdown.patch
changeset 24 ca988be0905b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit-ui-lockdown.patch	Sat Dec 19 21:51:16 2009 +0100
@@ -0,0 +1,119 @@
+From: various contributors
+Subject: toolkit ui lockdown hooks
+
+diff --git a/toolkit/components/passwordmgr/content/passwordManager.js b/toolkit/components/passwordmgr/content/passwordManager.js
+--- a/toolkit/components/passwordmgr/content/passwordManager.js
++++ b/toolkit/components/passwordmgr/content/passwordManager.js
+@@ -119,19 +119,28 @@ function LoadSignons() {
+   // SignonColumnSort) assumes we want to toggle the sort
+   // direction but here we don't so we have to trick it
+   lastSignonSortAscending = !lastSignonSortAscending;
+   SignonColumnSort(lastSignonSortColumn);
+ 
+   // disable "remove all signons" button if there are no signons
+   var element = document.getElementById("removeAllSignons");
+   var toggle = document.getElementById("togglePasswords");
++  try {
++    var viewLocked = Components.classes["@mozilla.org/preferences-service;1"]
++      .getService(Components.interfaces.nsIPrefBranch)
++      .getBoolPref("config.lockdown.showsavedpasswords");
++  } catch (e) {
++    var viewLocked = false;
++  }
+   if (signons.length == 0 || gSelectUserInUse) {
+     element.setAttribute("disabled","true");
+     toggle.setAttribute("disabled","true");
++  } else if (viewLocked) {
++    toggle.setAttribute("disabled","true");
+   } else {
+     element.removeAttribute("disabled");
+     toggle.removeAttribute("disabled");
+   }
+ 
+   return true;
+ }
+ 
+@@ -166,16 +175,28 @@ function DeleteAllSignons() {
+   var syncNeeded = (signonsTreeView._filterSet.length != 0);
+   DeleteAllFromTree(signonsTree, signonsTreeView,
+                         signonsTreeView._filterSet.length ? signonsTreeView._filterSet : signons,
+                         deletedSignons, "removeSignon", "removeAllSignons");
+   FinalizeSignonDeletions(syncNeeded);
+ }
+ 
+ function TogglePasswordVisible() {
++  try {
++    var viewLocked = Components.classes["@mozilla.org/preferences-service;1"]
++      .getService(Components.interfaces.nsIPrefBranch)
++      .getBoolPref("config.lockdown.showsavedpasswords");
++  } catch (e) {
++    var viewLocked = false;
++  }
++  // at that point if viewLocked is true, we shouldn't reach this code,
++  // but better be safe than sorry.
++  if (viewLocked) {
++    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();
+   }
+ 
+diff --git a/toolkit/components/printing/content/printdialog.js b/toolkit/components/printing/content/printdialog.js
+--- a/toolkit/components/printing/content/printdialog.js
++++ b/toolkit/components/printing/content/printdialog.js
+@@ -45,16 +45,17 @@ var printService       = null;
+ var gOriginalNumCopies = 1;
+ 
+ var paramBlock;
+ var gPrefs             = null;
+ var gPrintSettings     = null;
+ var gWebBrowserPrint   = null;
+ var gPrintSetInterface = Components.interfaces.nsIPrintSettings;
+ var doDebug            = false;
++var gPrefService       = null;
+ 
+ //---------------------------------------------------
+ function initDialog()
+ {
+   dialog = new Object;
+ 
+   dialog.propertiesButton = document.getElementById("properties");
+   dialog.descText         = document.getElementById("descText");
+@@ -82,21 +83,33 @@ function initDialog()
+ 
+   dialog.printButton     = document.documentElement.getButton("accept");
+ 
+   // <data> elements
+   dialog.printName       = document.getElementById("printButton");
+   dialog.fpDialog        = document.getElementById("fpDialog");
+ 
+   dialog.enabled         = false;
++
++  gPrefService = Components.classes["@mozilla.org/preferences-service;1"]
++      .getService(Components.interfaces.nsIPrefService).getBranch(null);
++  if (gPrefService.getBoolPref("config.lockdown.savepage")) {
++    dialog.fileCheck.setAttribute("disabled", "true");
++  }
++  if (gPrefService.getBoolPref("config.lockdown.printing")) {
++    dialog.printButton.setAttribute("disabled", "true");
++  }
+ }
+ 
+ //---------------------------------------------------
+ function checkInteger(element)
+ {
++  if (gPrefService.getBoolPref("config.lockdown.printing"))
++    return;
++
+   var value = element.value;
+   if (value && value.length > 0) {
+     value = value.replace(/[^0-9]/g,"");
+     if (!value) value = "";
+     element.value = value;
+   }
+   if (!value || value < 1 || value > 999)
+     dialog.printButton.setAttribute("disabled","true");