[seamonkey/el6] update to ESR-24.5.0

Dmitry Butskoy buc at fedoraproject.org
Fri May 9 19:13:04 UTC 2014


commit 57387581400d466bc1cd1e53d162bf8bc34ad54e
Author: buc <buc at grad.stu.neva.ru>
Date:   Fri May 9 23:15:32 2014 +0400

    update to ESR-24.5.0

 seamonkey-2.21-esr4.0-5.0.patch | 1908 +++++++++++++++++++++++++++++++++++++++
 seamonkey.spec                  |    8 +-
 2 files changed, 1915 insertions(+), 1 deletions(-)
---
diff --git a/seamonkey-2.21-esr4.0-5.0.patch b/seamonkey-2.21-esr4.0-5.0.patch
new file mode 100644
index 0000000..72d9152
--- /dev/null
+++ b/seamonkey-2.21-esr4.0-5.0.patch
@@ -0,0 +1,1908 @@
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/calendar/base/content/calendar-item-editing.js seamonkey-2.21-esr5.0/comm-release/calendar/base/content/calendar-item-editing.js
+--- seamonkey-2.21-esr4.0/comm-release/calendar/base/content/calendar-item-editing.js	2013-09-16 22:20:08.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/calendar/base/content/calendar-item-editing.js	2014-05-09 22:59:27.054213393 +0400
+@@ -315,11 +315,9 @@
+     // ask the provide if this item is an invitation. if this is the case
+     // we'll open the summary dialog since the user is not allowed to change
+     // the details of the item.
+-    var isInvitation = false;
+-    calendar = cal.wrapInstance(calendar, Components.interfaces.calISchedulingSupport);
+-    if (calendar) {
+-        isInvitation = calendar.isInvitation(calendarItem);
+-    }
++    let wrappedCalendar = cal.wrapInstance(calendar, Components.interfaces.calISchedulingSupport);
++    let isInvitation = wrappedCalendar && wrappedCalendar.isInvitation(calendarItem);
++
+     // open the dialog modeless
+     let url;
+     if (isCalendarWritable(calendar)
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog-attendees.js seamonkey-2.21-esr5.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog-attendees.js
+--- seamonkey-2.21-esr4.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog-attendees.js	2013-09-16 22:20:08.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog-attendees.js	2014-05-09 22:59:27.121213393 +0400
+@@ -52,6 +52,10 @@
+ 
+     // Make sure zoom factor is set up correctly (from persisted value)
+     setZoomFactor(zoom.value);
++    if(gZoomFactor == 100) {
++        // if zoom factor was not changed, make sure it is applied at least once
++        applyCurrentZoomFactor();
++    }
+ 
+     initTimeRange();
+ 
+@@ -749,6 +753,14 @@
+     }
+ 
+     gZoomFactor = aValue;
++    applyCurrentZoomFactor();
++    return aValue;
++}
++
++/**
++ * applies the current zoom factor for the time grid
++ */
++function applyCurrentZoomFactor() {
+     var timebar = document.getElementById("timebar");
+     timebar.zoomFactor = gZoomFactor;
+     var selectionbar = document.getElementById("selection-bar");
+@@ -770,8 +782,6 @@
+         grid.scroll = ratio;
+         selectionbar.ratio = ratio;
+     }
+-
+-    return aValue;
+ }
+ 
+ /**
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog.js seamonkey-2.21-esr5.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog.js
+--- seamonkey-2.21-esr4.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog.js	2013-09-16 22:20:08.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/calendar/base/content/dialogs/calendar-event-dialog.js	2014-05-09 22:59:27.122213393 +0400
+@@ -33,6 +33,7 @@
+ var gIgnoreUpdate = false;
+ var gShowTimeAs = null;
+ var gWarning = false;
++var gPreviousCalendarId = null;
+ 
+ var eventDialogQuitObserver = {
+   observe: function(aSubject, aTopic, aData) {
+@@ -2148,12 +2149,17 @@
+ 
+     gIsReadOnly = calendar.readOnly;
+ 
++    if (!gPreviousCalendarId) {
++        gPreviousCalendarId = item.calendar.id;
++    }
++
+     // We might have to change the organizer, let's see
+     let calendarOrgId = calendar.getProperty("organizerId");
+-    if (window.organizer && calendar.aclEntry && calendarOrgId &&
+-        calendar.id != item.calendar.id) {
++    if (window.organizer && calendarOrgId &&
++        calendar.id != gPreviousCalendarId) {
+         window.organizer.id = calendarOrgId;
+         window.organizer.commonName = calendar.getProperty("organizerCN");
++        gPreviousCalendarId = calendar.id;
+     }
+ 
+     if (!canNotifyAttendees(calendar, item) && calendar.getProperty("imip.identity")) {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/calendar/base/modules/calAuthUtils.jsm seamonkey-2.21-esr5.0/comm-release/calendar/base/modules/calAuthUtils.jsm
+--- seamonkey-2.21-esr4.0/comm-release/calendar/base/modules/calAuthUtils.jsm	2014-05-09 22:53:27.967213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/calendar/base/modules/calAuthUtils.jsm	2014-05-09 22:59:27.122213393 +0400
+@@ -304,8 +304,11 @@
+             }
+         };
+ 
++
++        let hostKey = (aChannel.URI.host + ":" + aChannel.URI.port + " (" + aAuthInfo.realm + ")");
++
+         var asyncprompter = Components.classes["@mozilla.org/messenger/msgAsyncPrompter;1"]
+                                       .getService(Components.interfaces.nsIMsgAsyncPrompter);
+-        asyncprompter.queueAsyncAuthPrompt(aChannel.URI.spec, false, promptlistener);
++        asyncprompter.queueAsyncAuthPrompt(hostKey, false, promptlistener);
+     }
+ };
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/calendar/itip/calItipEmailTransport.js seamonkey-2.21-esr5.0/comm-release/calendar/itip/calItipEmailTransport.js
+--- seamonkey-2.21-esr4.0/comm-release/calendar/itip/calItipEmailTransport.js	2013-09-16 22:20:08.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/calendar/itip/calItipEmailTransport.js	2014-05-09 22:59:27.122213393 +0400
+@@ -192,7 +192,11 @@
+                 // To somehow have a last resort before sending spam, the user can choose to send the mail.
+                 let prefCompatMode = cal.getPrefSafe("calendar.itip.compatSendMode", 0);
+                 let inoutCheck = { value: (prefCompatMode == 1) };
+-                if (Services.prompt.confirmEx(null,
++                let parent = Services.wm.getMostRecentWindow(null);
++                if (parent.closed) {
++                    parent = cal.getCalendarWindow();
++                }
++                if (Services.prompt.confirmEx(parent,
+                                               cal.calGetString("lightning", "imipSendMail.title", null, "lightning"),
+                                               cal.calGetString("lightning", "imipSendMail.text", null, "lightning"),
+                                               Services.prompt.STD_YES_NO_BUTTONS,
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mail/config/version.txt seamonkey-2.21-esr5.0/comm-release/mail/config/version.txt
+--- seamonkey-2.21-esr4.0/comm-release/mail/config/version.txt	2014-05-09 22:53:29.311213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mail/config/version.txt	2014-05-09 22:59:27.122213393 +0400
+@@ -1 +1 @@
+-24.4.0
++24.5.0
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/app/blocklist.xml seamonkey-2.21-esr5.0/comm-release/mozilla/browser/app/blocklist.xml
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/app/blocklist.xml	2014-05-09 22:53:29.318213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/app/blocklist.xml	2014-05-09 22:59:27.123213393 +0400
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1394054454000">
++<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1396993434000">
+   <emItems>
+       <emItem  blockID="i454" id="sqlmoz at facebook.com">
+                         <versionRange  minVersion="0" maxVersion="*" severity="3">
+@@ -257,6 +257,12 @@
+                     <prefs>
+               </prefs>
+                   </emItem>
++      <emItem  blockID="i93" id="{68b8676b-99a5-46d1-b390-22411d8bcd61}">
++                        <versionRange  minVersion="0" maxVersion="*">
++                    </versionRange>
++                    <prefs>
++              </prefs>
++    </emItem>
+       <emItem  blockID="i140" id="mozillahmpg at mozilla.org">
+                         <versionRange  minVersion="0" maxVersion="*" severity="3">
+                     </versionRange>
+@@ -1032,8 +1038,8 @@
+                     <prefs>
+               </prefs>
+                   </emItem>
+-      <emItem  blockID="i67" id="youtube2 at youtube2.com">
+-                        <versionRange  minVersion="0" maxVersion="*">
++      <emItem  blockID="i570" id="jid1-vW9nopuIAJiRHw at jetpack">
++                        <versionRange  minVersion="0" maxVersion="*" severity="1">
+                     </versionRange>
+                     <prefs>
+               </prefs>
+@@ -1051,7 +1057,7 @@
+               </prefs>
+                   </emItem>
+       <emItem  blockID="i547" id="{87934c42-161d-45bc-8cef-ef18abe2a30c}">
+-                        <versionRange  minVersion="0" maxVersion="*" severity="1">
++                        <versionRange  minVersion="0" maxVersion="3.7.9999999999" severity="1">
+                     </versionRange>
+                     <prefs>
+               </prefs>
+@@ -1350,8 +1356,8 @@
+                     <prefs>
+               </prefs>
+                   </emItem>
+-      <emItem  blockID="i93" id="{68b8676b-99a5-46d1-b390-22411d8bcd61}">
+-                        <versionRange  minVersion="0" maxVersion="*">
++      <emItem  blockID="i568" os="Darwin" id="thunder at xunlei.com">
++                        <versionRange  minVersion="0" maxVersion="2.0.6" severity="1">
+                     </versionRange>
+                     <prefs>
+               </prefs>
+@@ -1412,6 +1418,12 @@
+                     <prefs>
+               </prefs>
+                   </emItem>
++      <emItem  blockID="i67" id="youtube2 at youtube2.com">
++                        <versionRange  minVersion="0" maxVersion="*">
++                    </versionRange>
++                    <prefs>
++              </prefs>
++    </emItem>
+       <emItem  blockID="i476" id="mbroctone at facebook.com">
+                         <versionRange  minVersion="0" maxVersion="*" severity="3">
+                     </versionRange>
+@@ -2063,6 +2075,12 @@
+       <pluginItem  blockID="p558">
+             <match name="description" exp="^($|Unity Web Player version ([0-3]|(4\.([0-2]|3(\.[0-4])?[^0-9.]))))" />      <match name="filename" exp="Unity Web Player\.plugin" />                      <versionRange  severity="0" vulnerabilitystatus="1"></versionRange>
+                   </pluginItem>
++      <pluginItem  blockID="p572">
++                  <match name="filename" exp="npdjvu\.dll" />                      <versionRange  minVersion="0" maxVersion="6.1.4.27993" severity="0" vulnerabilitystatus="1"></versionRange>
++                  </pluginItem>
++      <pluginItem  blockID="p574">
++                  <match name="filename" exp="NPDjVu\.plugin" />                      <versionRange  minVersion="0" maxVersion="6.1.1" severity="0" vulnerabilitystatus="1"></versionRange>
++                  </pluginItem>
+     </pluginItems>
+ 
+   <gfxItems>
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/base/content/test/Makefile.in seamonkey-2.21-esr5.0/comm-release/mozilla/browser/base/content/test/Makefile.in
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/base/content/test/Makefile.in	2014-05-09 22:53:28.932213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/base/content/test/Makefile.in	2014-05-09 22:59:27.123213393 +0400
+@@ -67,6 +67,7 @@
+                  browser_keywordSearch_postData.js \
+                  POSTSearchEngine.xml \
+                  print_postdata.sjs \
++                 browser_aboutHome.js \
+                  browser_alltabslistener.js \
+                  browser_bug304198.js \
+                  title_test.svg \
+@@ -360,12 +361,10 @@
+ endif
+ 
+ # browser_aboutHealthReport.js disabled for frequent failures on Linux (bug 924307)
+-# browser_aboutHome.js disabled for frequent failures on Linux (bug 945667)
+ # browser_CTP_context_menu.js fails intermittently on Linux (bug 909342)
+ ifndef MOZ_WIDGET_GTK
+ MOCHITEST_BROWSER_FILES += \
+   browser_aboutHealthReport.js \
+-  browser_aboutHome.js \
+   browser_CTP_context_menu.js \
+   $(NULL)
+ endif
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/base/content/test/browser_aboutHome.js seamonkey-2.21-esr5.0/comm-release/mozilla/browser/base/content/test/browser_aboutHome.js
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/base/content/test/browser_aboutHome.js	2013-09-16 22:26:25.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/base/content/test/browser_aboutHome.js	2014-05-09 22:59:27.124213393 +0400
+@@ -88,11 +88,19 @@
+   }
+ },
+ 
++// Disabled on Linux for intermittent issues with FHR, see Bug 945667.
++// Disabled always due to bug 992485
+ {
+   desc: "Check that performing a search fires a search event and records to " +
+         "Firefox Health Report.",
+   setup: function () { },
+   run: function () {
++    // Skip this test always for now since it loads google.com and that causes bug 992485
++    return;
++
++    // Skip this test on Linux.
++    if (navigator.platform.indexOf("Linux") == 0) { return; }
++
+     try {
+       let cm = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+       cm.getCategoryEntry("healthreport-js-provider-default", "SearchesProvider");
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/base/content/test/browser_bug435325.js seamonkey-2.21-esr5.0/comm-release/mozilla/browser/base/content/test/browser_bug435325.js
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/base/content/test/browser_bug435325.js	2013-09-16 22:26:25.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/base/content/test/browser_bug435325.js	2014-05-09 22:59:27.124213393 +0400
+@@ -51,6 +51,11 @@
+   // Now press the "Try Again" button
+   ok(gBrowser.contentDocument.getElementById("errorTryAgain"),
+     "The error page has got a #errorTryAgain element");
++
++  // Re-enable the proxy so example.com is resolved to localhost, rather than
++  // the actual example.com.
++  Services.prefs.setIntPref("network.proxy.type", proxyPrefValue);
++
+   gBrowser.contentDocument.getElementById("errorTryAgain").click();
+ 
+   ok(!Services.io.offline, "After clicking the Try Again button, we're back " +
+@@ -60,7 +65,6 @@
+ }
+ 
+ registerCleanupFunction(function() {
+-  Services.prefs.setIntPref("network.proxy.type", proxyPrefValue);
+   Services.prefs.setBoolPref("browser.cache.disk.enable", true);
+   Services.prefs.setBoolPref("browser.cache.memory.enable", true);
+   Services.io.offline = false;
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/components/preferences/in-content/tests/Makefile.in seamonkey-2.21-esr5.0/comm-release/mozilla/browser/components/preferences/in-content/tests/Makefile.in
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/components/preferences/in-content/tests/Makefile.in	2013-09-16 22:26:26.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/components/preferences/in-content/tests/Makefile.in	2014-05-09 22:59:27.124213393 +0400
+@@ -13,9 +13,7 @@
+ MOCHITEST_BROWSER_FILES := \
+     head.js \
+     browser_advanced_update.js \
+-    browser_bug410900.js \
+     browser_bug731866.js \
+-    browser_connection.js \
+     browser_privacypane_1.js \
+     browser_privacypane_3.js \
+     browser_privacypane_4.js \
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/components/preferences/tests/Makefile.in seamonkey-2.21-esr5.0/comm-release/mozilla/browser/components/preferences/tests/Makefile.in
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/components/preferences/tests/Makefile.in	2013-09-16 22:26:26.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/components/preferences/tests/Makefile.in	2014-05-09 22:59:27.124213393 +0400
+@@ -13,7 +13,6 @@
+ MOCHITEST_BROWSER_FILES := \
+     head.js \
+     browser_advanced_update.js \
+-    browser_bug410900.js \
+     browser_bug705422.js \
+     browser_permissions.js \
+     browser_chunk_permissions.js \
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/components/sessionstore/test/browser_615394-SSWindowState_events.js seamonkey-2.21-esr5.0/comm-release/mozilla/browser/components/sessionstore/test/browser_615394-SSWindowState_events.js
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/components/sessionstore/test/browser_615394-SSWindowState_events.js	2013-09-16 22:26:26.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/components/sessionstore/test/browser_615394-SSWindowState_events.js	2014-05-09 22:59:27.124213393 +0400
+@@ -2,7 +2,7 @@
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+-const stateBackup = ss.getBrowserState();
++const stateBackup = JSON.parse(ss.getBrowserState());
+ const testState = {
+   windows: [{
+     tabs: [
+@@ -73,8 +73,7 @@
+     waitForBrowserState(testState, currentTest);
+   }
+   else {
+-    ss.setBrowserState(stateBackup);
+-    finish();
++    waitForBrowserState(stateBackup, finish);
+   }
+ }
+ 
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/config/version.txt seamonkey-2.21-esr5.0/comm-release/mozilla/browser/config/version.txt
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/config/version.txt	2014-05-09 22:53:28.934213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/config/version.txt	2014-05-09 22:59:27.124213393 +0400
+@@ -1 +1 @@
+-24.3.0esrpre
++24.4.0esrpre
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/browser/devtools/netmonitor/test/head.js seamonkey-2.21-esr5.0/comm-release/mozilla/browser/devtools/netmonitor/test/head.js
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/browser/devtools/netmonitor/test/head.js	2013-09-16 22:26:26.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/browser/devtools/netmonitor/test/head.js	2014-05-09 22:59:27.125213393 +0400
+@@ -115,7 +115,7 @@
+   let deferred = Promise.defer();
+   let tab = aMonitor.target.tab;
+ 
+-  aMonitor.once("destroyed", deferred.resolve);
++  aMonitor.once("destroyed", () => executeSoon(deferred.resolve));
+   removeTab(tab);
+ 
+   return deferred.promise;
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/config/milestone.txt seamonkey-2.21-esr5.0/comm-release/mozilla/config/milestone.txt
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/config/milestone.txt	2014-05-09 22:53:29.318213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/config/milestone.txt	2014-05-09 22:59:27.125213393 +0400
+@@ -10,4 +10,4 @@
+ # hardcoded milestones in the tree from these two files.
+ #--------------------------------------------------------
+ 
+-24.4.0
++24.5.0
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/base/test/delayedServerEvents.sjs seamonkey-2.21-esr5.0/comm-release/mozilla/content/base/test/delayedServerEvents.sjs
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/base/test/delayedServerEvents.sjs	2013-09-16 22:26:27.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/base/test/delayedServerEvents.sjs	2014-05-09 22:59:27.157213391 +0400
+@@ -1,7 +1,7 @@
+ // this will take strings_to_send.length*500 ms = 5 sec
+ 
+ var timer = null;
+-var strings_to_send = ["data\r\n\nda", "ta", ":", "de", "layed1\n\n",
++var strings_to_send = ["retry:999999999\ndata\r\n\nda", "ta", ":", "de", "layed1\n\n",
+                        "",
+                        "",
+                        "data:delayed2\n\n", "", ""];
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/src/WebGLContextValidate.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/src/WebGLContextValidate.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/src/WebGLContextValidate.cpp	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/src/WebGLContextValidate.cpp	2014-05-09 22:59:27.157213391 +0400
+@@ -502,6 +502,19 @@
+         return false;
+     }
+ 
++    /* Bug 966630: maxTextureSize >> level runs into "undefined"
++     * behaviour depending on ISA. For example, on Intel shifts
++     * amounts are mod 64 (in 64-bit mode on 64-bit dest) and mod 32
++     * otherwise. This means 16384 >> 0x10000001 == 8192 which isn't
++     * what would be expected. Make the required behaviour explicit by
++     * clamping to a shift of 31 bits if level is greater than that
++     * ammount. This will give 0 that if (!maxAllowedSize) is
++     * expecting.
++     */
++
++    if (level > 31)
++        level = 31;
++
+     WebGLsizei maxAllowedSize = maxTextureSize >> level;
+ 
+     if (!maxAllowedSize) {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-clear-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-clear-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-clear-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-clear-test.html	2014-05-09 22:59:27.157213391 +0400
+@@ -33,7 +33,7 @@
+   else
+     renderBackup(canvas);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-alpha-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-alpha-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-alpha-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-alpha-test.html	2014-05-09 22:59:27.157213391 +0400
+@@ -85,7 +85,7 @@
+   else
+     renderBackup(canvas, value, alpha);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-color-test.html	2014-05-09 22:59:27.157213391 +0400
+@@ -69,7 +69,7 @@
+   else
+     renderBackup(canvas);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-disable-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-disable-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-disable-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-disable-test.html	2014-05-09 22:59:27.158213393 +0400
+@@ -44,7 +44,7 @@
+   else
+     renderBackup(canvas);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-fb-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-fb-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-fb-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-fb-test.html	2014-05-09 22:59:27.158213393 +0400
+@@ -42,7 +42,7 @@
+   else
+     renderBackup(canvas);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-scissor-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-scissor-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-scissor-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-hanging-scissor-test.html	2014-05-09 22:59:27.158213393 +0400
+@@ -41,7 +41,7 @@
+   else
+     renderBackup(canvas);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-orientation-test.html seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-orientation-test.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-orientation-test.html	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-orientation-test.html	2014-05-09 22:59:27.158213393 +0400
+@@ -44,7 +44,7 @@
+   else
+     renderBackup(canvas);
+ 
+-  rAF(testComplete);
++  waitForComposite(testComplete);
+ }
+ 
+ function testComplete() {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-utils.js seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-utils.js
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/canvas/test/reftest/webgl-utils.js	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/canvas/test/reftest/webgl-utils.js	2014-05-09 22:59:27.158213393 +0400
+@@ -66,3 +66,18 @@
+   var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame;
+   raf(func);
+ }
++
++var MAX_WAIT_FOR_COMPOSITE_DELAY_MS = 500;
++
++function waitForComposite(func) {
++  var isDone = false;
++  var doneFunc = function () {
++    if (isDone)
++      return;
++    isDone = true;
++    func();
++  };
++
++  rAF(doneFunc);
++  setTimeout(doneFunc, MAX_WAIT_FOR_COMPOSITE_DELAY_MS);
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.cpp	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.cpp	2014-05-09 22:59:27.159213394 +0400
+@@ -3293,7 +3293,7 @@
+ }
+ 
+ nsSize
+-nsGenericHTMLElement::GetWidthHeightForImage(imgIRequest *aImageRequest)
++nsGenericHTMLElement::GetWidthHeightForImage(nsRefPtr<imgRequestProxy>& aImageRequest)
+ {
+   nsSize size(0,0);
+ 
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.h seamonkey-2.21-esr5.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.h
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.h	2013-09-16 22:26:28.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/html/content/src/nsGenericHTMLElement.h	2014-05-09 22:59:27.159213394 +0400
+@@ -328,8 +328,10 @@
+ 
+   /**
+    * Get width and height, using given image request if attributes are unset.
++   * Pass a reference to the image request, since the method may change the
++   * value and we want to use the updated value.
+    */
+-  nsSize GetWidthHeightForImage(imgIRequest *aImageRequest);
++  nsSize GetWidthHeightForImage(nsRefPtr<imgRequestProxy>& aImageRequest);
+ 
+ public:
+   // Implementation for nsIContent
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/content/xbl/src/nsXBLBinding.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/content/xbl/src/nsXBLBinding.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/content/xbl/src/nsXBLBinding.cpp	2014-05-09 22:53:28.952213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/content/xbl/src/nsXBLBinding.cpp	2014-05-09 22:59:27.160213394 +0400
+@@ -1155,7 +1155,7 @@
+   if (!::JS_LookupPropertyWithFlags(cx, global, className.get(), 0, val.address()))
+     return NS_ERROR_OUT_OF_MEMORY;
+ 
+-  if (val.isObject()) {
++  if (val.isObject() && JS_GetClass(&val.toObject())->finalize == XBLFinalize) {
+     *aNew = false;
+     proto = &val.toObject();
+   } else {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/base/nsDocShell.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/base/nsDocShell.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/base/nsDocShell.cpp	2013-09-16 22:26:30.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/base/nsDocShell.cpp	2014-05-09 22:59:27.162213394 +0400
+@@ -8977,19 +8977,6 @@
+            sameExceptHashes && !newHash.IsEmpty());
+ 
+         if (doShortCircuitedLoad) {
+-            // Cancel an outstanding new-document load if this is a history
+-            // load.
+-            //
+-            // We can't cancel the oustanding load unconditionally, because if a
+-            // page does
+-            //   - load a.html
+-            //   - start loading b.html
+-            //   - load a.html#h
+-            // we break the web if we cancel the load of b.html.
+-            if (aSHEntry && mDocumentRequest) {
+-                mDocumentRequest->Cancel(NS_BINDING_ABORTED);
+-            }
+-
+             // Save the current URI; we need it if we fire a hashchange later.
+             nsCOMPtr<nsIURI> oldURI = mCurrentURI;
+ 
+@@ -9024,6 +9011,8 @@
+ 
+             mURIResultedInDocument = true;
+ 
++            nsCOMPtr<nsISHEntry> oldLSHE = mLSHE;
++
+             /* we need to assign mLSHE to aSHEntry right here, so that on History loads,
+              * SetCurrentURI() called from OnNewURI() will send proper
+              * onLocationChange() notifications to the browser to update
+@@ -9101,10 +9090,10 @@
+                 SetCurScrollPosEx(bx, by);
+             }
+ 
+-            /* Clear out mLSHE so that further anchor visits get
+-             * recorded in SH and SH won't misbehave. 
++            /* Restore the original LSHE if we were loading something
++             * while short-circuited load was initiated.
+              */
+-            SetHistoryEntry(&mLSHE, nullptr);
++            SetHistoryEntry(&mLSHE, oldLSHE);
+             /* Set the title for the SH entry for this target url. so that
+              * SH menus in go/back/forward buttons won't be empty for this.
+              */
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/test/navigation/Makefile.in seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/test/navigation/Makefile.in
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/test/navigation/Makefile.in	2013-09-16 22:26:30.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/test/navigation/Makefile.in	2014-05-09 22:59:27.163213394 +0400
+@@ -38,6 +38,7 @@
+ 		file_bug462076_3.html \
+ 		file_bug508537_1.html \
+ 		file_document_write_1.html \
++		file_fragment_handling_during_load.html \
+ 		file_static_and_dynamic_1.html \
+ 		frame0.html \
+ 		frame1.html \
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/test/navigation/file_fragment_handling_during_load.html seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/test/navigation/file_fragment_handling_during_load.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/test/navigation/file_fragment_handling_during_load.html	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/test/navigation/file_fragment_handling_during_load.html	2014-05-09 22:59:27.163213394 +0400
+@@ -0,0 +1,24 @@
++<html>
++  <head>
++    <script>
++      var timerID = 0;
++      function testDone() {
++        clearTimeout(timerID);
++        var l = document.body.firstChild.contentWindow.location.href;
++        opener.is(l, "data:text/html,bar", "Should have loaded a new document");
++        opener.nextTest();
++        window.close();
++      }
++      function test() {
++        var ifr = document.getElementsByTagName("iframe")[0];
++        ifr.onload = testDone;
++        ifr.contentWindow.location.hash = "b";
++        ifr.contentWindow.location.href = "data:text/html,bar";
++        history.back();
++        timerID = setTimeout(testDone, 2000);
++      }
++    </script>
++  </head>
++  <body onload="setTimeout(test, 0)"><iframe src="data:text/html,foo#a"></iframe>
++  </body>
++</html>
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/test/navigation/test_sessionhistory.html seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/test/navigation/test_sessionhistory.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/docshell/test/navigation/test_sessionhistory.html	2013-09-16 22:26:30.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/docshell/test/navigation/test_sessionhistory.html	2014-05-09 22:59:27.163213394 +0400
+@@ -26,7 +26,8 @@
+     "file_bug508537_1.html",         // Dynamic frames and forward-back
+     "file_document_write_1.html",    // Session history + document.write
+     "file_static_and_dynamic_1.html",// Static and dynamic frames and forward-back
+-    "file_bug534178.html"            // Session history transaction clean-up.
++    "file_bug534178.html",           // Session history transaction clean-up.
++    "file_fragment_handling_during_load.html"
+   ];
+ var testCount = 0; // Used by the test files.
+ 
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp	2013-09-16 22:26:31.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp	2014-05-09 22:59:27.164213394 +0400
+@@ -282,7 +282,8 @@
+         nsIXPConnect *xpc = nsContentUtils::XPConnect();
+ 
+         nsCOMPtr<nsIXPConnectJSObjectHolder> sandbox;
+-        rv = xpc->CreateSandbox(cx, principal, getter_AddRefs(sandbox));
++        // Important: Use a null principal here
++        rv = xpc->CreateSandbox(cx, nullptr, getter_AddRefs(sandbox));
+         NS_ENSURE_SUCCESS(rv, rv);
+ 
+         // The nsXPConnect sandbox API gives us a wrapper to the sandbox for
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py seamonkey-2.21-esr5.0/comm-release/mozilla/editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py	2013-09-16 22:26:33.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py	2014-05-09 22:59:27.164213394 +0400
+@@ -165,34 +165,34 @@
+       'tests':      [
+         { 'id':         'IIMG:url_TEXT-1_SC',
+           'rte1-id':    'a-insertimage-0',
+-          'desc':       'Insert image with URL "http://goo.gl/bar.png"',
+-          'value':      'http://goo.gl/bar.png',
++          'desc':       'Insert image with URL "bar.png"',
++          'value':      'bar.png',
+           'checkAttrs':  True,
+           'pad':        'foo^bar',
+-          'expected':   [ 'foo<img src="http://goo.gl/bar.png">|bar',
+-                          'foo<img src="http://goo.gl/bar.png">^bar' ] },
++          'expected':   [ 'foo<img src="bar.png">|bar',
++                          'foo<img src="bar.png">^bar' ] },
+ 
+         { 'id':         'IIMG:url_IMG-1_SO',
+           'desc':       'Change existing image to new URL, selection on <img>',
+-          'value':      'http://baz.com/quz.png',
++          'value':      'quz.png',
+           'checkAttrs':  True,
+-          'pad':        '<span>foo{<img src="http://goo.gl/bar.png">}bar</span>',
+-          'expected':   [ '<span>foo<img src="http://baz.com/quz.png"/>|bar</span>',
+-                          '<span>foo<img src="http://baz.com/quz.png"/>^bar</span>' ] },
++          'pad':        '<span>foo{<img src="bar.png">}bar</span>',
++          'expected':   [ '<span>foo<img src="quz.png"/>|bar</span>',
++                          '<span>foo<img src="quz.png"/>^bar</span>' ] },
+ 
+         { 'id':         'IIMG:url_SPAN-IMG-1_SO',
+           'desc':       'Change existing image to new URL, selection in text surrounding <img>',
+-          'value':      'http://baz.com/quz.png',
++          'value':      'quz.png',
+           'checkAttrs':  True,
+-          'pad':        'foo[<img src="http://goo.gl/bar.png">]bar',
+-          'expected':   [ 'foo<img src="http://baz.com/quz.png"/>|bar',
+-                          'foo<img src="http://baz.com/quz.png"/>^bar' ] },
++          'pad':        'foo[<img src="bar.png">]bar',
++          'expected':   [ 'foo<img src="quz.png"/>|bar',
++                          'foo<img src="quz.png"/>^bar' ] },
+ 
+         { 'id':         'IIMG:._SPAN-IMG-1_SO',
+           'desc':       'Remove existing image or URL, selection on <img>',
+           'value':      '',
+           'checkAttrs':  True,
+-          'pad':        '<span>foo{<img src="http://goo.gl/bar.png">}bar</span>',
++          'pad':        '<span>foo{<img src="bar.png">}bar</span>',
+           'expected':   [ '<span>foo^bar</span>',
+                           '<span>foo<img>|bar</span>',
+                           '<span>foo<img>^bar</span>',
+@@ -203,7 +203,7 @@
+           'desc':       'Remove existing image or URL, selection in text surrounding <img>',
+           'value':      '',
+           'checkAttrs':  True,
+-          'pad':        'foo[<img src="http://goo.gl/bar.png">]bar',
++          'pad':        'foo[<img src="bar.png">]bar',
+           'expected':   [ 'foo^bar',
+                           'foo<img>|bar',
+                           'foo<img>^bar',
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/extensions/spellcheck/hunspell/src/hunspell_alloc_hooks.h seamonkey-2.21-esr5.0/comm-release/mozilla/extensions/spellcheck/hunspell/src/hunspell_alloc_hooks.h
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/extensions/spellcheck/hunspell/src/hunspell_alloc_hooks.h	2013-09-16 22:26:33.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/extensions/spellcheck/hunspell/src/hunspell_alloc_hooks.h	2014-05-09 22:59:27.164213394 +0400
+@@ -84,7 +84,7 @@
+   void* result = moz_realloc(ptr, size);
+   if (result) {
+     HunspellReportMemoryAllocation(result);
+-  } else {
++  } else if (size != 0) {
+     // realloc failed;  undo the HunspellReportMemoryDeallocation from above
+     HunspellReportMemoryAllocation(ptr);
+   }
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/gfx/qcms/iccread.c seamonkey-2.21-esr5.0/comm-release/mozilla/gfx/qcms/iccread.c
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/gfx/qcms/iccread.c	2013-09-16 22:26:34.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/gfx/qcms/iccread.c	2014-05-09 22:59:27.164213394 +0400
+@@ -1007,6 +1007,9 @@
+ 	source.size = size;
+ 	source.valid = true;
+ 
++	if (size < 4)
++		return INVALID_PROFILE;
++
+ 	length = read_u32(src, 0);
+ 	if (length <= size) {
+ 		// shrink the area that we can read if appropriate
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/gfx/thebes/gfxAndroidPlatform.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/gfx/thebes/gfxAndroidPlatform.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/gfx/thebes/gfxAndroidPlatform.cpp	2013-09-16 22:26:35.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/gfx/thebes/gfxAndroidPlatform.cpp	2014-05-09 22:59:27.187213394 +0400
+@@ -71,7 +71,7 @@
+     void *pnew = realloc(p, new_size);
+     if (pnew) {
+         sFreetypeMemoryUsed += FreetypeMallocSizeOfOnAlloc(pnew);
+-    } else {
++    } else if (new_size != 0) {
+         // realloc failed;  undo the decrement from above
+         sFreetypeMemoryUsed += FreetypeMallocSizeOfOnAlloc(p);
+     }
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/image/src/Decoder.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/image/src/Decoder.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/image/src/Decoder.cpp	2014-05-09 22:53:29.335213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/image/src/Decoder.cpp	2014-05-09 22:59:27.187213394 +0400
+@@ -154,7 +154,7 @@
+       }
+     }
+ 
+-    bool usable = true;
++    bool usable = !HasDecoderError();
+     if (aShutdownIntent != RasterImage::eShutdownIntent_NotNeeded && !HasDecoderError()) {
+       // If we only have a data error, we're usable if we have at least one complete frame.
+       if (GetCompleteFrameCount() == 0) {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/image/src/RasterImage.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/image/src/RasterImage.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/image/src/RasterImage.cpp	2014-05-09 22:53:29.336213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/image/src/RasterImage.cpp	2014-05-09 22:59:27.187213394 +0400
+@@ -3398,6 +3398,11 @@
+   if (aImg->mError)
+     return NS_OK;
+ 
++  // If there is an error worker pending (say because the main thread has enqueued
++  // another decode request for us before processing the error worker) then bail out.
++  if (aImg->mPendingError)
++    return NS_OK;
++
+   // If mDecoded or we don't have a decoder, we must have finished already (for
+   // example, a synchronous decode request came while the worker was pending).
+   if (!aImg->mDecoder || aImg->mDecoded)
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/config/milestone.txt seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/config/milestone.txt
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/config/milestone.txt	2014-05-09 22:53:29.337213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/config/milestone.txt	2014-05-09 22:59:27.188213394 +0400
+@@ -10,4 +10,4 @@
+ # hardcoded milestones in the tree from these two files.
+ #--------------------------------------------------------
+ 
+-24.4.0
++24.5.0
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/gc/RootMarking.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/gc/RootMarking.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/gc/RootMarking.cpp	2013-09-16 22:26:39.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/gc/RootMarking.cpp	2014-05-09 22:59:27.188213394 +0400
+@@ -744,7 +744,7 @@
+ #endif
+ 
+     for (CompartmentsIter c(rt); !c.done(); c.next())
+-        c->mark(trc);
++        c->markRoots(trc);
+ 
+     /* The embedding can register additional roots here. */
+     for (size_t i = 0; i < rt->gcBlackRootTracers.length(); i++) {
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/gc/Zone.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/gc/Zone.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/gc/Zone.cpp	2014-05-09 22:53:28.819213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/gc/Zone.cpp	2014-05-09 22:59:27.188213394 +0400
+@@ -23,7 +23,6 @@
+ JS::Zone::Zone(JSRuntime *rt)
+   : rt(rt),
+     allocator(this),
+-    hold(false),
+     ionUsingBarriers_(false),
+     active(false),
+     gcScheduled(false),
+@@ -227,3 +226,13 @@
+     }
+ #endif
+ }
++
++bool
++Zone::hasMarkedCompartments()
++{
++    for (CompartmentsInZoneIter comp(this); !comp.done(); comp.next()) {
++        if (comp->marked)
++            return true;
++    }
++    return false;
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/gc/Zone.h seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/gc/Zone.h
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/gc/Zone.h	2014-05-09 22:53:28.819213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/gc/Zone.h	2014-05-09 22:59:27.188213394 +0400
+@@ -108,8 +108,6 @@
+ 
+     js::CompartmentVector        compartments;
+ 
+-    bool                         hold;
+-
+   private:
+     bool                         ionUsingBarriers_;
+ 
+@@ -300,6 +298,8 @@
+ 
+     void sweep(js::FreeOp *fop, bool releaseTypes);
+ 
++    bool hasMarkedCompartments();
++
+   private:
+     void sweepBreakpoints(js::FreeOp *fop);
+ };
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/CodeGenerator.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/CodeGenerator.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/CodeGenerator.cpp	2014-05-09 22:53:29.203213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/CodeGenerator.cpp	2014-05-09 22:59:27.190213394 +0400
+@@ -91,6 +91,9 @@
+ bool
+ CodeGeneratorShared::addCache(LInstruction *lir, size_t cacheIndex)
+ {
++    if (cacheIndex == SIZE_MAX)
++        return false;
++
+     IonCache *cache = static_cast<IonCache *>(getCache(cacheIndex));
+     MInstruction *mir = lir->mirRaw()->toInstruction();
+     if (mir->resumePoint())
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/Ion.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/Ion.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/Ion.cpp	2014-05-09 22:53:28.823213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/Ion.cpp	2014-05-09 22:59:27.190213394 +0400
+@@ -2044,6 +2044,8 @@
+         // in case anyone tries to read it.
+         ionScript->purgeCaches(script->zone());
+ 
++        ionScript->detachDependentAsmJSModules(fop);
++
+         // This frame needs to be invalidated. We do the following:
+         //
+         // 1. Increment the reference counter to keep the ionScript alive
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/MIR.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/MIR.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/MIR.cpp	2014-05-09 22:53:29.205213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/MIR.cpp	2014-05-09 22:59:27.191213394 +0400
+@@ -2701,10 +2701,10 @@
+       case MIRType_String: {
+         // The property is a particular primitive type, guard by unboxing the
+         // value before the write.
+-        if ((*pvalue)->type() != MIRType_Value) {
+-            // The value is a different primitive, just do a VM call as it will
+-            // always trigger invalidation of the compiled code.
+-            JS_ASSERT((*pvalue)->type() != propertyType);
++        if (!(*pvalue)->mightBeType(propertyType)) {
++            // The value's type does not match the property type. Just do a VM
++            // call as it will always trigger invalidation of the compiled code.
++            JS_ASSERT_IF((*pvalue)->type() != MIRType_Value, (*pvalue)->type() != propertyType);
+             return false;
+         }
+         MInstruction *ins = MUnbox::New(*pvalue, propertyType, MUnbox::Fallible);
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/shared/CodeGenerator-shared.h seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/shared/CodeGenerator-shared.h
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jit/shared/CodeGenerator-shared.h	2013-09-16 22:26:40.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jit/shared/CodeGenerator-shared.h	2014-05-09 22:59:27.191213394 +0400
+@@ -203,6 +203,8 @@
+     template <typename T>
+     inline size_t allocateCache(const T &cache) {
+         size_t index = allocateCache(cache, sizeof(mozilla::AlignedStorage2<T>));
++        if (masm.oom())
++            return SIZE_MAX;
+         // Use the copy constructor on the allocated space.
+         new (&runtimeData_[cacheList_.back()]) T(cache);
+         return index;
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jsapi.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jsapi.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jsapi.cpp	2014-05-09 22:53:28.826213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jsapi.cpp	2014-05-09 22:59:27.192213394 +0400
+@@ -3171,23 +3171,32 @@
+     return JS_TRUE;
+ }
+ 
+-class AutoHoldZone
++class AutoCompartmentRooter : private JS::CustomAutoRooter
+ {
+   public:
+-    explicit AutoHoldZone(Zone *zone
++    explicit AutoCompartmentRooter(JSContext *cx, JSCompartment *comp
+                           MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
+-      : holdp(&zone->hold)
++      : CustomAutoRooter(cx), compartment(comp)
+     {
+         MOZ_GUARD_OBJECT_NOTIFIER_INIT;
+-        *holdp = true;
+     }
+ 
+-    ~AutoHoldZone() {
+-        *holdp = false;
++    operator JSCompartment *() {
++        return compartment;
++    }
++
++    JSCompartment *operator->() {
++        return compartment;
++    }
++
++  protected:
++    virtual void trace(JSTracer *trc)
++    {
++        compartment->mark();
+     }
+ 
+   private:
+-    bool *holdp;
++    JSCompartment *compartment;
+     MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
+ };
+ 
+@@ -3209,7 +3218,7 @@
+     else
+         zone = ((JSObject *)options.zoneSpec)->zone();
+ 
+-    JSCompartment *compartment = NewCompartment(cx, zone, principals, options);
++    AutoCompartmentRooter compartment(cx, NewCompartment(cx, zone, principals, options));
+     if (!compartment)
+         return NULL;
+ 
+@@ -3218,8 +3227,6 @@
+         rt->systemZone->isSystem = true;
+     }
+ 
+-    AutoHoldZone hold(compartment->zone());
+-
+     Rooted<GlobalObject *> global(cx);
+     {
+         AutoCompartment ac(cx, compartment);
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jscompartment.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jscompartment.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jscompartment.cpp	2013-09-16 22:26:40.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jscompartment.cpp	2014-05-09 22:59:27.193213394 +0400
+@@ -488,7 +488,7 @@
+ }
+ 
+ void
+-JSCompartment::mark(JSTracer *trc)
++JSCompartment::markRoots(JSTracer *trc)
+ {
+ #ifdef JS_ION
+     if (ionCompartment_)
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jscompartment.h seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jscompartment.h
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jscompartment.h	2013-09-16 22:26:40.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jscompartment.h	2014-05-09 22:59:27.193213394 +0400
+@@ -293,7 +293,7 @@
+         WrapperEnum(JSCompartment *c) : js::WrapperMap::Enum(c->crossCompartmentWrappers) {}
+     };
+ 
+-    void mark(JSTracer *trc);
++    void markRoots(JSTracer *trc);
+     bool isDiscardingJitCode(JSTracer *trc);
+     void sweep(js::FreeOp *fop, bool releaseTypes);
+     void sweepCrossCompartmentWrappers();
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jsgc.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jsgc.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/src/jsgc.cpp	2014-05-09 22:53:28.829213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/src/jsgc.cpp	2014-05-09 22:59:27.194213394 +0400
+@@ -2541,8 +2541,10 @@
+     while (read < end) {
+         Zone *zone = *read++;
+ 
+-        if (!zone->hold && zone->wasGCStarted()) {
+-            if (zone->allocator.arenas.arenaListsAreEmpty() || lastGC) {
++        if (zone->wasGCStarted()) {
++            if ((zone->allocator.arenas.arenaListsAreEmpty() && !zone->hasMarkedCompartments()) ||
++                lastGC)
++            {
+                 zone->allocator.arenas.checkEmptyFreeLists();
+                 if (callback)
+                     callback(zone);
+@@ -2723,7 +2725,7 @@
+         }
+ 
+         zone->scheduledForDestruction = false;
+-        zone->maybeAlive = zone->hold;
++        zone->maybeAlive = false;
+         zone->setPreservingCode(false);
+     }
+ 
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/js/xpconnect/loader/mozJSComponentLoader.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/js/xpconnect/loader/mozJSComponentLoader.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/js/xpconnect/loader/mozJSComponentLoader.cpp	2013-09-16 22:26:43.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/js/xpconnect/loader/mozJSComponentLoader.cpp	2014-05-09 22:59:27.195213394 +0400
+@@ -614,7 +614,9 @@
+       MOZ_CRASH();
+   }
+ 
++  if (js::GetObjectJSClass(aThisObject) == &kFakeBackstagePassJSClass) {
+   mThisObjects.Put(aScript, aThisObject);
++  }
+ }
+ 
+ // Some stack based classes for cleaning up on early return
+@@ -1024,7 +1026,10 @@
+         MOZ_ASSERT(tableScript);
+     }
+ 
++    if (js::GetObjectJSClass(obj) == &kFakeBackstagePassJSClass) {
++        MOZ_ASSERT(mReuseLoaderGlobal);
+     mThisObjects.Put(tableScript, obj);
++    }
+ 
+     uint32_t oldopts = JS_GetOptions(cx);
+     JS_SetOptions(cx, oldopts | (aPropagateExceptions ? JSOPTION_DONT_REPORT_UNCAUGHT : 0));
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/layout/generic/crashtests/455407.html seamonkey-2.21-esr5.0/comm-release/mozilla/layout/generic/crashtests/455407.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/layout/generic/crashtests/455407.html	2013-09-16 22:26:44.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/layout/generic/crashtests/455407.html	1970-01-01 03:00:00.000000000 +0300
+@@ -1,13 +0,0 @@
+-<html>
+-<head>Crash [@ nsSubDocumentFrame::Reflow] with generated content and resizing iframe</title>
+-</head>
+-<body>
+-<iframe id="content" src="data:text/html;charset=utf-8,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody%3E%0A%3Cstyle%20id%3D%22e%22%3Ebody%3A%3Abefore%20%7B%20content%3A%22b%22%3B%20%7D%3C/style%3E%0A%3Cscript%3Ewindow.frameElement.style.width%3DMath.floor%28Math.random%28%29*100%29+%27%25%27%3B%0A%3C/script%3E%0A%3Ciframe%20src%3D%22http%3A//mozilla.org%22%3E%3C/iframe%3E%0A%3C/body%3E%3C/html%3E" onload="//doe()" style=" width:1000px;height: 200px;"></iframe>
+-<script>
+-function doe() {
+-  document.getElementById('content').src = document.getElementById('content').src + '?1';
+-}
+-setInterval(doe, 1000);
+-</script>
+-</body>
+-</html>
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/layout/generic/crashtests/crashtests.list seamonkey-2.21-esr5.0/comm-release/mozilla/layout/generic/crashtests/crashtests.list
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/layout/generic/crashtests/crashtests.list	2013-09-16 22:26:44.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/layout/generic/crashtests/crashtests.list	2014-05-09 22:59:27.242213394 +0400
+@@ -292,7 +292,6 @@
+ load 455171-1.html
+ load 455171-2.html
+ load 455171-3.html
+-load 455407.html
+ load 455643-1.xhtml
+ load 457375.html
+ load 457380-1.html
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/layout/reftests/bugs/163504-1-inner.html seamonkey-2.21-esr5.0/comm-release/mozilla/layout/reftests/bugs/163504-1-inner.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/layout/reftests/bugs/163504-1-inner.html	2013-09-16 22:26:45.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/layout/reftests/bugs/163504-1-inner.html	2014-05-09 22:59:27.243213394 +0400
+@@ -5,13 +5,14 @@
+ <style type="text/css">
+ html, body { height: 100%; }
+ div { height: 3%; }
++img { image-rendering: -moz-crisp-edges; }
+ </style>
+ </head>
+ <body>
+ 
+-<div><img src="mozilla-banner.gif" width="100" style="height: 50%"></div>
+-<div><img src="mozilla-banner.gif" width="2" style="min-height: 50%"></div>
+-<div><img src="mozilla-banner.gif" width="100" style="max-height: 50%"></div>
++<div><img src="blue-600x58.png" width="100" style="height: 50%"></div>
++<div><img src="blue-600x58.png" width="2" style="min-height: 50%"></div>
++<div><img src="blue-600x58.png" width="100" style="max-height: 50%"></div>
+ 
+ <div><span style="position:relative; top: 30%">text</span></div>
+ <div><span style="position:relative; bottom: 30%">text</span></div>
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/layout/reftests/bugs/163504-2-inner.html seamonkey-2.21-esr5.0/comm-release/mozilla/layout/reftests/bugs/163504-2-inner.html
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/layout/reftests/bugs/163504-2-inner.html	2013-09-16 22:26:45.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/layout/reftests/bugs/163504-2-inner.html	2014-05-09 22:59:27.243213394 +0400
+@@ -5,13 +5,14 @@
+ <style type="text/css">
+ html, body { height: 100%; }
+ div { height: 3%; }
++img { image-rendering: -moz-crisp-edges; }
+ </style>
+ </head>
+ <body>
+ 
+-<div><span><img src="mozilla-banner.gif" width="100" style="height: 50%"></span></div>
+-<div><span><img src="mozilla-banner.gif" width="2" style="min-height: 50%"></span></div>
+-<div><span><img src="mozilla-banner.gif" width="100" style="max-height: 50%"></span></div>
++<div><span><img src="blue-600x58.png" width="100" style="height: 50%"></span></div>
++<div><span><img src="blue-600x58.png" width="2" style="min-height: 50%"></span></div>
++<div><span><img src="blue-600x58.png" width="100" style="max-height: 50%"></span></div>
+ 
+ <div><span><span style="position:relative; top: 30%">text</span></span></div>
+ <div><span><span style="position:relative; bottom: 30%">text</span></span></div>
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/netwerk/base/src/nsStandardURL.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/netwerk/base/src/nsStandardURL.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/netwerk/base/src/nsStandardURL.cpp	2014-05-09 22:53:29.601213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/netwerk/base/src/nsStandardURL.cpp	2014-05-09 22:59:27.244213394 +0400
+@@ -1476,7 +1476,14 @@
+         len = flat.Length();
+ 
+     if (mHost.mLen < 0) {
+-        mHost.mPos = mAuthority.mPos;
++        int port_length = 0;
++        if (mPort != -1) {
++            nsAutoCString buf;
++            buf.Assign(':');
++            buf.AppendInt(mPort);
++            port_length = buf.Length();
++        }
++        mHost.mPos = mAuthority.mPos + mAuthority.mLen - port_length;
+         mHost.mLen = 0;
+     }
+ 
+@@ -1520,7 +1527,7 @@
+         nsAutoCString buf;
+         buf.Assign(':');
+         buf.AppendInt(port);
+-        mSpec.Insert(buf, mHost.mPos + mHost.mLen);
++        mSpec.Insert(buf, mAuthority.mPos + mAuthority.mLen);
+         mAuthority.mLen += buf.Length();
+         ShiftFromPath(buf.Length());
+     }
+@@ -1528,9 +1535,14 @@
+         // Don't allow mPort == mDefaultPort
+         port = -1;
+ 
++        // compute length of the current port
++        nsAutoCString buf;
++        buf.Assign(':');
++        buf.AppendInt(mPort);
++
+         // need to remove the port number from the URL spec
+-        uint32_t start = mHost.mPos + mHost.mLen;
+-        int32_t lengthToCut = mPath.mPos - start;
++        uint32_t start = mAuthority.mPos + mAuthority.mLen - buf.Length();
++        int32_t lengthToCut = buf.Length();
+         mSpec.Cut(start, lengthToCut);
+         mAuthority.mLen -= lengthToCut;
+         ShiftFromPath(-lengthToCut);
+@@ -1538,9 +1550,13 @@
+     else {
+         // need to replace the existing port
+         nsAutoCString buf;
++        buf.Assign(':');
++        buf.AppendInt(mPort);
++        uint32_t start = mAuthority.mPos + mAuthority.mLen - buf.Length();
++        uint32_t length = buf.Length();
++
++        buf.Assign(':');
+         buf.AppendInt(port);
+-        uint32_t start = mHost.mPos + mHost.mLen + 1;
+-        uint32_t length = mPath.mPos - start;
+         mSpec.Replace(start, length, buf);
+         if (buf.Length() != length) {
+             mAuthority.mLen += buf.Length() - length;
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/netwerk/dns/nsHostResolver.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/netwerk/dns/nsHostResolver.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/netwerk/dns/nsHostResolver.cpp	2013-09-16 22:26:54.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/netwerk/dns/nsHostResolver.cpp	2014-05-09 22:59:27.245213394 +0400
+@@ -549,6 +549,9 @@
+                 // For entries that are in the grace period with a failed connect,
+                 // or all cached negative entries, use the cache but start a new lookup in
+                 // the background
++                {
++                    MutexAutoLock lock(he->rec->addr_info_lock);
++
+                 if ((((TimeStamp::NowLoRes() > he->rec->expiration) &&
+                       he->rec->mBlacklistedItems.Length()) ||
+                      he->rec->negative) && !he->rec->resolving) {
+@@ -563,6 +566,7 @@
+                                               METHOD_RENEWAL);
+                     }
+                 }
++                }
+                 
+                 if (he->rec->negative) {
+                     Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.errors seamonkey-2.21-esr5.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.errors
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.errors	2014-05-09 22:53:29.602213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.errors	2014-05-09 22:59:27.245213394 +0400
+@@ -1,3 +1,4 @@
++admin.google.com: did not receive HSTS header
+ alpha.irccloud.com: could not connect to host
+ api.mega.co.nz: could not connect to host
+ api.recurly.com: did not receive HSTS header
+@@ -10,7 +11,6 @@
+ bigshinylock.minazo.net: could not connect to host
+ blacklane.com: did not receive HSTS header
+ braintreegateway.com: did not receive HSTS header
+-braintreepayments.com: did not receive HSTS header
+ browserid.org: did not receive HSTS header
+ business.medbank.com.mt: did not receive HSTS header
+ carlolly.co.uk: did not receive HSTS header
+@@ -27,13 +27,14 @@
+ csawctf.poly.edu: did not receive HSTS header
+ dl.google.com: did not receive HSTS header
+ docs.google.com: did not receive HSTS header
++donmez.ws: could not connect to host
+ drive.google.com: did not receive HSTS header
+ dropcam.com: did not receive HSTS header
+ email.lookout.com: could not connect to host
+ emailprivacytester.com: did not receive HSTS header
+ encrypted.google.com: did not receive HSTS header
++errors.zenpayroll.com: could not connect to host
+ espra.com: could not connect to host
+-factor.cc: could not connect to host
+ fatzebra.com.au: did not receive HSTS header
+ fj.simple.com: did not receive HSTS header
+ get.zenpayroll.com: did not receive HSTS header
+@@ -44,6 +45,7 @@
+ goto.google.com: did not receive HSTS header
+ greplin.com: did not receive HSTS header
+ groups.google.com: did not receive HSTS header
++haste.ch: could not connect to host
+ history.google.com: did not receive HSTS header
+ hostedtalkgadget.google.com: did not receive HSTS header
+ id.atlassian.com: did not receive HSTS header
+@@ -62,15 +64,13 @@
+ medium.com: max-age too low: 2592000
+ my.alfresco.com: did not receive HSTS header
+ mydigipass.com: did not receive HSTS header
++mykolab.com: did not receive HSTS header
+ neonisi.com: could not connect to host
++nexth.de: could not connect to host
++nexth.net: did not receive HSTS header
++nexth.us: could not connect to host
+ openshift.redhat.com: did not receive HSTS header
+ ottospora.nl: could not connect to host
+-passport.yandex.by: did not receive HSTS header
+-passport.yandex.com: did not receive HSTS header
+-passport.yandex.com.tr: did not receive HSTS header
+-passport.yandex.kz: did not receive HSTS header
+-passport.yandex.ru: did not receive HSTS header
+-passport.yandex.ua: did not receive HSTS header
+ paypal.com: max-age too low: 14400
+ payroll.xero.com: max-age too low: 3600
+ platform.lookout.com: could not connect to host
+@@ -88,10 +88,15 @@
+ simon.butcher.name: max-age too low: 2629743
+ sites.google.com: did not receive HSTS header
+ sol.io: could not connect to host
++souyar.de: could not connect to host
++souyar.net: did not receive HSTS header
++souyar.us: could not connect to host
+ spreadsheets.google.com: did not receive HSTS header
+ square.com: did not receive HSTS header
+ ssl.google-analytics.com: did not receive HSTS header
+ ssl.panoramio.com: did not receive HSTS header
++stage.wepay.com: max-age too low: 2592000
++static.wepay.com: did not receive HSTS header
+ sunshinepress.org: could not connect to host
+ surfeasy.com: did not receive HSTS header
+ talk.google.com: did not receive HSTS header
+@@ -100,6 +105,7 @@
+ uprotect.it: could not connect to host
+ wallet.google.com: did not receive HSTS header
+ webmail.mayfirst.org: did not receive HSTS header
++wepay.com: max-age too low: 2592000
+ whonix.org: did not receive HSTS header
+ www.cueup.com: did not receive HSTS header
+ www.developer.mydigipass.com: could not connect to host
+@@ -116,6 +122,8 @@
+ www.neonisi.com: could not connect to host
+ www.paycheckrecords.com: max-age too low: 86400
+ www.paypal.com: max-age too low: 14400
++www.roddis.net: did not receive HSTS header
+ www.sandbox.mydigipass.com: could not connect to host
+ www.surfeasy.com: did not receive HSTS header
+-zoo24.de: did not receive HSTS header
++www.wepay.com: max-age too low: 2592000
++zoo24.de: max-age too low: 2592000
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.inc seamonkey-2.21-esr5.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.inc
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.inc	2014-05-09 22:53:29.602213777 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/security/manager/boot/src/nsSTSPreloadList.inc	2014-05-09 22:59:27.245213394 +0400
+@@ -8,7 +8,7 @@
+ /*****************************************************************************/
+ 
+ #include "mozilla/StandardInteger.h"
+-const PRTime gPreloadListExpirationTime = INT64_C(1405764355403000);
++const PRTime gPreloadListExpirationTime = INT64_C(1408788322005000);
+ 
+ class nsSTSPreload
+ {
+@@ -20,6 +20,8 @@
+ static const nsSTSPreload kSTSPreloadList[] = {
+   { "accounts.google.com", true },
+   { "aclu.org", false },
++  { "activiti.alfresco.com", false },
++  { "adsfund.org", true },
+   { "aladdinschools.appspot.com", false },
+   { "alpha.irccloud.com", false },
+   { "api.intercom.io", false },
+@@ -36,12 +38,14 @@
+   { "blog.lookout.com", false },
+   { "blog.torproject.org", false },
+   { "boxcryptor.com", true },
++  { "braintreepayments.com", false },
+   { "bugzilla.mozilla.org", true },
+   { "business.lookout.com", false },
+   { "calyxinstitute.org", false },
+   { "carezone.com", false },
+   { "check.torproject.org", false },
+   { "chromiumcodereview.appspot.com", false },
++  { "cloudcert.org", true },
+   { "cloudns.com.au", true },
+   { "cloudsecurityalliance.org", true },
+   { "codereview.appspot.com", false },
+@@ -59,17 +63,22 @@
+   { "dist.torproject.org", false },
+   { "dm.lookout.com", false },
+   { "dm.mylookout.com", false },
++  { "docs.python.org", true },
+   { "download.jitsi.org", false },
+   { "ebanking.indovinabank.com.vn", false },
+   { "ecosystem.atlassian.net", true },
+   { "eff.org", true },
++  { "encircleapp.com", true },
+   { "entropia.de", false },
+   { "epoxate.com", false },
+   { "errors.zenpayroll.com", false },
+   { "espra.com", true },
+   { "f-droid.org", true },
+   { "factor.cc", false },
++  { "fairbill.com", true },
+   { "faq.lookout.com", false },
++  { "feedbin.com", false },
++  { "fiken.no", true },
+   { "forum.linode.com", false },
+   { "forum.quantifiedself.com", true },
+   { "gernert-server.de", true },
+@@ -80,11 +89,14 @@
+   { "grc.com", false },
+   { "grepular.com", true },
+   { "haste.ch", true },
++  { "heha.co", true },
+   { "howrandom.org", true },
+   { "id.mayfirst.org", false },
+   { "inertianetworks.com", true },
+   { "intercom.io", false },
+   { "itriskltd.com", true },
++  { "keeperapp.com", true },
++  { "keepersecurity.com", true },
+   { "keyerror.com", true },
+   { "kinsights.com", false },
+   { "lastpass.com", false },
+@@ -109,6 +121,7 @@
+   { "manager.linode.com", false },
+   { "matteomarescotti.name", true },
+   { "mattmccutchen.net", true },
++  { "mbp.banking.co.at", false },
+   { "mediacru.sh", true },
+   { "mega.co.nz", false },
+   { "members.mayfirst.org", false },
+@@ -117,15 +130,23 @@
+   { "mudcrab.us", true },
+   { "my.onlime.ch", false },
+   { "my.xero.com", false },
+-  { "mykolab.com", true },
+   { "mylookout.com", false },
+   { "neg9.org", false },
+   { "neilwynne.com", false },
++  { "onedrive.com", true },
++  { "onedrive.live.com", false },
+   { "oplop.appspot.com", true },
+   { "opsmate.com", false },
+   { "p.linode.com", false },
+   { "packagist.org", false },
++  { "passport.yandex.by", false },
++  { "passport.yandex.com", false },
++  { "passport.yandex.com.tr", false },
++  { "passport.yandex.kz", false },
++  { "passport.yandex.ru", false },
++  { "passport.yandex.ua", false },
+   { "passwd.io", true },
++  { "passwordbox.com", false },
+   { "paste.linode.com", false },
+   { "pastebin.linode.com", false },
+   { "pay.gigahost.dk", true },
+@@ -136,12 +157,17 @@
+   { "plus.google.com", false },
+   { "plus.sandbox.google.com", false },
+   { "publications.qld.gov.au", false },
++  { "pult.co", true },
++  { "pypi.python.org", true },
++  { "python.org", false },
+   { "riseup.net", true },
+   { "roddis.net", false },
+   { "romab.com", true },
+   { "roundcube.mayfirst.org", false },
+   { "sandbox.mydigipass.com", false },
+   { "securityheaders.com", true },
++  { "seifried.org", true },
++  { "semenkovich.com", true },
+   { "shodan.io", true },
+   { "silentcircle.com", false },
+   { "simbolo.co.uk", false },
+@@ -158,6 +184,7 @@
+   { "torproject.org", false },
+   { "twitter.com", false },
+   { "ubertt.org", true },
++  { "vmoagents.com", false },
+   { "webmail.gigahost.dk", false },
+   { "webmail.onlime.ch", false },
+   { "wiki.python.org", true },
+@@ -165,6 +192,7 @@
+   { "writeapp.me", false },
+   { "www.aclu.org", false },
+   { "www.apollo-auto.com", true },
++  { "www.banking.co.at", false },
+   { "www.braintreepayments.com", false },
+   { "www.calyxinstitute.org", false },
+   { "www.cyveillance.com", true },
+@@ -183,7 +211,7 @@
+   { "www.mylookout.com", false },
+   { "www.noisebridge.net", false },
+   { "www.opsmate.com", true },
+-  { "www.roddis.net", false },
++  { "www.python.org", true },
+   { "www.simbolo.co.uk", false },
+   { "www.simple.com", false },
+   { "www.therapynotes.com", false },
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/android_arm_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/android_arm_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/android_arm_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/android_arm_config.py	2014-05-09 22:59:27.245213394 +0400
+@@ -0,0 +1,37 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "suite_definitions": {
++        "mochitest": {
++            "run_filename": "runtestsremote.py",
++            "options": ["--autorun", "--close-when-done", "--dm_trans=sut",
++                "--console-level=INFO", "--app=%(app)s", "--remote-webserver=%(remote_webserver)s",
++                "--xre-path=%(xre_path)s", "--utility-path=%(utility_path)s",
++                "--deviceIP=%(device_ip)s", "--devicePort=%(device_port)s",
++                "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++                "--certificate-path=%(certs_path)s", "--symbols-path=%(symbols_path)s"
++            ],
++        },
++        "reftest": {
++            "run_filename": "remotereftest.py",
++            "options": [ "--app=%(app)s", "--ignore-window-size",
++                "--bootstrap", "--enable-privilege",
++                "--remote-webserver=%(remote_webserver)s", "--xre-path=%(xre_path)s",
++                "--utility-path=%(utility_path)s", "--deviceIP=%(device_ip)s",
++                "--devicePort=%(device_port)s", "--http-port=%(http_port)s",
++                "--ssl-port=%(ssl_port)s", "--httpd-path", "reftest/components",
++                "--symbols-path=%(symbols_path)s",
++            ],
++        },
++        "xpcshell": {
++            "run_filename": "remotexpcshelltests.py",
++            "options": ["--deviceIP=%(device_ip)s", "--devicePort=%(device_port)s",
++                "--xre-path=%(xre_path)s", "--testing-modules-dir=%(modules_dir)s",
++                "--apk=%(installer_path)s", "--no-logfiles",
++                "--symbols-path=%(symbols_path)s",
++            ],
++        },
++    }, # end suite_definitions
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/android_panda_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/android_panda_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/android_panda_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/android_panda_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,86 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "mochitest_options": [
++        "--deviceIP=%(device_ip)s",
++        "--xre-path=../hostutils/xre",
++        "--utility-path=../hostutils/bin", "--certificate-path=certs",
++        "--app=%(app_name)s", "--console-level=INFO",
++        "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++        "--run-only-tests=android.json", "--symbols-path=%(symbols_path)s"
++    ],
++    "reftest_options": [
++        "--deviceIP=%(device_ip)s",
++        "--xre-path=../hostutils/xre",
++        "--utility-path=../hostutils/bin",
++        "--app=%(app_name)s",
++        "--ignore-window-size", "--bootstrap",
++        "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++        "--symbols-path=%(symbols_path)s",
++        "reftest/tests/layout/reftests/reftest.list"
++    ],
++    "crashtest_options": [
++        "--deviceIP=%(device_ip)s",
++        "--xre-path=../hostutils/xre",
++        "--utility-path=../hostutils/bin",
++        "--app=%(app_name)s",
++        "--enable-privilege", "--ignore-window-size", "--bootstrap",
++        "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++        "--symbols-path=%(symbols_path)s",
++        "reftest/tests/testing/crashtest/crashtests.list"
++    ],
++    "jsreftest_options": [
++        "--deviceIP=%(device_ip)s",
++        "--xre-path=../hostutils/xre",
++        "--utility-path=../hostutils/bin",
++        "--app=%(app_name)s",
++        "--enable-privilege", "--ignore-window-size", "--bootstrap",
++        "--extra-profile-file=jsreftest/tests/user.js", "jsreftest/tests/jstests.list",
++        "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++        "--symbols-path=%(symbols_path)s"
++    ],
++    "robocop_options": [
++        "--deviceIP=%(device_ip)s",
++        "--xre-path=../hostutils/xre",
++        "--utility-path=../hostutils/bin",
++        "--certificate-path=certs",
++        "--app=%(app_name)s", "--console-level=INFO",
++        "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++        "--symbols-path=%(symbols_path)s",
++        "--robocop=mochitest/robocop.ini"
++    ],
++    "xpcshell_options": [
++        "--deviceIP=%(device_ip)s",
++        "--xre-path=../hostutils/xre",
++        "--manifest=xpcshell/tests/xpcshell_android.ini",
++        "--build-info-json=xpcshell/mozinfo.json",
++        "--testing-modules-dir=modules",
++        "--local-lib-dir=../fennec",
++        "--apk=../%(apk_name)s",
++        "--no-logfiles",
++        "--symbols-path=%(symbols_path)s"
++    ],
++    "jittest_options": [
++        "bin/js",
++        "--remote",
++        "-j", "1",
++        "--deviceTransport=sut",
++        "--deviceIP=%(device_ip)s",
++        "--localLib=../tests/bin",
++        "--no-slow",
++        "--no-progress",
++        "--tinderbox",
++        "--tbpl"
++     ],
++     "cppunittest_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--xre-path=tests/bin",
++        "--dm_trans=SUT",
++        "--deviceIP=%(device_ip)s",
++        "--localBinDir=../tests/bin",
++        "--apk=%(apk_path)s",
++        "--skip-manifest=../tests/cppunittests/android_cppunittest_manifest.txt"
++     ],
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/android_x86_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/android_x86_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/android_x86_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/android_x86_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,37 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "suite_definitions": {
++        "mochitest": {
++            "run_filename": "runtestsremote.py",
++            "options": ["--autorun", "--close-when-done", "--dm_trans=sut",
++                "--console-level=INFO", "--app=%(app)s", "--remote-webserver=%(remote_webserver)s",
++                "--xre-path=%(xre_path)s", "--utility-path=%(utility_path)s",
++                "--deviceIP=%(device_ip)s", "--devicePort=%(device_port)s",
++                "--http-port=%(http_port)s", "--ssl-port=%(ssl_port)s",
++                "--certificate-path=%(certs_path)s", "--symbols-path=%(symbols_path)s"
++            ],
++        },
++        "reftest": {
++            "run_filename": "remotereftest.py",
++            "options": [ "--app=%(app)s", "--ignore-window-size",
++                "--bootstrap", "--enable-privilege",
++                "--remote-webserver=%(remote_webserver)s", "--xre-path=%(xre_path)s",
++                "--utility-path=%(utility_path)s", "--deviceIP=%(device_ip)s",
++                "--devicePort=%(device_port)s", "--http-port=%(http_port)s",
++                "--ssl-port=%(ssl_port)s", "--httpd-path", "reftest/components",
++                "--symbols-path=%(symbols_path)s",
++            ],
++        },
++        "xpcshell": {
++            "run_filename": "remotexpcshelltests.py",
++            "options": ["--deviceIP=%(device_ip)s", "--devicePort=%(device_port)s",
++                "--xre-path=%(xre_path)s", "--testing-modules-dir=%(modules_dir)s",
++                "--apk=%(installer_path)s", "--no-logfiles",
++                "--symbols-path=%(symbols_path)s",
++            ],
++        },
++    }, # end suite_definitions
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/b2g_desktop_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/b2g_desktop_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/b2g_desktop_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/b2g_desktop_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,18 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "mochitest_options": [
++        "--console-level=INFO", "%(test_manifest)s",
++        "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s",
++        "--profile=%(gaia_profile)s", "--app=%(application)s", "--desktop",
++        "--utility-path=%(utility_path)s", "--certificate-path=%(cert_path)s",
++        "--symbols-path=%(symbols_path)s",
++    ],
++
++    "reftest_options": [
++        "--desktop", "--profile=%(gaia_profile)s", "--appname=%(application)s",
++        "--symbols-path=%(symbols_path)s", "%(test_manifest)s",
++    ]
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/b2g_emulator_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/b2g_emulator_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/b2g_emulator_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/b2g_emulator_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,48 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "jsreftest_options": [
++        "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s",
++        "--emulator-res=800x1000", "--logcat-dir=%(logcat_dir)s",
++        "--remote-webserver=%(remote_webserver)s", "--ignore-window-size",
++        "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s",
++        "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s",
++        "--extra-profile-file=jsreftest/tests/user.js",
++        "%(test_manifest)s",
++    ],
++
++    "mochitest_options": [
++        "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--console-level=INFO",
++        "--emulator=%(emulator)s", "--logcat-dir=%(logcat_dir)s",
++        "--remote-webserver=%(remote_webserver)s", "%(test_manifest)s",
++        "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s",
++        "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s",
++    ],
++
++    "reftest_options": [
++        "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s",
++        "--emulator-res=800x1000", "--logcat-dir=%(logcat_dir)s",
++        "--remote-webserver=%(remote_webserver)s", "--ignore-window-size",
++        "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s",
++        "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s",
++        "%(test_manifest)s",
++    ],
++
++    "crashtest_options": [
++        "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s",
++        "--emulator-res=800x1000", "--logcat-dir=%(logcat_dir)s",
++        "--remote-webserver=%(remote_webserver)s", "--ignore-window-size",
++        "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s",
++        "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s",
++        "%(test_manifest)s",
++    ],
++
++    "xpcshell_options": [
++        "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s",
++        "--logcat-dir=%(logcat_dir)s", "--manifest=%(test_manifest)s", "--use-device-libs",
++        "--testing-modules-dir=%(modules_dir)s", "--symbols-path=%(symbols_path)s",
++        "--busybox=%(busybox)s", "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s",
++    ],
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/linux_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/linux_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/linux_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/linux_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,34 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "reftest_options": [
++        "--appname=%(binary_path)s", "--utility-path=tests/bin",
++        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s"
++    ],
++    "mochitest_options": [
++        "--appname=%(binary_path)s", "--utility-path=tests/bin",
++        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s",
++        "--certificate-path=tests/certs", "--autorun", "--close-when-done",
++        "--console-level=INFO", "--setpref=webgl.force-enabled=true"
++    ],
++    "xpcshell_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--test-plugin-path=%(test_plugin_path)s"
++    ],
++    "cppunittest_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--xre-path=%(abs_app_dir)s"
++    ],
++    "jittest_options": [
++        "tests/bin/js",
++        "--no-slow",
++        "--no-progress",
++        "--tinderbox",
++        "--tbpl"
++    ],
++    "mozbase_options": [
++        "-b", "%(binary_path)s"
++    ],
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/mac_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/mac_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/mac_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/mac_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,34 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "reftest_options": [
++        "--appname=%(binary_path)s", "--utility-path=tests/bin",
++        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s"
++    ],
++    "mochitest_options": [
++        "--appname=%(binary_path)s", "--utility-path=tests/bin",
++        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s",
++        "--certificate-path=tests/certs", "--autorun", "--close-when-done",
++        "--console-level=INFO"
++    ],
++    "xpcshell_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--test-plugin-path=%(test_plugin_path)s"
++    ],
++    "cppunittest_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--xre-path=%(abs_app_dir)s"
++    ],
++    "jittest_options": [
++        "tests/bin/js",
++        "--no-slow",
++        "--no-progress",
++        "--tinderbox",
++        "--tbpl"
++    ],
++    "mozbase_options": [
++        "-b", "%(binary_path)s"
++    ],
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/windows_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/windows_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness/windows_config.py	1970-01-01 03:00:00.000000000 +0300
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness/windows_config.py	2014-05-09 22:59:27.246213394 +0400
+@@ -0,0 +1,34 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++config = {
++    "reftest_options": [
++        "--appname=%(binary_path)s", "--utility-path=tests/bin",
++        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s"
++    ],
++    "mochitest_options": [
++        "--appname=%(binary_path)s", "--utility-path=tests/bin",
++        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s",
++        "--certificate-path=tests/certs", "--autorun", "--close-when-done",
++        "--console-level=INFO"
++    ],
++    "xpcshell_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--test-plugin-path=%(test_plugin_path)s"
++    ],
++    "cppunittest_options": [
++        "--symbols-path=%(symbols_path)s",
++        "--xre-path=%(abs_app_dir)s"
++    ],
++    "jittest_options": [
++        "tests/bin/js",
++        "--no-slow",
++        "--no-progress",
++        "--tinderbox",
++        "--tbpl"
++    ],
++    "mozbase_options": [
++        "-b", "%(binary_path)s"
++    ],
++}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness_config.py seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness_config.py
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/config/mozharness_config.py	2013-09-16 22:26:58.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/config/mozharness_config.py	1970-01-01 03:00:00.000000000 +0300
+@@ -1,28 +0,0 @@
+-# This Source Code Form is subject to the terms of the Mozilla Public
+-# License, v. 2.0. If a copy of the MPL was not distributed with this
+-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-
+-"""The config defined in this module is read by mozharness, which is a
+-tool used to run many of the tests reporting to TBPL. This file is
+-primarily useful for pushing custom test harness configurations to try.
+-
+-For example you can define a custom mochitest configuration by adding:
+-    "mochitest_options": [
+-        "--appname=%(binary_path)s", "--utility-path=tests/bin",
+-        "--extra-profile-file=tests/bin/plugins", "--symbols-path=%(symbols_path)s",
+-        "--certificate-path=tests/certs", "--autorun", "--close-when-done",
+-        "--console-level=INFO", "--setpref=webgl.force-enabled=true"
+-    ],
+-
+-Be warned that these values will be picked up by all platforms and changing them
+-may result in unexpected behaviour. For example, the above will break B2G
+-mochitests.
+-
+-You must also provide the complete command line to avoid errors. The official
+-configuration files containing the default values live in:
+-    https://hg.mozilla.org/build/mozharness/configs
+-"""
+-
+-config = {
+-    # Add custom mozharness config options here
+-}
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/testing/testsuite-targets.mk seamonkey-2.21-esr5.0/comm-release/mozilla/testing/testsuite-targets.mk
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/testing/testsuite-targets.mk	2014-05-09 22:53:29.302213778 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/testing/testsuite-targets.mk	2014-05-09 22:59:27.248213394 +0400
+@@ -442,7 +442,8 @@
+ 	$(NSINSTALL) $(topsrcdir)/b2g/test/b2g-unittest-requirements.txt $(PKG_STAGE)/b2g
+ 
+ stage-config: make-stage-dir
+-	$(NSINSTALL) $(topsrcdir)/testing/config/mozharness_config.py $(PKG_STAGE)/config
++	$(NSINSTALL) -D $(PKG_STAGE)/config
++	@(cd $(topsrcdir)/testing/config && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/config && tar -xf -)
+ 
+ stage-mochitest: make-stage-dir
+ 	$(MAKE) -C $(DEPTH)/testing/mochitest stage-package
+diff -Nrbu seamonkey-2.21-esr4.0/comm-release/mozilla/toolkit/mozapps/update/common/updatehelper.cpp seamonkey-2.21-esr5.0/comm-release/mozilla/toolkit/mozapps/update/common/updatehelper.cpp
+--- seamonkey-2.21-esr4.0/comm-release/mozilla/toolkit/mozapps/update/common/updatehelper.cpp	2013-09-16 22:27:00.000000000 +0400
++++ seamonkey-2.21-esr5.0/comm-release/mozilla/toolkit/mozapps/update/common/updatehelper.cpp	2014-05-09 22:59:27.248213394 +0400
+@@ -23,6 +23,7 @@
+ #include "shlobj.h"
+ #include "updatehelper.h"
+ #include "pathhash.h"
++#include "mozilla/Scoped.h"
+ 
+ // Needed for PathAppendW
+ #include <shlwapi.h>
+@@ -216,26 +217,67 @@
+     CloseServiceHandle(manager);
+     return FALSE;
+   }
+-  CloseServiceHandle(svc);
+-  CloseServiceHandle(manager);
+ 
+   // If we reach here, then the service is installed, so
+   // proceed with upgrading it.
+ 
++  CloseServiceHandle(manager);
++
++  // The service exists and we opened it, get the config bytes needed
++  DWORD bytesNeeded;
++  if (!QueryServiceConfigW(svc, nullptr, 0, &bytesNeeded) &&
++      GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
++    CloseServiceHandle(svc);
++    return FALSE;
++  }
++
++  // Get the service config information, in particular we want the binary
++  // path of the service.
++  mozilla::ScopedDeleteArray<char> serviceConfigBuffer(new char[bytesNeeded]);
++  if (!QueryServiceConfigW(svc,
++      reinterpret_cast<QUERY_SERVICE_CONFIGW*>(serviceConfigBuffer.get()),
++      bytesNeeded, &bytesNeeded)) {
++    CloseServiceHandle(svc);
++    return FALSE;
++  }
++
++  CloseServiceHandle(svc);
++
++  QUERY_SERVICE_CONFIGW &serviceConfig =
++    *reinterpret_cast<QUERY_SERVICE_CONFIGW*>(serviceConfigBuffer.get());
++
++  PathUnquoteSpacesW(serviceConfig.lpBinaryPathName);
++
++  // Obtain the temp path of the maintenance service binary
++  WCHAR tmpService[MAX_PATH + 1] = { L'\0' };
++  if (!PathGetSiblingFilePath(tmpService, serviceConfig.lpBinaryPathName,
++                              L"maintenanceservice_tmp.exe")) {
++    return FALSE;
++  }
++
++  // Get the new maintenance service path from the install dir
++  WCHAR newMaintServicePath[MAX_PATH + 1] = { L'\0' };
++  wcsncpy(newMaintServicePath, installDir, MAX_PATH);
++  PathAppendSafe(newMaintServicePath,
++                 L"maintenanceservice.exe");
++
++  // Copy the temp file in alongside the maintenace service.
++  // This is a requirement for maintenance service upgrades.
++  if (!CopyFileW(newMaintServicePath, tmpService, FALSE)) {
++    return FALSE;
++  }
++
++  // Start the upgrade comparison process
++
+   STARTUPINFOW si = {0};
+   si.cb = sizeof(STARTUPINFOW);
+   // No particular desktop because no UI
+   si.lpDesktop = L"";
+   PROCESS_INFORMATION pi = {0};
+-
+-  WCHAR maintserviceInstallerPath[MAX_PATH + 1] = { L'\0' };
+-  wcsncpy(maintserviceInstallerPath, installDir, MAX_PATH);
+-  PathAppendSafe(maintserviceInstallerPath,
+-                 L"maintenanceservice_installer.exe");
+   WCHAR cmdLine[64] = { '\0' };
+-  wcsncpy(cmdLine, L"dummyparam.exe /Upgrade",
++  wcsncpy(cmdLine, L"dummyparam.exe upgrade",
+           sizeof(cmdLine) / sizeof(cmdLine[0]) - 1);
+-  BOOL svcUpdateProcessStarted = CreateProcessW(maintserviceInstallerPath,
++  BOOL svcUpdateProcessStarted = CreateProcessW(tmpService,
+                                                 cmdLine,
+                                                 NULL, NULL, FALSE,
+                                                 0,
diff --git a/seamonkey.spec b/seamonkey.spec
index a61ad20..7102e2c 100644
--- a/seamonkey.spec
+++ b/seamonkey.spec
@@ -25,7 +25,7 @@
 Name:           seamonkey
 Summary:        Web browser, e-mail, news, IRC client, HTML editor
 Version:        2.21
-Release:        5.ESR_24.4.0%{?dist}
+Release:        6.ESR_24.5.0%{?dist}
 URL:            http://www.mozilla.org/projects/seamonkey/
 License:        MPLv2.0
 Group:          Applications/Internet
@@ -67,6 +67,7 @@ Patch2411:	seamonkey-2.21-esr1.0-1.1.patch
 Patch2420:	seamonkey-2.21-esr1.1-2.0.patch
 Patch2430:	seamonkey-2.21-esr2.0-3.0.patch
 Patch2440:	seamonkey-2.21-esr3.0-4.0.patch
+Patch2450:	seamonkey-2.21-esr4.0-5.0.patch
 
 Buildroot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 %if %{with system_nspr}
@@ -152,6 +153,7 @@ cd %{sources_subdir}
 %patch2420 -p2 
 %patch2430 -p2
 %patch2440 -p2
+%patch2450 -p2
 
 pushd mozilla
 %patch1 -p2 -b .gcc47
@@ -508,6 +510,10 @@ fi
 
 
 %changelog
+* Fri May  9 2014 Dmitry Butskoy <Dmitry at Butskoy.name> 2.21-6.ESR_24.5.0
+- apply Extended Support Release patches, derived from the thunderbird
+  esr24.5.0 tree
+
 * Mon Mar 24 2014 Dmitry Butskoy <Dmitry at Butskoy.name> 2.21-5.ESR_24.4.0
 - apply Extended Support Release patches, derived from the thunderbird
   esr24.4.0 tree


More information about the scm-commits mailing list