Back out 01bc57172461:5bd9adbd3b15 (bug 843497) for xpcshell failures
authorPhil Ringnalda <philringnalda@gmail.com>
Fri, 21 Jun 2013 19:49:47 -0700
changeset 147559 089f6bad69de395faab906c2d612e88e811f3427
parent 147558 963013a5a11d6a7c180579ce96612eba1c3bc2de
child 147560 0fd721c4a35fcf1cae5dc57967b805d8e51984ea
push id2697
push userbbajaj@mozilla.com
push dateMon, 05 Aug 2013 18:49:53 +0000
treeherdermozilla-beta@dfec938c7b63 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs843497
milestone24.0a1
backs out01bc57172461b13e4a0ce1febd6eb1ec7dbaeddf
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Back out 01bc57172461:5bd9adbd3b15 (bug 843497) for xpcshell failures
browser/base/content/aboutDialog.js
browser/base/content/aboutDialog.xul
browser/locales/en-US/chrome/browser/aboutDialog.dtd
toolkit/locales/en-US/chrome/mozapps/update/updates.dtd
toolkit/mozapps/update/content/updates.js
toolkit/mozapps/update/content/updates.xul
toolkit/mozapps/update/nsIUpdateService.idl
toolkit/mozapps/update/nsUpdateService.js
toolkit/mozapps/update/nsUpdateTimerManager.js
toolkit/mozapps/update/test/chrome/Makefile.in
toolkit/mozapps/update/test/chrome/test_0161_check_unsupported.xul
toolkit/mozapps/update/test/chrome/test_0162_notify_unsupported.xul
toolkit/mozapps/update/test/chrome/update.sjs
toolkit/mozapps/update/test/chrome/utils.js
toolkit/mozapps/update/test/shared.js
toolkit/themes/linux/mozapps/update/updates.css
toolkit/themes/osx/mozapps/update/updates.css
toolkit/themes/windows/mozapps/update/updates.css
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -297,25 +297,16 @@ appUpdater.prototype =
       gAppUpdater.isChecking = false;
       gAppUpdater.update = gAppUpdater.aus.
                            selectUpdate(aUpdates, aUpdates.length);
       if (!gAppUpdater.update) {
         gAppUpdater.selectPanel("noUpdatesFound");
         return;
       }
 
-      if (gAppUpdater.update.unsupported) {
-        if (gAppUpdater.update.detailsURL) {
-          let unsupportedLink = document.getElementById("unsupportedLink");
-          unsupportedLink.href = gAppUpdater.update.detailsURL;
-        }
-        gAppUpdater.selectPanel("unsupportedSystem");
-        return;
-      }
-
       if (!gAppUpdater.aus.canApplyUpdates) {
         gAppUpdater.selectPanel("manualUpdate");
         return;
       }
 
       // Firefox no longer displays a license for updates and the licenseURL
       // check is just in case a distibution does.
       if (gAppUpdater.update.billboardURL || gAppUpdater.update.licenseURL) {
--- a/browser/base/content/aboutDialog.xul
+++ b/browser/base/content/aboutDialog.xul
@@ -77,19 +77,16 @@
                 <label>&update.noUpdatesFound;</label>
               </hbox>
               <hbox id="otherInstanceHandlingUpdates" align="center">
                 <label>&update.otherInstanceHandlingUpdates;</label>
               </hbox>
               <hbox id="manualUpdate" align="center">
                 <label>&update.manual.start;</label><label id="manualLink" class="text-link"/><label>&update.manual.end;</label>
               </hbox>
-              <hbox id="unsupportedSystem" align="center">
-                <label>&update.unsupported.start;</label><label id="unsupportedLink" class="text-link">&update.unsupported.linkText;</label><label>&update.unsupported.end;</label>
-              </hbox>
             </deck>
 #endif
           </vbox>
 
 #if MOZ_UPDATE_CHANNEL != release
 #ifdef MOZ_UPDATER
           <description class="text-blurb" id="currentChannelText">
             &channel.description.start;<label id="currentChannel"/>&channel.description.end;
--- a/browser/locales/en-US/chrome/browser/aboutDialog.dtd
+++ b/browser/locales/en-US/chrome/browser/aboutDialog.dtd
@@ -61,26 +61,16 @@
 
 <!-- LOCALIZATION NOTE (update.manual.start,update.manual.end): update.manual.start and update.manual.end
      all go into one line and have an anchor in between with text that is the same as the link to a site
      to download the latest version of Firefox (e.g. http://www.firefox.com). As this is all in one line,
      try to make the localized text short (see bug 596813 for screenshots). -->
 <!ENTITY update.manual.start        "Updates available at ">
 <!ENTITY update.manual.end          "">
 
-<!-- LOCALIZATION NOTE (update.unsupported.start,update.unsupported.linkText,update.unsupported.end):
-     update.unsupported.start, update.unsupported.linkText, and
-     update.unsupported.end all go into one line with linkText being wrapped in
-     an anchor that links to a site to provide additional information regarding
-     why the system is no longer supported. As this is all in one line, try to
-     make the localized text short (see bug 843497 for screenshots). -->
-<!ENTITY update.unsupported.start    "You can not perform further updates on this system. ">
-<!ENTITY update.unsupported.linkText "Learn more">
-<!ENTITY update.unsupported.end      "">
-
 <!-- LOCALIZATION NOTE (update.downloading.start,update.downloading.end): update.downloading.start and 
      update.downloading.end all go into one line, with the amount downloaded inserted in between. As this
      is all in one line, try to make the localized text short (see bug 596813 for screenshots). The — is
      the "em dash" (long dash).
      example: Downloading update — 111 KB of 13 MB -->
 <!ENTITY update.downloading.start   "Downloading update — ">
 <!ENTITY update.downloading.end     "">
 
--- a/toolkit/locales/en-US/chrome/mozapps/update/updates.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/update/updates.dtd
@@ -20,22 +20,16 @@
 <!ENTITY  manualUpdate.desc               "A recommended security and stability update is available, but you do
                                            not have the system permissions required to install it. Please contact your
                                            system administrator, or try again from an account that has permission to
                                            install software on this computer.">
 <!ENTITY  manualUpdate.space.desc         "A recommended security and stability update is available, but you do
                                            not have enough space to install it.">
 <!ENTITY  manualUpdateGetMsg.label        "You can always get the latest version of &brandShortName; at:">
 
-<!ENTITY  unsupported.title               "System Unsupported">
-<!ENTITY  unsupported.label               "Your &brandShortName; is out of date, but the latest version is not
-                                           supported on your system. Please upgrade your system, then try again.
-                                           You will not see this notice again, but you can">
-<!ENTITY  unsupportedLink.label           "learn more.">
-
 <!ENTITY  incompatibleCheck.title         "Checking Add-on Compatibility">
 <!ENTITY  incompatibleCheck.label         "Looking for newer versions of your add-ons…">
 
 <!ENTITY  clickHere.label                 "View more information about this update">
 
 <!ENTITY  evangelism.desc                 "It is strongly recommended that you apply this 
                                            update for &brandShortName; as soon as possible.">
 
--- a/toolkit/mozapps/update/content/updates.js
+++ b/toolkit/mozapps/update/content/updates.js
@@ -8,30 +8,29 @@ Components.utils.import("resource://gre/
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 // Firefox's macBrowserOverlay.xul includes scripts that define Cc, Ci, and Cr
 // so we have to use different names.
 const CoC = Components.classes;
 const CoI = Components.interfaces;
 const CoR = Components.results;
 
-const XMLNS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+const XMLNS_XUL               = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 
-const PREF_APP_UPDATE_BACKGROUNDERRORS    = "app.update.backgroundErrors";
-const PREF_APP_UPDATE_BILLBOARD_TEST_URL  = "app.update.billboard.test_url";
-const PREF_APP_UPDATE_CERT_ERRORS         = "app.update.cert.errors";
-const PREF_APP_UPDATE_ENABLED             = "app.update.enabled";
-const PREF_APP_UPDATE_LOG                 = "app.update.log";
-const PREF_APP_UPDATE_MANUAL_URL          = "app.update.url.manual";
-const PREF_APP_UPDATE_NEVER_BRANCH        = "app.update.never.";
-const PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED = "app.update.notifiedUnsupported";
-const PREF_APP_UPDATE_TEST_LOOP           = "app.update.test.loop";
-const PREF_PLUGINS_UPDATEURL              = "plugins.update.url";
+const PREF_APP_UPDATE_BACKGROUNDERRORS   = "app.update.backgroundErrors";
+const PREF_APP_UPDATE_BILLBOARD_TEST_URL = "app.update.billboard.test_url";
+const PREF_APP_UPDATE_CERT_ERRORS        = "app.update.cert.errors";
+const PREF_APP_UPDATE_ENABLED            = "app.update.enabled";
+const PREF_APP_UPDATE_LOG                = "app.update.log";
+const PREF_APP_UPDATE_MANUAL_URL         = "app.update.url.manual";
+const PREF_APP_UPDATE_NEVER_BRANCH       = "app.update.never.";
+const PREF_APP_UPDATE_TEST_LOOP          = "app.update.test.loop";
+const PREF_PLUGINS_UPDATEURL             = "plugins.update.url";
 
-const PREF_EM_HOTFIX_ID                   = "extensions.hotfix.id";
+const PREF_EM_HOTFIX_ID                  = "extensions.hotfix.id";
 
 const UPDATE_TEST_LOOP_INTERVAL     = 2000;
 
 const URI_UPDATES_PROPERTIES  = "chrome://mozapps/locale/update/updates.properties";
 
 const STATE_DOWNLOADING       = "downloading";
 const STATE_PENDING           = "pending";
 const STATE_PENDING_SVC       = "pending-service";
@@ -378,21 +377,16 @@ var gUpdates = {
         this.setUpdate(arg0);
         if (this.update.errorCode == CERT_ATTR_CHECK_FAILED_NO_UPDATE ||
             this.update.errorCode == CERT_ATTR_CHECK_FAILED_HAS_UPDATE ||
             this.update.errorCode == BACKGROUNDCHECK_MULTIPLE_FAILURES) {
           aCallback("errorextra");
           return;
         }
 
-        if (this.update.unsupported) {
-          aCallback("unsupported");
-          return;
-        }
-
         var p = this.update.selectedPatch;
         if (p) {
           var state = p.state;
           var patchFailed;
           try {
             patchFailed = this.update.getProperty("patchingFailed");
           }
           catch (e) {
@@ -595,21 +589,16 @@ var gCheckingPage = {
     // notifications will never happen.
     Services.prefs.deleteBranch(PREF_APP_UPDATE_NEVER_BRANCH);
 
     // The user will be notified if there is an error so clear the background
     // check error count.
     if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_BACKGROUNDERRORS))
       Services.prefs.clearUserPref(PREF_APP_UPDATE_BACKGROUNDERRORS);
 
-    // The preference will be set back to true if the system is still
-    // unsupported.
-    if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED))
-      Services.prefs.clearUserPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED);
-
     this._checker = CoC["@mozilla.org/updates/update-checker;1"].
                     createInstance(CoI.nsIUpdateChecker);
     this._checker.checkForUpdates(this.updateListener, true);
   },
 
   /**
    * The user has closed the window, either by pressing cancel or using a Window
    * Manager control, so stop checking for updates.
@@ -627,21 +616,16 @@ var gCheckingPage = {
      * See nsIUpdateCheckListener
      */
     onCheckComplete: function(request, updates, updateCount) {
       var aus = CoC["@mozilla.org/updates/update-service;1"].
                 getService(CoI.nsIApplicationUpdateService);
       gUpdates.setUpdate(aus.selectUpdate(updates, updates.length));
       if (gUpdates.update) {
         LOG("gCheckingPage", "onCheckComplete - update found");
-        if (gUpdates.update.unsupported) {
-          gUpdates.wiz.goTo("unsupported");
-          return;
-        }
-
         if (!aus.canApplyUpdates) {
           // Prevent multiple notifications for the same update when the user is
           // unable to apply updates.
           gUpdates.never();
           gUpdates.wiz.goTo("manualUpdate");
           return;
         }
 
@@ -880,33 +864,16 @@ var gManualUpdatePage = {
     manualUpdateLinkLabel.setAttribute("url", manualURL);
 
     gUpdates.setButtons(null, null, "okButton", true);
     gUpdates.wiz.getButton("finish").focus();
   }
 };
 
 /**
- * The "System Unsupported" page. Provides the user with information about their
- * system no longer being supported and an url for more information.
- */
-var gUnsupportedPage = {
-  onPageShow: function() {
-    Services.prefs.setBoolPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, true);
-    if (gUpdates.update.detailsURL) {
-      let unsupportedLinkLabel = document.getElementById("unsupportedLinkLabel");
-      unsupportedLinkLabel.setAttribute("url", gUpdates.update.detailsURL);
-    }
-
-    gUpdates.setButtons(null, null, "okButton", true);
-    gUpdates.wiz.getButton("finish").focus();
-  }
-};
-
-/**
  * The "Updates Are Available" page. Provides the user information about the
  * available update.
  */
 var gUpdatesFoundBasicPage = {
   /**
    * Initialize
    */
   onPageShow: function() {
--- a/toolkit/mozapps/update/content/updates.xul
+++ b/toolkit/mozapps/update/content/updates.xul
@@ -77,29 +77,16 @@
       <label>&manualUpdateGetMsg.label;</label>
       <hbox>
         <label class="text-link" id="manualUpdateLinkLabel" value=""
                onclick="openUpdateURL(event);"/>
       </hbox>
     </vbox>
   </wizardpage>
 
-  <wizardpage id="unsupported" pageid="unsupported"
-              object="gUnsupportedPage"
-              onpageshow="gUnsupportedPage.onPageShow();">
-    <updateheader label="&unsupported.title;"/>
-    <vbox class="update-content" flex="1">
-      <description flex="1">&unsupported.label;
-        <label id="unsupportedLinkLabel" class="text-link inline-link" onclick="openUpdateURL(event);">
-          &unsupportedLink.label;
-        </label>
-      </description>
-    </vbox>
-  </wizardpage>
-
   <wizardpage id="incompatibleCheck" pageid="incompatibleCheck"
               next="updatesfoundbasic" object="gIncompatibleCheckPage"
               onpageshow="gIncompatibleCheckPage.onPageShow();">
     <updateheader label="&incompatibleCheck.title;"/>
     <vbox class="update-content" flex="1">
       <label>&incompatibleCheck.label;</label>
       <separator class="thin"/>
       <progressmeter id="incompatibleCheckProgress" mode="undetermined"/>
--- a/toolkit/mozapps/update/nsIUpdateService.idl
+++ b/toolkit/mozapps/update/nsIUpdateService.idl
@@ -82,17 +82,17 @@ interface nsIUpdatePatch : nsISupports
  * the current application - this update may have several available patches
  * from which one must be selected to download and install, for example we
  * might select a binary difference patch first and attempt to apply that,
  * then if the application process fails fall back to downloading a complete
  * file-replace patch. This object also contains information about the update
  * that the front end and other application services can use to learn more
  * about what is going on.
  */
-[scriptable, uuid(6b0b7721-6746-443d-8cb0-c6199d7f28a6)]
+[scriptable, uuid(8f7185a7-056a-45a8-985c-1cb39cf7b7a8)]
 interface nsIUpdate : nsISupports
 {
   /**
    * The type of update:
    *   "major"  A major new version of the Application
    *   "minor"  A minor update to the Application (e.g. security update)
    */
   attribute AString type;
@@ -173,19 +173,20 @@ interface nsIUpdate : nsISupports
   /**
    * Whether to show the "No Thanks" button in the update prompt. This allows
    * the user to never receive a notification for that specific update version
    * again.
    */
   attribute boolean showNeverForVersion;
 
   /**
-   * Whether the update is no longer supported on this system.
+   * Whether to show the survey link in the update prompt. The url must also be
+   * present in the app.update.surveyURL preference.
    */
-  attribute boolean unsupported;
+  attribute boolean showSurvey;
   
   /**
    * Allows overriding the default amount of time in seconds before prompting the
    * user to apply an update. If not specified, the value of
    * app.update.promptWaitTime will be used.
    */
   attribute long long promptWaitTime;
 
--- a/toolkit/mozapps/update/nsUpdateService.js
+++ b/toolkit/mozapps/update/nsUpdateService.js
@@ -39,17 +39,16 @@ const PREF_APP_UPDATE_INTERVAL          
 const PREF_APP_UPDATE_LOG                 = "app.update.log";
 const PREF_APP_UPDATE_MODE                = "app.update.mode";
 const PREF_APP_UPDATE_NEVER_BRANCH        = "app.update.never.";
 const PREF_APP_UPDATE_POSTUPDATE          = "app.update.postupdate";
 const PREF_APP_UPDATE_PROMPTWAITTIME      = "app.update.promptWaitTime";
 const PREF_APP_UPDATE_SHOW_INSTALLED_UI   = "app.update.showInstalledUI";
 const PREF_APP_UPDATE_SILENT              = "app.update.silent";
 const PREF_APP_UPDATE_STAGING_ENABLED     = "app.update.staging.enabled";
-const PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED = "app.update.notifiedUnsupported";
 const PREF_APP_UPDATE_URL                 = "app.update.url";
 const PREF_APP_UPDATE_URL_DETAILS         = "app.update.url.details";
 const PREF_APP_UPDATE_URL_OVERRIDE        = "app.update.url.override";
 const PREF_APP_UPDATE_SERVICE_ENABLED     = "app.update.service.enabled";
 const PREF_APP_UPDATE_SERVICE_ERRORS      = "app.update.service.errors";
 const PREF_APP_UPDATE_SERVICE_MAX_ERRORS  = "app.update.service.maxErrors";
 const PREF_APP_UPDATE_SOCKET_ERRORS       = "app.update.socket.maxErrors";
 const PREF_APP_UPDATE_RETRY_TIMEOUT       = "app.update.socket.retryTimeout";
@@ -177,17 +176,16 @@ const DEFAULT_SERVICE_MAX_ERRORS = 10;
 // The number of consecutive socket errors to allow before falling back to
 // downloading a different MAR file or failing if already downloading the full.
 const DEFAULT_SOCKET_MAX_ERRORS = 10;
 
 // The number of milliseconds to wait before retrying a connection error.
 const DEFAULT_UPDATE_RETRY_TIMEOUT = 2000;
 
 var gLocale     = null;
-
 #ifdef MOZ_B2G
 var gVolumeMountLock = null;
 XPCOMUtils.defineLazyGetter(this, "gExtStorage", function aus_gExtStorage() {
     return Services.env.get("EXTERNAL_STORAGE");
 });
 
 var gSDCardMountLock = null;
 #endif
@@ -1557,18 +1555,18 @@ UpdatePatch.prototype = {
  * @constructor
  */
 function Update(update) {
   this._properties = {};
   this._patches = [];
   this.isCompleteUpdate = false;
   this.isOSUpdate = false;
   this.showPrompt = false;
+  this.showSurvey = false;
   this.showNeverForVersion = false;
-  this.unsupported = false;
   this.channel = "default";
   this.promptWaitTime = getPref("getIntPref", PREF_APP_UPDATE_PROMPTWAITTIME, 43200);
 
   // Null <update>, assume this is a message container and do no
   // further initialization
   if (!update)
     return;
 
@@ -1583,17 +1581,17 @@ function Update(update) {
     try {
       var patch = new UpdatePatch(patchElement);
     } catch (e) {
       continue;
     }
     this._patches.push(patch);
   }
 
-  if (this._patches.length == 0 && !update.hasAttribute("unsupported"))
+  if (0 == this._patches.length)
     throw Cr.NS_ERROR_ILLEGAL_VALUE;
 
   // Fallback to the behavior prior to bug 530872 if the update does not have an
   // appVersion attribute.
   if (!update.hasAttribute("appVersion")) {
     if (update.getAttribute("type") == "major") {
       if (update.hasAttribute("detailsURL")) {
         this.billboardURL = update.getAttribute("detailsURL");
@@ -1628,18 +1626,18 @@ function Update(update) {
       this.showNeverForVersion = attr.value == "true";
     else if (attr.name == "showPrompt")
       this.showPrompt = attr.value == "true";
     else if (attr.name == "promptWaitTime")
     {
       if(!isNaN(attr.value))
         this.promptWaitTime = parseInt(attr.value);
     }
-    else if (attr.name == "unsupported")
-      this.unsupported = attr.value == "true";
+    else if (attr.name == "showSurvey")
+      this.showSurvey = attr.value == "true";
     else if (attr.name == "version") {
       // Prevent version from replacing displayVersion if displayVersion is
       // present in the update xml.
       if (!this.displayVersion)
         this.displayVersion = attr.value;
     }
     else {
       this[attr.name] = attr.value;
@@ -1768,16 +1766,17 @@ Update.prototype = {
     update.setAttribute("installDate", this.installDate);
     update.setAttribute("isCompleteUpdate", this.isCompleteUpdate);
     update.setAttribute("isOSUpdate", this.isOSUpdate);
     update.setAttribute("name", this.name);
     update.setAttribute("serviceURL", this.serviceURL);
     update.setAttribute("showNeverForVersion", this.showNeverForVersion);
     update.setAttribute("showPrompt", this.showPrompt);
     update.setAttribute("promptWaitTime", this.promptWaitTime);
+    update.setAttribute("showSurvey", this.showSurvey);
     update.setAttribute("type", this.type);
     // for backwards compatibility in case the user downgrades
     update.setAttribute("version", this.displayVersion);
 
     // Optional attributes
     if (this.billboardURL)
       update.setAttribute("billboardURL", this.billboardURL);
     if (this.detailsURL)
@@ -1785,18 +1784,16 @@ Update.prototype = {
     if (this.licenseURL)
       update.setAttribute("licenseURL", this.licenseURL);
     if (this.platformVersion)
       update.setAttribute("platformVersion", this.platformVersion);
     if (this.previousAppVersion)
       update.setAttribute("previousAppVersion", this.previousAppVersion);
     if (this.statusText)
       update.setAttribute("statusText", this.statusText);
-    if (this.unsupported)
-      update.setAttribute("unsupported", this.unsupported);
     updates.documentElement.appendChild(update);
 
     for (var p in this._properties) {
       if (this._properties[p].present)
         update.setAttribute(p, this._properties[p].data);
     }
 
     for (var i = 0; i < this.patchCount; ++i)
@@ -2374,19 +2371,16 @@ UpdateService.prototype = {
    * @param   updates
    *          An array of available nsIUpdate items
    * @return  The nsIUpdate to offer.
    */
   selectUpdate: function AUS_selectUpdate(updates) {
     if (updates.length == 0)
       return null;
 
-    if (updates.length == 1 && updates[0].unsupported)
-      return updates[0];
-
     // Choose the newest of the available minor and major updates.
     var majorUpdate = null;
     var minorUpdate = null;
     var vc = Services.vc;
 
     updates.forEach(function(aUpdate) {
       // Ignore updates for older versions of the application and updates for
       // the same version of the application with the same build ID.
@@ -2454,43 +2448,31 @@ UpdateService.prototype = {
 #ifdef MOZ_WIDGET_GONK
       // For gonk, the user isn't necessarily aware of the update, so we need
       // to show the prompt to make sure.
       this._showPrompt(um.activeUpdate);
 #endif
       return;
     }
 
+    var update = this.selectUpdate(updates, updates.length);
+    if (!update)
+      return;
+
     var updateEnabled = getPref("getBoolPref", PREF_APP_UPDATE_ENABLED, true);
     if (!updateEnabled) {
       LOG("UpdateService:_selectAndInstallUpdate - not prompting because " +
           "update is disabled");
       return;
     }
 
     if (!gMetroUpdatesEnabled) {
       return;
     }
 
-    var update = this.selectUpdate(updates, updates.length);
-    if (!update) {
-      return;
-    }
-
-    if (update.unsupported) {
-      LOG("UpdateService:_selectAndInstallUpdate - update not supported for " +
-          "this system");
-      if (!getPref("getBoolPref", PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, false)) {
-        LOG("UpdateService:_selectAndInstallUpdate - notifying that the " +
-            "update is not supported for this system");
-        this._showPrompt(update);
-      }
-      return;
-    }
-
     if (!gCanApplyUpdates) {
       LOG("UpdateService:_selectAndInstallUpdate - the user is unable to " +
           "apply updates... prompting");
       this._showPrompt(update);
       return;
     }
 
     /**
@@ -3314,34 +3296,34 @@ Checker.prototype = {
   get _updates() {
     var updatesElement = this._request.responseXML.documentElement;
     if (!updatesElement) {
       LOG("Checker:_updates get - empty updates document?!");
       return [];
     }
 
     if (updatesElement.nodeName != "updates") {
-      LOG("Checker:_updates get - unexpected node name!");
+      LOG("Checker:updates get - unexpected node name!");
       throw new Error("Unexpected node name, expected: updates, got: " +
                       updatesElement.nodeName);
     }
 
     const ELEMENT_NODE = Ci.nsIDOMNode.ELEMENT_NODE;
     var updates = [];
     for (var i = 0; i < updatesElement.childNodes.length; ++i) {
       var updateElement = updatesElement.childNodes.item(i);
       if (updateElement.nodeType != ELEMENT_NODE ||
           updateElement.localName != "update")
         continue;
 
       updateElement.QueryInterface(Ci.nsIDOMElement);
       try {
         var update = new Update(updateElement);
       } catch (e) {
-        LOG("Checker:_updates get - invalid <update/>, ignoring...");
+        LOG("Checker:updates get - invalid <update/>, ignoring...");
         continue;
       }
       update.serviceURL = this.getUpdateURL(this._forced);
       update.channel = UpdateChannel.get();
       updates.push(update);
     }
 
     return updates;
@@ -3391,17 +3373,17 @@ Checker.prototype = {
       gCertUtils.checkCert(this._request.channel, allowNonBuiltIn, certs);
 
       if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_CERT_ERRORS))
         Services.prefs.clearUserPref(PREF_APP_UPDATE_CERT_ERRORS);
 
       if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_BACKGROUNDERRORS))
         Services.prefs.clearUserPref(PREF_APP_UPDATE_BACKGROUNDERRORS);
 
-      // Tell the callback about the updates
+      // Tell the Update Service about the updates
       this._callback.onCheckComplete(event.target, updates, updates.length);
     }
     catch (e) {
       LOG("Checker:onLoad - there was a problem checking for updates. " +
           "Exception: " + e);
       var request = event.target;
       var status = this._getChannelStatus(request);
       LOG("Checker:onLoad - request.status: " + status);
--- a/toolkit/mozapps/update/nsUpdateTimerManager.js
+++ b/toolkit/mozapps/update/nsUpdateTimerManager.js
@@ -77,18 +77,18 @@ TimerManager.prototype = {
    * The set of registered timers.
    */
   _timers: { },
 
   /**
    * See nsIObserver.idl
    */
   observe: function TM_observe(aSubject, aTopic, aData) {
-    // Prevent setting the timer interval to a value of less than 30 seconds.
-    var minInterval = 30000;
+    // Prevent setting the timer interval to a value of less than 60 seconds.
+    var minInterval = 60000;
     // Prevent setting the first timer interval to a value of less than 10
     // seconds.
     var minFirstInterval = 10000;
     switch (aTopic) {
     case "utm-test-init":
       // Enforce a minimum timer interval of 500 ms for tests and fall through
       // to profile-after-change to initialize the timer.
       minInterval = 500;
--- a/toolkit/mozapps/update/test/chrome/Makefile.in
+++ b/toolkit/mozapps/update/test/chrome/Makefile.in
@@ -76,18 +76,16 @@ MOCHITEST_CHROME_FILES += \
   test_0121_check_requireBuiltinCert.xul \
   test_0122_check_allowNonBuiltinCert_validCertAttrs.xul \
   test_0123_check_allowNonBuiltinCert_noCertAttrsCheck.xul \
   test_0131_check_invalidCertAttrs_noUpdate.xul \
   test_0132_check_invalidCertAttrs_hasUpdate.xul \
   test_0141_notify_invalidCertAttrs_noUpdate.xul \
   test_0142_notify_invalidCertAttrs_hasUpdate.xul \
   test_0151_notify_backgroundCheckError.xul \
-  test_0161_check_unsupported.xul \
-  test_0162_notify_unsupported.xul \
   test_0900_deprecatedUpdateFormat_minor.xul \
   test_0901_deprecatedUpdateFormat_major.xul \
   test_9999_cleanup.xul \
   $(NULL)
 
 
 include $(topsrcdir)/config/rules.mk
 
deleted file mode 100644
--- a/toolkit/mozapps/update/test/chrome/test_0161_check_unsupported.xul
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
--->
-
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
-
-<window title="Test checking for updates when system is no longer supported (bug 843497)"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        onload="runTestDefault();">
-<script type="application/javascript"
-        src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
-<script type="application/javascript"
-        src="utils.js"/>
-
-<script type="application/javascript">
-<![CDATA[
-
-const TESTS = [ {
-  pageid: PAGEID_CHECKING
-}, {
-  pageid: PAGEID_UNSUPPORTED,
-  buttonClick: "finish"
-} ];
-
-function runTest() {
-  debugDump("entering");
-
-  // When checking manually the unsupported page should still be shown even if
-  // it was shown previously.
-  Services.prefs.setBoolPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, true);
-
-  let url = URL_UPDATE + "?unsupported=1";
-  setUpdateURLOverride(url);
-
-  gUP.checkForUpdates();
-}
-
-]]>
-</script>
-
-<body xmlns="http://www.w3.org/1999/xhtml">
-  <p id="display"></p>
-  <div id="content" style="display: none"></div>
-  <pre id="test"></pre>
-</body>
-</window>
deleted file mode 100644
--- a/toolkit/mozapps/update/test/chrome/test_0162_notify_unsupported.xul
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
--->
-
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
-
-<window title="Test notification of updates when system is no longer supported (bug 843497)"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        onload="runTestDefault();">
-<script type="application/javascript"
-        src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
-<script type="application/javascript"
-        src="utils.js"/>
-
-<script type="application/javascript">
-<![CDATA[
-
-const TESTS = [ {
-  pageid: PAGEID_UNSUPPORTED,
-  buttonClick: "finish"
-} ];
-
-function runTest() {
-  debugDump("entering");
-
-  let url = URL_UPDATE + "?unsupported=1";
-  setUpdateURLOverride(url);
-
-  gAUS.notify(null);
-}
-
-]]>
-</script>
-
-<body xmlns="http://www.w3.org/1999/xhtml">
-  <p id="display"></p>
-  <div id="content" style="display: none"></div>
-  <pre id="test"></pre>
-</body>
-</window>
--- a/toolkit/mozapps/update/test/chrome/update.sjs
+++ b/toolkit/mozapps/update/test/chrome/update.sjs
@@ -82,24 +82,16 @@ function handleRequest(aRequest, aRespon
     return;
   }
 
   if (params.noUpdates) {
     aResponse.write(getRemoteUpdatesXMLString(""));
     return;
   }
 
-  if (params.unsupported) {
-    aResponse.write(getRemoteUpdatesXMLString("  <update type=\"major\" " +
-                                              "unsupported=\"true\" " +
-                                              "detailsURL=\"" + URL_HOST +
-                                              "\"></update>\n"));
-    return;
-  }
-
   var hash;
   var patches = "";
   if (!params.partialPatchOnly) {
     hash = SHA512_HASH_SIMPLE_MAR + (params.invalidCompleteHash ? "e" : "");
     patches += getRemotePatchString("complete", SERVICE_URL, "SHA512",
                                     hash, SIZE_SIMPLE_MAR);
   }
 
--- a/toolkit/mozapps/update/test/chrome/utils.js
+++ b/toolkit/mozapps/update/test/chrome/utils.js
@@ -118,17 +118,16 @@ Components.utils.import("resource://gre/
 
 // The tests have to use the pageid instead of the pageIndex due to the
 // app update wizard's access method being random.
 const PAGEID_DUMMY            = "dummy";                 // Done
 const PAGEID_CHECKING         = "checking";              // Done
 const PAGEID_PLUGIN_UPDATES   = "pluginupdatesfound";
 const PAGEID_NO_UPDATES_FOUND = "noupdatesfound";        // Done
 const PAGEID_MANUAL_UPDATE    = "manualUpdate"; // Tested on license load failure
-const PAGEID_UNSUPPORTED      = "unsupported";           // Done
 const PAGEID_INCOMPAT_CHECK   = "incompatibleCheck";     // Done
 const PAGEID_FOUND_BASIC      = "updatesfoundbasic";     // Done
 const PAGEID_FOUND_BILLBOARD  = "updatesfoundbillboard"; // Done
 const PAGEID_LICENSE          = "license";               // Done
 const PAGEID_INCOMPAT_LIST    = "incompatibleList";      // Done
 const PAGEID_DOWNLOADING      = "downloading";           // Done
 const PAGEID_ERRORS           = "errors";                // Done
 const PAGEID_ERROR_EXTRA      = "errorextra";            // Done
@@ -549,17 +548,16 @@ function getExpectedButtonStates() {
                next  : { disabled: false, hidden: false } };
     case PAGEID_INCOMPAT_LIST:
       return { extra1: { disabled: false, hidden: false },
                next  : { disabled: false, hidden: false } };
     case PAGEID_DOWNLOADING:
       return { extra1: { disabled: false, hidden: false } };
     case PAGEID_NO_UPDATES_FOUND:
     case PAGEID_MANUAL_UPDATE:
-    case PAGEID_UNSUPPORTED:
     case PAGEID_ERRORS:
     case PAGEID_ERROR_EXTRA:
     case PAGEID_INSTALLED:
       return { finish: { disabled: false, hidden: false } };
     case PAGEID_ERROR_PATCHING:
       return { next  : { disabled: false, hidden: false } };
     case PAGEID_FINISHED:
     case PAGEID_FINISHED_BKGRD:
@@ -959,20 +957,16 @@ function resetPrefs() {
   if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_URL_DETAILS)) {
     Services.prefs.clearUserPref(PREF_APP_UPDATE_URL_DETAILS);
   }
 
   if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_SHOW_INSTALLED_UI)) {
     Services.prefs.clearUserPref(PREF_APP_UPDATE_SHOW_INSTALLED_UI);
   }
 
-  if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED)) {
-    Services.prefs.clearUserPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED);
-  }
-
   if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_LOG)) {
     Services.prefs.clearUserPref(PREF_APP_UPDATE_LOG);
   }
 
   if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_CERT_ERRORS)) {
     Services.prefs.clearUserPref(PREF_APP_UPDATE_CERT_ERRORS);
   }
 
--- a/toolkit/mozapps/update/test/shared.js
+++ b/toolkit/mozapps/update/test/shared.js
@@ -21,17 +21,16 @@ const PREF_APP_UPDATE_CERT_ERRORS       
 const PREF_APP_UPDATE_CERT_MAXERRORS      = "app.update.cert.maxErrors";
 const PREF_APP_UPDATE_CERT_REQUIREBUILTIN = "app.update.cert.requireBuiltIn";
 const PREF_APP_UPDATE_CHANNEL             = "app.update.channel";
 const PREF_APP_UPDATE_ENABLED             = "app.update.enabled";
 const PREF_APP_UPDATE_METRO_ENABLED       = "app.update.metro.enabled";
 const PREF_APP_UPDATE_IDLETIME            = "app.update.idletime";
 const PREF_APP_UPDATE_LOG                 = "app.update.log";
 const PREF_APP_UPDATE_NEVER_BRANCH        = "app.update.never.";
-const PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED = "app.update.notifiedUnsupported";
 const PREF_APP_UPDATE_PROMPTWAITTIME      = "app.update.promptWaitTime";
 const PREF_APP_UPDATE_SERVICE_ENABLED     = "app.update.service.enabled";
 const PREF_APP_UPDATE_SHOW_INSTALLED_UI   = "app.update.showInstalledUI";
 const PREF_APP_UPDATE_SILENT              = "app.update.silent";
 const PREF_APP_UPDATE_STAGING_ENABLED     = "app.update.staging.enabled";
 const PREF_APP_UPDATE_URL                 = "app.update.url";
 const PREF_APP_UPDATE_URL_DETAILS         = "app.update.url.details";
 const PREF_APP_UPDATE_URL_OVERRIDE        = "app.update.url.override";
--- a/toolkit/themes/linux/mozapps/update/updates.css
+++ b/toolkit/themes/linux/mozapps/update/updates.css
@@ -41,31 +41,16 @@ wizardpage {
   margin-top: 0 !important;
 }
 
 #licenseContent, #incompatibleListbox {
   -moz-margin-start: 6px;
   -moz-margin-end: 6px;
 }
 
-.inline-link {
-  color: -moz-nativehyperlinktext;
-  text-decoration: none;
-}
-
-.inline-link:hover {
-  text-decoration: underline;
-}
-
-/* Unsupported Page */
-#unsupportedLabel, #unsupportedLinkLabel {
-  -moz-margin-start: 0;
-  -moz-padding-start: 0;
-}
-
 /* Update Found Basic Page */
 #updateName, #updateFinishedName {
   font-weight: bold;
   font-size: larger;
 }
 
 /* License Page */
 #licenseContent {
--- a/toolkit/themes/osx/mozapps/update/updates.css
+++ b/toolkit/themes/osx/mozapps/update/updates.css
@@ -66,31 +66,16 @@ wizardpage {
   margin-bottom: 6px;
 }
 
 #licenseContent, #incompatibleListbox {
   -moz-margin-start: 6px;
   -moz-margin-end: 6px;
 }
 
-.inline-link {
-  color: -moz-nativehyperlinktext;
-  text-decoration: none;
-}
-
-.inline-link:hover {
-  text-decoration: underline;
-}
-
-/* Unsupported Page */
-#unsupportedLabel, #unsupportedLinkLabel {
-  -moz-margin-start: 0;
-  -moz-padding-start: 0;
-}
-
 /* Update Found Basic Page */
 #updateName, #updateFinishedName {
   font-weight: bold;
   font-size: larger;
 }
 
 /* License Page */
 #licenseContent {
--- a/toolkit/themes/windows/mozapps/update/updates.css
+++ b/toolkit/themes/windows/mozapps/update/updates.css
@@ -41,31 +41,16 @@ wizardpage {
   margin-top: 0 !important;
 }
 
 #licenseContent, #incompatibleListbox {
   -moz-margin-start: 6px;
   -moz-margin-end: 6px;
 }
 
-.inline-link {
-  color: -moz-nativehyperlinktext;
-  text-decoration: none;
-}
-
-.inline-link:hover {
-  text-decoration: underline;
-}
-
-/* Unsupported Page */
-#unsupportedLabel, #unsupportedLinkLabel {
-  -moz-margin-start: 0;
-  -moz-padding-start: 0;
-}
-
 /* Update Found Basic Page */
 #updateName, #updateFinishedName {
   font-weight: bold;
   font-size: larger;
 }
 
 /* License Page */
 #licenseContent {