[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