diff --git a/accessible/tests/mochitest/test_bug420863.html b/accessible/tests/mochitest/test_bug420863.html index 89f5ca5212e9..609b817b4dd1 100644 --- a/accessible/tests/mochitest/test_bug420863.html +++ b/accessible/tests/mochitest/test_bug420863.html @@ -94,7 +94,19 @@ gNode.removeEventListener("click", gClickHandler, false); // check actions - is(gAcc.numActions, 0, gID + ": shouldn't have actions"); + // XXX see bug 456347, sometimes after removing the event listener, the + // accessible is no longer valid. When fixing that bug, remove the + // try/exception and simply test for the gAcc.numActions value directly. + var numActions = -1; + try { + numActions = gAcc.numActions; + } catch(e) {} + + if (numActions == -1) + todo(false, + "gAcc.numActions should not throw after click handler was removed!"); + else + is(numActions, 0, gID + ": shouldn't have actions"); SimpleTest.finish(); } diff --git a/accessible/tests/mochitest/test_groupattrs.xul b/accessible/tests/mochitest/test_groupattrs.xul index 86e37940bf66..9a4944fa9c14 100644 --- a/accessible/tests/mochitest/test_groupattrs.xul +++ b/accessible/tests/mochitest/test_groupattrs.xul @@ -54,24 +54,26 @@ ////////////////////////////////////////////////////////////////////////// // xul:menu (bug 443881) - var menu1 = document.getElementById("menu_item1"); - menu1.open = true; - - window.setTimeout(function() { - var menu2 = document.getElementById("menu_item2"); - menu2.open = true; - - window.setTimeout(function() { - testGroupAttrs("menu_item1.1", "1", "1"); - testGroupAttrs("menu_item1.2", "1", "3"); - testGroupAttrs("menu_item1.4", "2", "3"); - testGroupAttrs("menu_item2", "3", "3"); - testGroupAttrs("menu_item2.1", "1", "2", "1"); - testGroupAttrs("menu_item2.2", "2", "2", "1"); - - SimpleTest.finish(); - }, 0); - }, 0); + if (navigator.platform == "Win32") { + var menu1 = document.getElementById("menu_item1"); + menu1.open = true; + + window.setTimeout(function() { + var menu2 = document.getElementById("menu_item2"); + menu2.open = true; + + window.setTimeout(function() { + testGroupAttrs("menu_item1.1", "1", "1"); + testGroupAttrs("menu_item1.2", "1", "3"); + testGroupAttrs("menu_item1.4", "2", "3"); + testGroupAttrs("menu_item2", "3", "3"); + testGroupAttrs("menu_item2.1", "1", "2", "1"); + testGroupAttrs("menu_item2.2", "2", "2", "1"); + + SimpleTest.finish(); + }, 0); + }, 0); + } ////////////////////////////////////////////////////////////////////////// // ARIA menu (bug 441888) @@ -79,6 +81,9 @@ testGroupAttrs("aria-menuitemcheckbox", "2", "3"); testGroupAttrs("aria-menuitemradio", "3", "3"); testGroupAttrs("aria-menuitem2", "1", "1"); + if (navigator.platform != "Win32") + SimpleTest.finish(); + } SimpleTest.waitForExplicitFinish(); diff --git a/accessible/tests/mochitest/test_nsIAccessibleImage.html b/accessible/tests/mochitest/test_nsIAccessibleImage.html index 911016a8aca1..d7ade2158351 100644 --- a/accessible/tests/mochitest/test_nsIAccessibleImage.html +++ b/accessible/tests/mochitest/test_nsIAccessibleImage.html @@ -75,8 +75,8 @@ parentAccHeight); is(parentAccX.value + parentX.value, screenX.value, "Wrong screen x coordinate for " + aID + "!"); - is(parentAccY.value + parentY.value, screenY.value, - "Wrong screen y coordinate for " + aID + "!"); +// XXX see bug 456344 is(parentAccY.value + parentY.value, screenY.value, +// "Wrong screen y coordinate for " + aID + "!"); } var width = {}, height = {}; diff --git a/accessible/tests/mochitest/test_nsIAccessibleTable_1.html b/accessible/tests/mochitest/test_nsIAccessibleTable_1.html index d176e9c110d8..5651c097e608 100644 --- a/accessible/tests/mochitest/test_nsIAccessibleTable_1.html +++ b/accessible/tests/mochitest/test_nsIAccessibleTable_1.html @@ -77,7 +77,8 @@ catch (e) { works = false; } - todo(works, "columnHeader should not throw"); + if (!works) + todo(works, "columnHeader should not throw"); var columnDescription; works = true; diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in index 66728c07e981..9a72e876b28e 100644 --- a/browser/app/Makefile.in +++ b/browser/app/Makefile.in @@ -72,7 +72,7 @@ GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBX DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) -DGRE_BUILDID=$(GRE_BUILDID) -SOURCE_STAMP := $(shell hg identify -i $(topsrcdir) 2>/dev/null) +SOURCE_STAMP := $(shell cd $(topsrcdir) ; hg identify 2>/dev/null | cut -f1 -d' ') ifdef SOURCE_STAMP DEFINES += -DMOZ_SOURCE_STAMP="$(SOURCE_STAMP)" endif diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index 3b86e04014d1..fa0ecf1767e8 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -310,6 +310,7 @@ pref("browser.link.open_newwindow.restriction", 2); // Tabbed browser pref("browser.tabs.autoHide", false); +pref("browser.tabs.closeWindowWithLastTab", true); pref("browser.tabs.warnOnClose", true); pref("browser.tabs.warnOnOpen", true); pref("browser.tabs.maxOpenBeforeWarn", 15); diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 87b92bfb759a..22fa19f21360 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -2042,7 +2042,7 @@ function canonizeUrl(aTriggeringEvent, aPostDataRef) { // Since this function is called from handleURLBarCommand, which receives // both mouse (from the go button) and keyboard events, we also make sure not // to do the fixup unless we get a keyboard event, to match user expectations. - if (!/^(www|https?)\b|\/\s*$/i.test(url) && + if (!/^\s*(www|https?)\b|\/\s*$/i.test(url) && (aTriggeringEvent instanceof KeyEvent)) { #ifdef XP_MACOSX var accel = aTriggeringEvent.metaKey; diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index aeec2a2525a5..f9bbb13cbd8e 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -1410,8 +1410,12 @@ var l = this.mTabContainer.childNodes.length; if (l == 1) { - closeWindow(true); - return null; + if (this.mPrefs.getBoolPref("browser.tabs.closeWindowWithLastTab")) { + closeWindow(true); + return null; + } + BrowserOpenTab(); + l++; } if (l == 2) { var autohide = this.mPrefs.getBoolPref("browser.tabs.autoHide"); @@ -1469,7 +1473,7 @@ - - - - - - - - - - + diff --git a/browser/locales/en-US/chrome/browser/preferences/tabs.dtd b/browser/locales/en-US/chrome/browser/preferences/tabs.dtd index 7c61f931c5ce..7995606ad5b6 100644 --- a/browser/locales/en-US/chrome/browser/preferences/tabs.dtd +++ b/browser/locales/en-US/chrome/browser/preferences/tabs.dtd @@ -1,8 +1,5 @@ - - - - - + + diff --git a/browser/themes/pinstripe/browser/browser.css b/browser/themes/pinstripe/browser/browser.css index 2870fa096ebf..7df0caf14b47 100644 --- a/browser/themes/pinstripe/browser/browser.css +++ b/browser/themes/pinstripe/browser/browser.css @@ -75,7 +75,7 @@ } #main-window:not([active="true"]) .tabbrowser-strip { - background-color: #cfcfcf; + background-color: #e2e2e2; } #main-window:not([active="true"]) .tabbrowser-tab { diff --git a/build/wince/shunt/build/vs9/mozce_shunt_static.sln b/build/wince/shunt/build/vs9/mozce_shunt_static.sln new file mode 100644 index 000000000000..01cc9cf214cc --- /dev/null +++ b/build/wince/shunt/build/vs9/mozce_shunt_static.sln @@ -0,0 +1,62 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mozce_shunt_static", "mozce_shunt_static.vcproj", "{082BAB06-D10F-4C57-B123-F84DC06C246D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Pocket PC 2003 (ARMV4) = Debug|Pocket PC 2003 (ARMV4) + Debug|Smartphone 2003 (ARMV4) = Debug|Smartphone 2003 (ARMV4) + Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + Debug|Windows Mobile 6 Standard SDK (ARMV4I) = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + Release|Pocket PC 2003 (ARMV4) = Release|Pocket PC 2003 (ARMV4) + Release|Smartphone 2003 (ARMV4) = Release|Smartphone 2003 (ARMV4) + Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I) + Release|Windows Mobile 6 Standard SDK (ARMV4I) = Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {082BAB06-D10F-4C57-B123-F84DC06C246D}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/wince/shunt/build/vs9/mozce_shunt_static.vcproj b/build/wince/shunt/build/vs9/mozce_shunt_static.vcproj new file mode 100644 index 000000000000..d9a1c819fd6f --- /dev/null +++ b/build/wince/shunt/build/vs9/mozce_shunt_static.vcproj @@ -0,0 +1,1261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/wince/shunt/include/mozce_defs.h b/build/wince/shunt/include/mozce_defs.h index caa9c9a43e74..f774550ea4b6 100755 --- a/build/wince/shunt/include/mozce_defs.h +++ b/build/wince/shunt/include/mozce_defs.h @@ -102,6 +102,7 @@ #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 +#define EINVAL 22 #define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 @@ -112,6 +113,7 @@ #define EMLINK 31 #define EPIPE 32 #define EDOM 33 +#define ERANGE 34 #define EDEADLK 36 #ifndef ENAMETOOLONG #define ENAMETOOLONG 38 @@ -165,6 +167,9 @@ typedef int ptrdiff_t; typedef long _off_t; typedef long off_t; +// Not defined anywhere +typedef INT_PTR intptr_t; + // From sys/stat.h #if !defined(_STAT_DEFINED) #define _STAT_DEFINED diff --git a/build/wince/shunt/include/mozce_shunt.h b/build/wince/shunt/include/mozce_shunt.h index fc551655bfef..4afa72b5c98b 100755 --- a/build/wince/shunt/include/mozce_shunt.h +++ b/build/wince/shunt/include/mozce_shunt.h @@ -61,6 +61,7 @@ #define _isatty isatty #undef fileno #define fileno (int)_fileno +#define fstat (int)_fstat #define _mbctolower tolower #define _mbsicmp mbsicmp #define _mbsdec mbsdec @@ -128,6 +129,11 @@ #undef GetProcAddress #define GetProcAddress GetProcAddressA +#define SHELLEXECUTEINFOW SHELLEXECUTEINFO +#define ShellExecuteExW(x) ShellExecuteEx(x) + +#define MapVirtualKeyEx(a,b,c) MapVirtualKey(a,b) + //still need these #define GetCurrentDirectory GetCurrentDirectoryW diff --git a/build/wince/shunt/mozce_dbg.c b/build/wince/shunt/mozce_dbg.c new file mode 100644 index 000000000000..ea5ca1ffd849 --- /dev/null +++ b/build/wince/shunt/mozce_dbg.c @@ -0,0 +1,81 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla CE Shunt Library. + * + * The Initial Developer of the Original Code is Mozilla Corporation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * John Wolfe, 21-July-2008 + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "mozce_internal.h" + +#include + + +#ifndef SHUNT_LOG_ENABLED + +void mozce_DebugInit() { }; +void mozce_DebugDeinit() { }; +void mozce_DebugWriteToLog(char *str) { }; + +#else + +#define LOGFILE "\\Storage Card\\shuntlog.txt" + +FILE *gpDebugFile = NULL; + +void mozce_DebugInit() +{ + if ( NULL == gpDebugFile ) + gpDebugFile = fopen(LOGFILE, "a+"); +} + +void mozce_DebugDeinit() +{ + if ( gpDebugFile ) { + fclose( gpDebugFile ); + gpDebugFile = NULL; + } +} + +void mozce_DebugWriteToLog(char *str) +{ + if ( NULL == gpDebugFile ) + mozce_DebugInit(); + + if ( gpDebugFile ) { + fprintf(gpDebugFile, "%s", str); + fflush(gpDebugFile); + } +} + +#endif diff --git a/build/wince/tools/Makefile b/build/wince/tools/Makefile index fdb9f505725c..37b4fab7ab73 100755 --- a/build/wince/tools/Makefile +++ b/build/wince/tools/Makefile @@ -1,19 +1,99 @@ -all: - cl vs8ppc2003arm/arm-wince-as.c - mv arm-wince-as.exe vs8ppc2003arm - cl vs8ppc2003arm/arm-wince-gcc.c - mv arm-wince-gcc.exe vs8ppc2003arm - cl vs8ppc2003arm/arm-wince-lib.c - mv arm-wince-lib.exe vs8ppc2003arm - cl vs8ppc2003arm/arm-wince-link.c - mv arm-wince-link.exe vs8ppc2003arm - rm -f *.obj - devenv ../shunt/build/vs8/mozce_shunt_static.sln -Rebuild "Release|Windows Mobile 6 Standard SDK (ARMV4I)" +# +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla CE Shunt Library. +# +# The Initial Developer of the Original Code is Mozilla Corporation. +# Portions created by the Initial Developer are Copyright (C) 2008 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# John Wolfe (wolfe@lobo.us) +# +# Alternatively, the contents of this file may be used under the terms of +# either of the GNU General Public License Version 2 or later (the "GPL"), +# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEVENV_FLAG=- + +CC=cl + +MOZCE_DEVENV=vs$(MOZ_MSVCVERSION) + +MOZCE_SHUNT_SLN=../shunt/build/$(MOZCE_DEVENV)/mozce_shunt_static.sln +MOZCE_PROJECT="Release|Windows Mobile 6 Standard SDK (ARMV4I)" +MOZCE_SHUNT_DLL=../shunt/build/$(MOZCE_DEVENV)/mozce_shunt.dll +MOZCE_TOOLS_DIR=$(MOZCE_DEVENV)ppc2003arm + +BUILD_SWITCH=$(DEVENV_FLAG)Build +REBUILD_SWITCH=$(DEVENV_FLAG)Rebuild +CLEAN_SWITCH=$(DEVENV_FLAG)clean + + +all: output_some_env \ + $(MOZCE_TOOLS_DIR)/arm-wince-as.exe \ + $(MOZCE_TOOLS_DIR)/arm-wince-gcc.exe \ + $(MOZCE_TOOLS_DIR)/arm-wince-lib.exe \ + $(MOZCE_TOOLS_DIR)/arm-wince-link.exe \ + $(MOZCE_TOOLS_DIR)/arm-wince-res.exe + devenv $(MOZCE_SHUNT_SLN) $(BUILD_SWITCH) $(MOZCE_PROJECT) clobber: - rm -f vs8ppc2003arm/*.exe - rm -f vs8ppc2003arm/*.obj + rm -f $(MOZCE_TOOLS_DIR)/*.exe + rm -f $(MOZCE_TOOLS_DIR)/*.obj rm -f *.obj rm -f *.exe - devenv ../shunt/build/vs8/mozce_shunt_static.sln -clean "Release|Windows Mobile 6 Standard SDK (ARMV4I)" + rm -rf bin + devenv $(MOZCE_SHUNT_SLN) $(CLEAN_SWITCH) $(MOZCE_PROJECT) + +output_some_env: + @echo FOUND $(MOZCE_DEVENV) + @echo FOUND $(MOZCE_DEVENV): VSINSTALLDIR=$(VSINSTALLDIR) / MINGW32=$(MINGW32) / MSYSTEM=$(MSYSTEM) + @echo FOUND $(MOZCE_DEVENV) + +$(MOZCE_TOOLS_DIR)/arm-wince-as.exe: $(MOZCE_TOOLS_DIR)/arm-wince-as.c + $(CC) $(MOZCE_TOOLS_DIR)/arm-wince-as.c + mkdir -p bin; + cp arm-wince-as.exe bin; mv arm-wince-as.exe $(MOZCE_TOOLS_DIR); rm *.obj + +$(MOZCE_TOOLS_DIR)/arm-wince-gcc.exe: $(MOZCE_TOOLS_DIR)/arm-wince-gcc.c + $(CC) $(MOZCE_TOOLS_DIR)/arm-wince-gcc.c + mkdir -p bin; + cp arm-wince-gcc.exe bin; mv arm-wince-gcc.exe $(MOZCE_TOOLS_DIR); rm *.obj + +$(MOZCE_TOOLS_DIR)/arm-wince-lib.exe: $(MOZCE_TOOLS_DIR)/arm-wince-lib.c + $(CC) $(MOZCE_TOOLS_DIR)/arm-wince-lib.c + mkdir -p bin; + cp arm-wince-lib.exe bin; mv arm-wince-lib.exe $(MOZCE_TOOLS_DIR); rm *.obj + +$(MOZCE_TOOLS_DIR)/arm-wince-link.exe: $(MOZCE_TOOLS_DIR)/arm-wince-link.c + $(CC) $(MOZCE_TOOLS_DIR)/arm-wince-link.c + mkdir -p bin; + cp arm-wince-link.exe bin; mv arm-wince-link.exe $(MOZCE_TOOLS_DIR); rm *.obj + +$(MOZCE_TOOLS_DIR)/arm-wince-res.exe: $(MOZCE_TOOLS_DIR)/arm-wince-res.c + $(CC) $(MOZCE_TOOLS_DIR)/arm-wince-res.c + mkdir -p bin; + cp arm-wince-res.exe bin; mv arm-wince-res.exe $(MOZCE_TOOLS_DIR); rm *.obj diff --git a/build/wince/tools/vs8ppc2003arm/arm-wince-res.c b/build/wince/tools/vs8ppc2003arm/arm-wince-res.c new file mode 100644 index 000000000000..07ae5917d6c3 --- /dev/null +++ b/build/wince/tools/vs8ppc2003arm/arm-wince-res.c @@ -0,0 +1,19 @@ +#include "toolspath.h" + +int +main(int argc, char **argv) +{ + int iRetVal; + char* args[1000]; + int i = 0; + int j = 0; + int k = 0; + int s = 0; + args[i++] = RC_PATH; + + argpath_conv(&argv[1], &args[i]); + + dumpargs(args); + + return run(args); +} diff --git a/build/wince/tools/vs8ppc2003arm/toolspath.h b/build/wince/tools/vs8ppc2003arm/toolspath.h index 0564936c9eb2..e4c8a78e4f9c 100644 --- a/build/wince/tools/vs8ppc2003arm/toolspath.h +++ b/build/wince/tools/vs8ppc2003arm/toolspath.h @@ -1,163 +1,276 @@ -#include -#include -#include - -#ifndef TOPSRCDIR -#include "../topsrcdir.h" -#endif - -#define WCE_BIN "c:\\Program Files\\Microsoft Visual Studio 8\\VC\\ce\\bin\\x86_arm\\" -#define WCE_CRT "c:\\Program Files\\Microsoft Visual Studio 8\\VC/ce\\lib\\armv4i" -#define WCE_INC "C:\\Program Files\\Windows Mobile 6 SDK\\Smartphone\\Include\\Armv4i" -#define WCE_LIB "C:\\Program Files\\Windows Mobile 6 SDK\\Smartphone\\Lib\\Armv4i" - -#define SHUNT_LIB TOPSRCDIR "/build/wince/shunt/build/vs8/" -#define SHUNT_INC TOPSRCDIR "/build/wince/shunt/include/" - -#define ASM_PATH WCE_BIN "armasm.exe" -#define CL_PATH WCE_BIN "cl.exe" -#define LIB_PATH WCE_BIN "lib.exe" -#define LINK_PATH WCE_BIN "link.exe" - -#define MAX_NOLEAK_BUFFERS 100 -char noleak_buffers[MAX_NOLEAK_BUFFERS][1024]; -static int next_buffer = 0; - -int argpath_conv(char **args_in, char **args_out) -{ - int i = 0; - - while (args_in[i]) - { - args_out[i] = args_in[i]; - - if (args_in[i]) - { - char *offset = strstr(args_out[i], "/cygdrive/"); - - if (offset) { - - strcpy(offset, offset+9); - offset[0] = offset[1]; - offset[1] = ':'; - offset[2] = '/'; - } - - if ( (args_out[i][0] == '-' || args_out[i][0] == '/') && - (args_out[i][1] == 'D')) - { - - offset = strstr(args_out[i]+2, "="); - if (offset) - { - char* equalsChar = offset; - - if (equalsChar[1] == '"') - { - *equalsChar = '\0'; - - strcpy(noleak_buffers[next_buffer], args_out[i]); - - *equalsChar = '='; - - strcat(noleak_buffers[next_buffer], "=\\\""); - strcat(noleak_buffers[next_buffer], equalsChar+1); - strcat(noleak_buffers[next_buffer], "\\\""); - - args_out[i] = noleak_buffers[next_buffer]; - - next_buffer++; - - if (next_buffer > MAX_NOLEAK_BUFFERS) { - printf("next_buffer>MAX_NOLEAK_BUFFERS\n"); - exit(-1); - } - } - } - } - } - i++; - } - args_out[i] = NULL; - return i; -} - -void dumpargs(char** args) -{ - int i = 0; - - if (args[0] == NULL) - printf(":: first element is null!\n"); - - while(args[i]) - printf("%s ", args[i++]); - - printf("\n"); - fflush(stdout); - fflush(stderr); -} - - -DWORD run(char** args) -{ - - DWORD exitCode; - STARTUPINFO si; - PROCESS_INFORMATION pi; - - char theArgs[1024*16]; - - int totalLen = 0; - int i, j; - - - // Clear any link env variable that might get us tangled up - _putenv("LINK="); - _putenv("LIBPATH="); - _putenv("CC="); - - _putenv("INCLUDE=" WCE_INC); - _putenv("LIB=" WCE_LIB); - - for (j=1; args[j]; j++) - { - int len = strlen(args[j]); - strcat(&theArgs[totalLen], args[j]); - totalLen += len; - - strcat(&theArgs[totalLen], " "); - totalLen++; - } - - i = strlen(args[0]); - for (j=0; j +#include +#include + +#ifndef TOPSRCDIR +#include "../topsrcdir.h" +#endif + +#define WCE_BIN "c:\\Program Files\\Microsoft Visual Studio 8\\VC\\ce\\bin\\x86_arm\\" +#define WCE_RC_BIN "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0a\\bin\\" +#define WCE_CRT "c:\\Program Files\\Microsoft Visual Studio 8\\VC/ce\\lib\\armv4i" +#define WCE_INC "C:\\Program Files\\Windows Mobile 6 SDK\\Smartphone\\Include\\Armv4i" +#define WCE_LIB "C:\\Program Files\\Windows Mobile 6 SDK\\Smartphone\\Lib\\Armv4i" + +#define SHUNT_LIB TOPSRCDIR "/build/wince/shunt/build/vs8/" +#define SHUNT_INC TOPSRCDIR "/build/wince/shunt/include/" + +#define ASM_PATH WCE_BIN "armasm.exe" +#define CL_PATH WCE_BIN "cl.exe" +#define LIB_PATH WCE_BIN "lib.exe" +#define LINK_PATH WCE_BIN "link.exe" +#define RC_PATH WCE_RC_BIN "rc.exe" + +#define MAX_NOLEAK_BUFFERS 100 +char noleak_buffers[MAX_NOLEAK_BUFFERS][1024]; +static int next_buffer = 0; + +int argpath_conv(char **args_in, char **args_out) +{ + int i = 0; + + while (args_in[i]) + { + char *offset; + + args_out[i] = args_in[i]; + + if (args_in[i]) + { + // First, look for the case of "-Fo/c/xxxxxxx" and "/Fo/c/xxxxx" + if ( (args_out[i][0] == '-' || args_out[i][0] == '/') && + (args_out[i][1] == 'F') && (args_out[i][2] == 'o') && + (args_out[i][3] == '/') && (strlen(args_out[i]) > 5) ) { + + //printf("ARGS_IN: -FoXXXX is %s\n",args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][0] = '/'; + noleak_buffers[next_buffer][3] = noleak_buffers[next_buffer][4]; + noleak_buffers[next_buffer][4] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + + //printf("ARGS_OUT: -FoXXXX is %s\n",args_out[i]); + + next_buffer++; + } + else if ((args_out[i][0] == '/') && (args_out[i][2] == '/')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][0] = noleak_buffers[next_buffer][1]; + noleak_buffers[next_buffer][1] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + + next_buffer++; + } + else if ((args_out[i][0] == '\\') && (args_out[i][2] == '\\')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][0] = noleak_buffers[next_buffer][1]; + noleak_buffers[next_buffer][1] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + + next_buffer++; + } + else if ((args_out[i][0] == '\\') && (args_out[i][1] == '\\') && + (args_out[i][3] == '\\') && (args_out[i][4] == '\\')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + noleak_buffers[next_buffer][0] = args_in[i][2]; + noleak_buffers[next_buffer][1] = ':'; + noleak_buffers[next_buffer][2] = '\0'; + + strcpy(noleak_buffers[next_buffer], &args_in[i][3]); + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + + next_buffer++; + } + else if ( strstr(args_out[i], "OUT:") || strstr(args_out[i], "DEF:") ) + { + // Deal with -OUT:/c/.... + // + // NOTE: THERE IS A BUG IN THIS IMPLEMENTATION IF + // THERE IS A SPACE IN THE TOPSRCDIR PATH. + // + // Should really check for spaces, then double-quote + // the path if any space is found. + // -- wolfe@lobo.us 25-Aug-08 + if ((args_out[i][5] == '/') && (args_out[i][7] == '/')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][5] = noleak_buffers[next_buffer][6]; + noleak_buffers[next_buffer][6] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + } + // Deal with -OUT:"/c/...." + else if ((args_out[i][6] == '/') && (args_out[i][8] == '/')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][6] = noleak_buffers[next_buffer][7]; + noleak_buffers[next_buffer][7] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + } + + next_buffer++; + } + else + { + char *offset = strstr(args_out[i], "/cygdrive/"); + + if (offset) { + + strcpy(offset, offset+9); + offset[0] = offset[1]; + offset[1] = ':'; + offset[2] = '/'; + } + + if ( (args_out[i][0] == '-' || args_out[i][0] == '/') && + (args_out[i][1] == 'D')) + { + + offset = strstr(args_out[i]+2, "="); + if (offset) + { + char* equalsChar = offset; + + if (equalsChar[1] == '"') + { + *equalsChar = '\0'; + + strcpy(noleak_buffers[next_buffer], args_out[i]); + + *equalsChar = '='; + + strcat(noleak_buffers[next_buffer], "=\\\""); + strcat(noleak_buffers[next_buffer], equalsChar+1); + strcat(noleak_buffers[next_buffer], "\\\""); + + args_out[i] = noleak_buffers[next_buffer]; + + next_buffer++; + } + } + } + } + + if (next_buffer > MAX_NOLEAK_BUFFERS) { + printf("OOPS - next_buffer > MAX_NOLEAK_BUFFERS\n"); + exit(-1); + } + } + i++; + } + args_out[i] = NULL; + return i; +} + +void dumpargs(char** args) +{ + int i = 0; + + if (args[0] == NULL) + printf(":: first element is null!\n"); + + while(args[i]) + printf("%s ", args[i++]); + + printf("\n"); + fflush(stdout); + fflush(stderr); +} + + +DWORD run(char** args) +{ + + DWORD exitCode; + STARTUPINFO si; + PROCESS_INFORMATION pi; + + char theArgs[1024*16]; + + int totalLen = 0; + int i, j; + + + // Clear any link env variable that might get us tangled up + _putenv("LINK="); + _putenv("LIBPATH="); + _putenv("CC="); + + _putenv("INCLUDE=" WCE_INC); + _putenv("LIB=" WCE_LIB); + + for (j=1; args[j]; j++) + { + int len = strlen(args[j]); + strcat(&theArgs[totalLen], args[j]); + totalLen += len; + + strcat(&theArgs[totalLen], " "); + totalLen++; + } + + i = strlen(args[0]); + for (j=0; j +#include +#include + +#ifndef TOPSRCDIR +#include "../topsrcdir.h" +#endif + +#define WCE_BIN "c:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\ce\\bin\\x86_arm\\" +#define WCE_RC_BIN "c:\\Program Files\\Microsoft SDKs\\Windows\\v6.0a\\bin\\" +#define WCE_CRT "c:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\ce\\lib\\armv4i" +#define WCE_INC "c:\\Program Files\\Windows Mobile 6 SDK\\Smartphone\\Include\\Armv4i" +#define WCE_LIB "c:\\Program Files\\Windows Mobile 6 SDK\\Smartphone\\Lib\\Armv4i" + + +#define SHUNT_LIB TOPSRCDIR "/build/wince/shunt/build/vs9/" +#define SHUNT_INC TOPSRCDIR "/build/wince/shunt/include/" + +#define ASM_PATH WCE_BIN "armasm.exe" +#define CL_PATH WCE_BIN "cl.exe" +#define LIB_PATH WCE_BIN "lib.exe" +#define LINK_PATH WCE_BIN "link.exe" +#define RC_PATH WCE_RC_BIN "rc.exe" + +#define MAX_NOLEAK_BUFFERS 100 +char noleak_buffers[MAX_NOLEAK_BUFFERS][1024]; +static int next_buffer = 0; + +int argpath_conv(char **args_in, char **args_out) +{ + int i = 0; + + while (args_in[i]) + { + char *offset; + + args_out[i] = args_in[i]; + + if (args_in[i]) + { + // First, look for the case of "-Fo/c/xxxxxxx" and "/Fo/c/xxxxx" + if ( (args_out[i][0] == '-' || args_out[i][0] == '/') && + (args_out[i][1] == 'F') && (args_out[i][2] == 'o') && + (args_out[i][3] == '/') && (strlen(args_out[i]) > 5) ) { + + //printf("ARGS_IN: -FoXXXX is %s\n",args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][0] = '/'; + noleak_buffers[next_buffer][3] = noleak_buffers[next_buffer][4]; + noleak_buffers[next_buffer][4] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + + //printf("ARGS_OUT: -FoXXXX is %s\n",args_out[i]); + + next_buffer++; + } + else if ((args_out[i][0] == '/') && (args_out[i][2] == '/')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][0] = noleak_buffers[next_buffer][1]; + noleak_buffers[next_buffer][1] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + + next_buffer++; + } + else if ((args_out[i][0] == '\\') && (args_out[i][2] == '\\')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][0] = noleak_buffers[next_buffer][1]; + noleak_buffers[next_buffer][1] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + + next_buffer++; + } + else if ((args_out[i][0] == '\\') && (args_out[i][1] == '\\') && + (args_out[i][3] == '\\') && (args_out[i][4] == '\\')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + noleak_buffers[next_buffer][0] = args_in[i][2]; + noleak_buffers[next_buffer][1] = ':'; + noleak_buffers[next_buffer][2] = '\0'; + + strcpy(noleak_buffers[next_buffer], &args_in[i][3]); + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + + next_buffer++; + } + else if ( strstr(args_out[i], "OUT:") || strstr(args_out[i], "DEF:") ) + { + // Deal with -OUT:/c/.... + // + // NOTE: THERE IS A BUG IN THIS IMPLEMENTATION IF + // THERE IS A SPACE IN THE TOPSRCDIR PATH. + // + // Should really check for spaces, then double-quote + // the path if any space is found. + // -- wolfe@lobo.us 25-Aug-08 + if ((args_out[i][5] == '/') && (args_out[i][7] == '/')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][5] = noleak_buffers[next_buffer][6]; + noleak_buffers[next_buffer][6] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + } + // Deal with -OUT:"/c/...." + else if ((args_out[i][6] == '/') && (args_out[i][8] == '/')) + { + // Assume this is a pathname, and adjust accordingly + //printf("ARGS_IN: PATHNAME ASSUMED: %s\n", args_in[i]); + + strcpy(noleak_buffers[next_buffer], args_in[i]); + + noleak_buffers[next_buffer][6] = noleak_buffers[next_buffer][7]; + noleak_buffers[next_buffer][7] = ':'; + + args_out[i] = noleak_buffers[next_buffer]; + //printf("ARGS_OUT: PATHNAME MODIFIED TO BE: %s\n", args_out[i]); + } + + next_buffer++; + } + else + { + char *offset = strstr(args_out[i], "/cygdrive/"); + + if (offset) { + + strcpy(offset, offset+9); + offset[0] = offset[1]; + offset[1] = ':'; + offset[2] = '/'; + } + + if ( (args_out[i][0] == '-' || args_out[i][0] == '/') && + (args_out[i][1] == 'D')) + { + + offset = strstr(args_out[i]+2, "="); + if (offset) + { + char* equalsChar = offset; + + if (equalsChar[1] == '"') + { + *equalsChar = '\0'; + + strcpy(noleak_buffers[next_buffer], args_out[i]); + + *equalsChar = '='; + + strcat(noleak_buffers[next_buffer], "=\\\""); + strcat(noleak_buffers[next_buffer], equalsChar+1); + strcat(noleak_buffers[next_buffer], "\\\""); + + args_out[i] = noleak_buffers[next_buffer]; + + next_buffer++; + } + } + } + } + + if (next_buffer > MAX_NOLEAK_BUFFERS) { + printf("OOPS - next_buffer > MAX_NOLEAK_BUFFERS\n"); + exit(-1); + } + } + i++; + } + args_out[i] = NULL; + return i; +} + +void dumpargs(char** args) +{ + int i = 0; + + if (args[0] == NULL) + printf(":: first element is null!\n"); + + while(args[i]) + printf("%s ", args[i++]); + + printf("\n"); + fflush(stdout); + fflush(stderr); +} + + +DWORD run(char** args) +{ + + DWORD exitCode; + STARTUPINFO si; + PROCESS_INFORMATION pi; + + char theArgs[1024*16]; + + int totalLen = 0; + int i, j; + + + // Clear any link env variable that might get us tangled up + _putenv("LINK="); + _putenv("LIBPATH="); + _putenv("CC="); + + _putenv("INCLUDE=" WCE_INC); + _putenv("LIB=" WCE_LIB); + + for (j=1; args[j]; j++) + { + int len = strlen(args[j]); + strcat(&theArgs[totalLen], args[j]); + totalLen += len; + + strcat(&theArgs[totalLen], " "); + totalLen++; + } + + i = strlen(args[0]); + for (j=0; jSecurityGetBoolPref(sJSMailEnabledPrefName, &temp); // JavaScript in Mail defaults to disabled in failure cases. - mIsMailJavaScriptEnabled = NS_SUCCEEDED(rv) && temp; + // disable javascript in mailnews for TB 3.0 beta1 + mIsMailJavaScriptEnabled = PR_FALSE; // NS_SUCCEEDED(rv) && temp; rv = mSecurityPref->SecurityGetBoolPref(sFileOriginPolicyPrefName, &temp); sStrictFileOriginPolicy = NS_SUCCEEDED(rv) && temp; diff --git a/config/JarMaker.py b/config/JarMaker.py index 6a1eef462982..7a769b1b6259 100644 --- a/config/JarMaker.py +++ b/config/JarMaker.py @@ -268,33 +268,38 @@ def processJarSection(self, jarfile, lines, # This loop exits on either # - the end of the jar.mn file # - an line in the jar.mn file that's not part of a jar section - while True: - try: - l = lines.next() - except StopIteration: - # we're done with this jar.mn, and this jar section - self.finalizeJar(jarfile, chromebasepath, register) - if jf is not None: - jf.close() - # reraise the StopIteration for makeJar - raise - if self.ignore.match(l): - continue - m = self.regline.match(l) - if m: - rline = m.group(1) - register[rline] = 1 - continue - m = self.entryline.match(l) - if not m: - # neither an entry line nor chrome reg, this jar section is done - self.finalizeJar(jarfile, chromebasepath, register) - if jf is not None: - jf.close() - lines.pushback(l) - return - self._processEntryLine(m, sourcedirs, topsourcedir, localedirs, - outHelper, jf) + # - on an exception raised, close the jf in that case in a finally + try: + while True: + try: + l = lines.next() + except StopIteration: + # we're done with this jar.mn, and this jar section + self.finalizeJar(jarfile, chromebasepath, register) + if jf is not None: + jf.close() + # reraise the StopIteration for makeJar + raise + if self.ignore.match(l): + continue + m = self.regline.match(l) + if m: + rline = m.group(1) + register[rline] = 1 + continue + m = self.entryline.match(l) + if not m: + # neither an entry line nor chrome reg, this jar section is done + self.finalizeJar(jarfile, chromebasepath, register) + if jf is not None: + jf.close() + lines.pushback(l) + return + self._processEntryLine(m, sourcedirs, topsourcedir, localedirs, + outHelper, jf) + finally: + if jf is not None: + jf.close() return def _processEntryLine(self, m, @@ -403,7 +408,11 @@ def main(): noise = logging.INFO if options.verbose is not None: noise = (options.verbose and logging.DEBUG) or logging.WARN - logging.basicConfig(level = noise, format = "%(message)s") + if sys.version_info[:2] > (2,3): + logging.basicConfig(format = "%(message)s") + else: + logging.basicConfig() + logging.getLogger().setLevel(noise) if not args: jm.makeJar(infile=sys.stdin, sourcedirs=options.s, topsourcedir=options.t, diff --git a/config/MozZipFile.py b/config/MozZipFile.py index c294aae2f579..85f83d3e1fa6 100644 --- a/config/MozZipFile.py +++ b/config/MozZipFile.py @@ -138,6 +138,9 @@ def close(self): all = map(lambda zi: (zi, True), self.filelist) + \ map(lambda zi: (zi, False), self._remove) all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset)) + # empty _remove for multiple closes + self._remove = [] + lengths = [all[i+1][0].header_offset - all[i][0].header_offset for i in xrange(len(all)-1)] lengths.append(self.end - all[-1][0].header_offset) diff --git a/config/Preprocessor.py b/config/Preprocessor.py index 402661ced0a0..c335101f50f6 100644 --- a/config/Preprocessor.py +++ b/config/Preprocessor.py @@ -174,8 +174,7 @@ def handleE(option, opt, value, parser): for k,v in os.environ.iteritems(): self.context[k] = v def handleD(option, opt, value, parser): - vals = value.split('=') - assert len(vals) < 3 + vals = value.split('=', 1) if len(vals) == 1: vals.append(1) elif unescapeDefines and escapedValue.match(vals[1]): diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in index b0b73e59e148..58f526aa0863 100644 --- a/config/autoconf.mk.in +++ b/config/autoconf.mk.in @@ -41,6 +41,8 @@ INCLUDED_AUTOCONF_MK = 1 USE_AUTOCONF = 1 MOZILLA_CLIENT = 1 +target = @target@ +ac_configure_args = @ac_configure_args@ BUILD_MODULES = @BUILD_MODULES@ MOZILLA_VERSION = @MOZILLA_VERSION@ FIREFOX_VERSION = @FIREFOX_VERSION@ diff --git a/config/nsinstall.c b/config/nsinstall.c index b46aeaa1a049..b6ca0e3694e3 100644 --- a/config/nsinstall.c +++ b/config/nsinstall.c @@ -164,7 +164,7 @@ static void copyfile( char *name, char *toname, mode_t mode, char *group, char *owner, int dotimes, uid_t uid, gid_t gid ) { - int fromfd, tofd, cc, wc, exists; + int fromfd, tofd = -1, cc, wc, exists; char buf[BUFSIZ], *bp; struct stat sb, tosb; struct utimbuf utb; @@ -174,11 +174,20 @@ copyfile( char *name, char *toname, mode_t mode, char *group, char *owner, fromfd = open(name, O_RDONLY); if (fromfd < 0 || fstat(fromfd, &sb) < 0) fail("cannot access %s", name); - if (exists && (!S_ISREG(tosb.st_mode) || access(toname, W_OK) < 0)) - (void) (S_ISDIR(tosb.st_mode) ? rmdir : unlink)(toname); - tofd = open(toname, O_CREAT | O_WRONLY, 0666); - if (tofd < 0) - fail("cannot create %s", toname); + if (exists) { + if (S_ISREG(tosb.st_mode)) { + /* See if we can open it. This is more reliable than 'access'. */ + tofd = open(toname, O_CREAT | O_WRONLY, 0666); + } + if (tofd < 0) { + (void) (S_ISDIR(tosb.st_mode) ? rmdir : unlink)(toname); + } + } + if (tofd < 0) { + tofd = open(toname, O_CREAT | O_WRONLY, 0666); + if (tofd < 0) + fail("cannot create %s", toname); + } bp = buf; while ((cc = read(fromfd, bp, sizeof buf)) > 0) diff --git a/content/xbl/src/nsXBLService.cpp b/content/xbl/src/nsXBLService.cpp index 154431989f86..bc2301290aae 100644 --- a/content/xbl/src/nsXBLService.cpp +++ b/content/xbl/src/nsXBLService.cpp @@ -147,11 +147,13 @@ IsAncestorBinding(nsIDocument* aDocument, rv = compareURL->Equals(aChildBindingURI, &equal); } else { + // Just compare the URIs rv = binding->PrototypeBinding()->BindingURI()->Equals(aChildBindingURI, &equal); - NS_ENSURE_SUCCESS(rv, PR_TRUE); // assume the worst } + NS_ENSURE_SUCCESS(rv, PR_TRUE); // assume the worst + if (equal) { ++bindingRecursion; if (bindingRecursion < NS_MAX_XBL_BINDING_RECURSION) { diff --git a/embedding/components/find/public/nsIFind.idl b/embedding/components/find/public/nsIFind.idl index 566486468fc0..ad2b82678f22 100644 --- a/embedding/components/find/public/nsIFind.idl +++ b/embedding/components/find/public/nsIFind.idl @@ -51,7 +51,7 @@ interface nsIFind : nsISupports * Use "find entire words" mode by setting to a word breaker * or null, to disable "entire words" mode. */ - attribute nsIWordBreaker wordBreaker; + [noscript] attribute nsIWordBreaker wordBreaker; /** * Find some text in the current context. The implementation is @@ -62,13 +62,9 @@ interface nsIFind : nsISupports * @param aStartPoint A Range specifying search start point. * If not collapsed, we'll start from * end (forward) or start (backward). - * May be null; if so, we'll start at the start - * (forward) or end (back) of aSearchRange. * @param aEndPoint A Range specifying search end point. * If not collapsed, we'll end at * end (forward) or start (backward). - * May be null; if so, we'll end at the end - * (forward) or start (back) of aSearchRange. * @retval A range spanning the match that was found (or null). */ nsIDOMRange Find(in wstring aPatText, in nsIDOMRange aSearchRange, diff --git a/embedding/test/Makefile.in b/embedding/test/Makefile.in index e0b98ff26c9c..1b4880a424cc 100644 --- a/embedding/test/Makefile.in +++ b/embedding/test/Makefile.in @@ -43,10 +43,11 @@ relativesrcdir = embedding/test include $(DEPTH)/config/autoconf.mk include $(topsrcdir)/config/rules.mk -_TEST_FILES = test_bug293834.html \ - bug293834_form.html \ - $(NULL) +_TEST_FILES = \ + test_bug293834.html \ + bug293834_form.html \ + test_nsFind.html \ + $(NULL) libs:: $(_TEST_FILES) $(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir) - diff --git a/embedding/test/test_nsFind.html b/embedding/test/test_nsFind.html new file mode 100644 index 000000000000..e15ee611a44b --- /dev/null +++ b/embedding/test/test_nsFind.html @@ -0,0 +1,128 @@ + + + + + Test for nsFind::Find() + + + + + +Mozilla Bug 450048 +

This is the text to search in­to

+ +
+
+
+ + diff --git a/gfx/thebes/public/gfxFont.h b/gfx/thebes/public/gfxFont.h index a95899747bb7..e8c001d3f505 100644 --- a/gfx/thebes/public/gfxFont.h +++ b/gfx/thebes/public/gfxFont.h @@ -454,9 +454,8 @@ class THEBES_API gfxFont { --mRefCnt; NS_LOG_RELEASE(this, mRefCnt, "gfxFont"); if (mRefCnt == 0) { - // Don't delete just yet; return the object to the cache for - // possibly recycling within some time limit - gfxFontCache::GetCache()->NotifyReleased(this); + NotifyReleased(); + // |this| may have been deleted. return 0; } return mRefCnt; @@ -467,8 +466,21 @@ class THEBES_API gfxFont { protected: nsAutoRefCnt mRefCnt; -public: + void NotifyReleased() { + gfxFontCache *cache = gfxFontCache::GetCache(); + if (cache) { + // Don't delete just yet; return the object to the cache for + // possibly recycling within some time limit + cache->NotifyReleased(this); + } else { + // The cache may have already been shut down. + delete this; + } + } + gfxFont(gfxFontEntry *aFontEntry, const gfxFontStyle *aFontStyle); + +public: virtual ~gfxFont(); const nsString& GetName() const { return mFontEntry->Name(); } @@ -637,7 +649,6 @@ class THEBES_API gfxFont { protected: nsRefPtr mFontEntry; - // The family name of the font PRPackedBool mIsValid; nsExpirationState mExpirationState; gfxFontStyle mStyle; @@ -1480,9 +1491,10 @@ class THEBES_API gfxTextRun { }; class THEBES_API gfxFontGroup : public gfxTextRunFactory { -public: +protected: gfxFontGroup(const nsAString& aFamilies, const gfxFontStyle *aStyle); +public: virtual ~gfxFontGroup() { mFonts.Clear(); } diff --git a/gfx/thebes/src/gfxFontconfigUtils.cpp b/gfx/thebes/src/gfxFontconfigUtils.cpp index f0718a1e3202..9d80e924526c 100644 --- a/gfx/thebes/src/gfxFontconfigUtils.cpp +++ b/gfx/thebes/src/gfxFontconfigUtils.cpp @@ -108,9 +108,9 @@ gfxFontconfigUtils::GetThebesWeight(FcPattern *aPattern) } gfxFontconfigUtils::gfxFontconfigUtils() + : mLastConfig(NULL) { mAliasTable.Init(50); - UpdateFontListInternal(PR_TRUE); } nsresult @@ -306,10 +306,23 @@ gfxFontconfigUtils::UpdateFontList() nsresult gfxFontconfigUtils::UpdateFontListInternal(PRBool aForce) { - if (!aForce && FcConfigUptoDate(NULL)) - return NS_OK; + if (!aForce) { + // This checks periodically according to fontconfig's configured + // interval. + FcInitBringUptoDate(); + } else if (!FcConfigUptoDate(NULL)) { // check now with aForce + mLastConfig = NULL; + FcInitReinitialize(); + } - FcInitReinitialize(); + // FcInitReinitialize() (used by FcInitBringUptoDate) creates a new config + // before destroying the old config, so the only way that we'd miss an + // update is if fontconfig did more than one update and the memory for the + // most recent config happened to be at the same location as the original + // config. + FcConfig *currentConfig = FcConfigGetCurrent(); + if (currentConfig == mLastConfig) + return NS_OK; mFonts.Clear(); mAliasForSingleFont.Clear(); @@ -337,9 +350,7 @@ gfxFontconfigUtils::UpdateFontListInternal(PRBool aForce) return NS_ERROR_FAILURE; nsXPIDLCString list; - rv = prefBranch->GetCharPref("font.alias-list", getter_Copies(list)); - if (NS_FAILED(rv)) - return NS_OK; + prefBranch->GetCharPref("font.alias-list", getter_Copies(list)); if (!list.IsEmpty()) { const char kComma = ','; @@ -363,9 +374,6 @@ gfxFontconfigUtils::UpdateFontListInternal(PRBool aForce) } } - if (mAliasForMultiFonts.Count() == 0) - return NS_OK; - for (PRInt32 i = 0; i < mAliasForMultiFonts.Count(); i++) { nsRefPtr fonts = new gfxFontNameList; nsCAutoString fontname(*mAliasForMultiFonts.CStringAt(i)); @@ -377,6 +385,8 @@ gfxFontconfigUtils::UpdateFontListInternal(PRBool aForce) ToLowerCase(fontname, key); mAliasTable.Put(key, fonts); } + + mLastConfig = currentConfig; return NS_OK; } @@ -443,6 +453,10 @@ gfxFontconfigUtils::GetStandardFamilyName(const nsAString& aFontName, nsAString& return NS_OK; } + nsresult rv = UpdateFontListInternal(); + if (NS_FAILED(rv)) + return rv; + NS_ConvertUTF16toUTF8 fontname(aFontName); if (mFonts.IndexOf(fontname) >= 0) { @@ -458,7 +472,7 @@ gfxFontconfigUtils::GetStandardFamilyName(const nsAString& aFontName, nsAString& FcFontSet *givenFS = NULL; nsCStringArray candidates; FcFontSet *candidateFS = NULL; - nsresult rv = NS_ERROR_FAILURE; + rv = NS_ERROR_FAILURE; pat = FcPatternCreate(); if (!pat) diff --git a/gfx/thebes/src/gfxFontconfigUtils.h b/gfx/thebes/src/gfxFontconfigUtils.h index e3aed381fb5b..310d36fd3a83 100644 --- a/gfx/thebes/src/gfxFontconfigUtils.h +++ b/gfx/thebes/src/gfxFontconfigUtils.h @@ -99,6 +99,8 @@ class gfxFontconfigUtils { nsCStringArray mAliasForMultiFonts; nsDataHashtable > mAliasTable; + + FcConfig *mLastConfig; }; #endif /* GFX_FONTCONFIG_UTILS_H */ diff --git a/js/tests/e4x/extensions/regress-450871-01.js b/js/tests/e4x/extensions/regress-450871-01.js new file mode 100755 index 000000000000..493d2bb19283 --- /dev/null +++ b/js/tests/e4x/extensions/regress-450871-01.js @@ -0,0 +1,67 @@ +/* -*- Mode: java; tab-width:8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Gary Kwong + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +gTestfile = 'regress-450871-01.js'; + +var summary = 'Do not crash: __proto__ = ; .lastIndexOf(this, false)'; +var BUGNUMBER = 450871; +var actual = 'No Crash'; +var expect = 'No Crash'; + +printBugNumber(BUGNUMBER); +START(summary); + +if (typeof window == 'object') +{ + actual = expect = 'Test skipped for browser based tests due destruction of the prototype'; +} +else +{ + try + { + __proto__ = ; + .lastIndexOf(this, false); + } + catch(ex) + { + } +} + +TEST(1, expect, actual); + +END(); diff --git a/js/tests/e4x/extensions/regress-450871-02.js b/js/tests/e4x/extensions/regress-450871-02.js new file mode 100755 index 000000000000..3931b70b8646 --- /dev/null +++ b/js/tests/e4x/extensions/regress-450871-02.js @@ -0,0 +1,68 @@ +/* -*- Mode: java; tab-width:8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Gary Kwong + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +gTestfile = 'regress-450871-02.js'; + +var summary = 'Do not crash: __proto__ = ; .indexOf(this)'; +var BUGNUMBER = 450871; +var actual = 'No Crash'; +var expect = 'No Crash'; + +printBugNumber(BUGNUMBER); +START(summary); + + +if (typeof window == 'object') +{ + actual = expect = 'Test skipped for browser based tests due destruction of the prototype'; +} +else +{ + try + { + __proto__ = ; + .indexOf(this); + } + catch(ex) + { + } +} + +TEST(1, expect, actual); + +END(); diff --git a/js/tests/js1_5/Regress/regress-451884.js b/js/tests/js1_5/Regress/regress-451884.js new file mode 100755 index 000000000000..558f43898e04 --- /dev/null +++ b/js/tests/js1_5/Regress/regress-451884.js @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Martijn Wargers + * Brendan Eich + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +var gTestfile = 'regress-451884.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 451884; +var summary = 'Do not crash [@ QuoteString]'; +var actual = 'No Crash'; +var expect = 'No Crash'; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + try + { + (function(k){eval("k.y")})(); + } + catch(ex) + { + } + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/tests/js1_5/Regress/regress-453397.js b/js/tests/js1_5/Regress/regress-453397.js new file mode 100755 index 000000000000..9c1dec1c0d8e --- /dev/null +++ b/js/tests/js1_5/Regress/regress-453397.js @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Boris Zbarsky + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +var gTestfile = 'regress-453397.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 453397; +var summary = 'Do not assert with JIT: script->main <= target && target < script->code + script->length'; +var actual = 'No Crash'; +var expect = 'No Crash'; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + jit(true); + + function computeEscapeSpeed(real) { + for (var j = 1; j < 4; ++j) { + if (real > 2) { + } + } + } + + const numRows = 4; + const numCols = 4; + var realStep = 1.5; + for (var i = 0, curReal = -2.1; + i < numCols; + ++i, curReal += realStep) { + for (var j = 0; j < numRows; ++j) { + computeEscapeSpeed(curReal); + } + } + + jit(false); + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/tests/js1_5/Regress/regress-455758-01.js b/js/tests/js1_5/Regress/regress-455758-01.js new file mode 100755 index 000000000000..feb0e07dcd13 --- /dev/null +++ b/js/tests/js1_5/Regress/regress-455758-01.js @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Jesse Ruderman + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +var gTestfile = 'regress-455758-01.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 455758; +var summary = 'Do not assert: (m != JSVAL_INT) || isInt32(*vp)'; +var actual = 'No Crash'; +var expect = 'No Crash'; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + jit(true); + + (function() { for (var j = 0; j < 5; ++j) { var t = 3 % (-0); } })(); + + jit(false); + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/tests/js1_5/Regress/regress-455758-02.js b/js/tests/js1_5/Regress/regress-455758-02.js new file mode 100755 index 000000000000..f44a4bc8bd46 --- /dev/null +++ b/js/tests/js1_5/Regress/regress-455758-02.js @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Jesse Ruderman + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +var gTestfile = 'regress-455758-02.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 455758; +var summary = 'Do not crash: divide by zero'; +var actual = 'No Crash'; +var expect = 'No Crash'; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + jit(true); + + (function() { for (var j = 0; j < 5; ++j) { 3 % (-0); } })(); + + jit(false); + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/tests/js1_5/extensions/regress-452168.js b/js/tests/js1_5/extensions/regress-452168.js index 19b84dbaa3c6..6c8cac44ac11 100755 --- a/js/tests/js1_5/extensions/regress-452168.js +++ b/js/tests/js1_5/extensions/regress-452168.js @@ -52,14 +52,20 @@ function test() printBugNumber(BUGNUMBER); printStatus (summary); - jit(true); - gczeal(2); + if (typeof gczeal == 'undefined') + { + expect = actual = 'Test requires gczeal, skipped.'; + } + else + { + jit(true); + gczeal(2); - var a, b; gczeal(2); (function() { for (var p in this) { } })(); - - gczeal(0); - jit(false); + var a, b; gczeal(2); (function() { for (var p in this) { } })(); + gczeal(0); + jit(false); + } reportCompare(expect, actual, summary); exitFunc ('test'); diff --git a/js/tests/js1_6/extensions/regress-455464-04.js b/js/tests/js1_6/extensions/regress-455464-04.js index 9f0ed12b5337..3812bd2a99ec 100755 --- a/js/tests/js1_6/extensions/regress-455464-04.js +++ b/js/tests/js1_6/extensions/regress-455464-04.js @@ -54,13 +54,20 @@ function test() printBugNumber(BUGNUMBER); printStatus (summary); - jit(true); - gczeal(2); + if (typeof gczeal == 'undefined') + { + expect = actual = 'Test requires gczeal, skipped.'; + } + else + { + jit(true); + gczeal(2); - a=b=c=d=0; this.__defineGetter__('g', gc); for each (y in this); + a=b=c=d=0; this.__defineGetter__('g', gc); for each (y in this); - gczeal(0); - jit(false); + gczeal(0); + jit(false); + } reportCompare(expect, actual, summary); diff --git a/js/tests/js1_7/expressions/regress-418051.js b/js/tests/js1_7/expressions/regress-418051.js new file mode 100755 index 000000000000..803e2e2cc388 --- /dev/null +++ b/js/tests/js1_7/expressions/regress-418051.js @@ -0,0 +1,67 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Jesse Ruderman + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +var gTestfile = 'regress-418051.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 418051; +var summary = 'Do not assert: (pnkey)->pn_arity == PN_NULLARY && ' + + '((pnkey)->pn_type == TOK_NUMBER || (pnkey)->pn_type == TOK_STRING || ' + + '(pnkey)->pn_type == TOK_NAME)'; +var actual = 'No Crash'; +var expect = 'No Crash'; + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + try + { + eval("({x:[]}={x}"); + } + catch(ex) + { + } + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/tests/js1_7/expressions/regress-451340.js b/js/tests/js1_7/expressions/regress-451340.js new file mode 100755 index 000000000000..f88d10264206 --- /dev/null +++ b/js/tests/js1_7/expressions/regress-451340.js @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Jesse Ruderman + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +var gTestfile = 'regress-451340.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 451340; +var summary = 'Do no crash [@ CheckDestructuring]'; +var actual = 'No Crash'; +var expect = 'No Crash'; + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + function x([y]) { } + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/tests/public-failures.txt b/js/tests/public-failures.txt index 3731f4ed0d88..26e3983f60e5 100644 --- a/js/tests/public-failures.txt +++ b/js/tests/public-failures.txt @@ -72,10 +72,10 @@ TEST_ID=e4x/extensions/regress-374025.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_ TEST_ID=e4x/extensions/regress-410192.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Proper quoting of attribute by uneval/toSource reason: Expected value '"v"', Actual value 'v' TEST_ID=ecma/Math/15.8.2.5.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.atan2(-0, 1) reason: wrong value TEST_ID=ecma/Math/15.8.2.5.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.atan2(-1, Infinity) reason: wrong value -TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-0.9) reason: wrong value -TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-Number.MIN_VALUE) reason: wrong value -TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-0.9) reason: wrong value -TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-Number.MIN_VALUE) reason: wrong value +TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-0.9) reason: wrong value +TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-Number.MIN_VALUE) reason: wrong value +TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-0.9) reason: wrong value +TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-Number.MIN_VALUE) reason: wrong value TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-0.9) reason: wrong value TEST_ID=ecma/Math/15.8.2.6.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.ceil(-Number.MIN_VALUE) reason: wrong value TEST_ID=ecma/String/15.5.4.6-2.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=var f = new Object( String.prototype.indexOf ); f('[object Window @ `.``*` (native @ `.``*`)]') reason: wrong value @@ -87,15 +87,15 @@ TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=.*, TEST_REPO=.*, TEST_BUILD TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value -TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value +TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value TEST_ID=ecma_3/Array/regress-322135-02.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION= TEST_ID=ecma_3/Array/regress-322135-02.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION= TEST_ID=ecma_3/Array/regress-322135-02.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION= @@ -301,6 +301,11 @@ TEST_ID=js1_5/Regress/regress-452495.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_B TEST_ID=js1_5/Regress/regress-452573-02.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported TEST_ID=js1_5/Regress/regress-452573-02.js, TEST_BRANCH=1.9.0, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported TEST_ID=js1_5/Regress/regress-452573-02.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported +TEST_ID=js1_5/Regress/regress-453397.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: script->main <= target && target < script->code + script->length, at `.``*`jsopcode.cpp: +TEST_ID=js1_5/Regress/regress-453397.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: script->main <= target && target < script->code + script->length, at `.``*`jsopcode.cpp: +TEST_ID=js1_5/Regress/regress-453397.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=; +TEST_ID=js1_5/Regress/regress-453397.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=; +TEST_ID=js1_5/Regress/regress-453397.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported TEST_ID=js1_5/Regress/regress-454981.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: size_t(p - cx->fp->slots) < cx->fp->script->nslots, at `.``*`jstracer.cpp: TEST_ID=js1_5/Regress/regress-454981.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION= TEST_ID=js1_5/decompilation/regress-351219.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of immutable infinity, NaN decompile Infinity as 1/0 reason: Expected value ' function ( ) { return 1 / 0 ; } ', Actual value ' function ( ) { return Infinity ; } ' @@ -533,6 +538,9 @@ TEST_ID=js1_7/decompilation/regress-380506.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_ID=js1_7/decompilation/regress-380506.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of nested-for and for-if comprehensions reason: Expected value ' function ( ) { return [ i * j for ( i in [ 0 ] ) for ( j in [ 1 ] ) ] ; } ', Actual value ' function ( ) { return [ i * j for ( i in [ 0 ] ) ] ; } ' TEST_ID=js1_7/decompilation/regress-381108.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=decompilation of object literal should have space following : reason: Expected value 'true', Actual value 'false' TEST_ID=js1_7/decompilation/regress-429252.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=trap should not change decompilation of { let x }: after trap reason: Expected value ' function f ( ) { { let x ; } } ', Actual value ' function f ( ) { { let x ; } let x ; } ' +TEST_ID=js1_7/expressions/regress-418051.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: (pnkey)->pn_arity == PN_NULLARY && ((pnkey)->pn_type == TOK_NUMBER || (pnkey)->pn_type == TOK_STRING || (pnkey)->pn_type == TOK_NAME), at `.``*`jsparse.c: +TEST_ID=js1_7/expressions/regress-418051.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: (pnkey)->pn_arity == PN_NULLARY && ((pnkey)->pn_type == TOK_NUMBER || (pnkey)->pn_type == TOK_STRING || (pnkey)->pn_type == TOK_NAME), at `.``*`jsparse.c: +TEST_ID=js1_7/expressions/regress-418051.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL, TEST_DESCRIPTION=; TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: !fp->blockChain || OBJ_GET_PARENT(cx, obj) == fp->blockChain, at `.``*`jsinterp.c: TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED.*, TEST_DESCRIPTION=`.``*`Assertion failure: !fp->blockChain || OBJ_GET_PARENT(cx, obj) == fp->blockChain, at `.``*`jsinterp.c: TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL.*, TEST_DESCRIPTION= @@ -650,5 +658,5 @@ TEST_ID=js1_8_1/String/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_ TEST_ID=js1_8_1/String/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=OGHAM SPACE MARK:"\u1680\u1680\u1680a\u1680\u1680\u1680".trimRight() reason: Expected value '\u1680\u1680\u1680a', Actual value '\u1680\u1680\u1680a\u1680\u1680\u1680' TEST_ID=js1_8_1/String/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=OGHAM SPACE MARK:"a\u1680\u1680\u1680".trim() reason: Expected value 'a', Actual value 'a\u1680\u1680\u1680' TEST_ID=js1_8_1/String/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=OGHAM SPACE MARK:"a\u1680\u1680\u1680".trimRight() reason: Expected value 'a', Actual value 'a\u1680\u1680\u1680' -TEST_ID=js1_8_1/trace/trace-test.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 6 SIGABRT, TEST_DESCRIPTION=`.``*`Assertion failure: size_t(p - cx->fp->slots) < cx->fp->script->nslots, at jstracer.cpp: +TEST_ID=js1_8_1/trace/trace-test.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 6 SIGABRT, TEST_DESCRIPTION=`.``*`Assertion failure: size_t(p - cx->fp->slots) < cx->fp->script->nslots, at `.``*`jstracer.cpp: TEST_ID=js1_8_1/trace/trace-test.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_CPUSPEED=.*, TEST_TIMEZONE=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION= diff --git a/js/tests/universe.data b/js/tests/universe.data index 1bd09145015e..7ea46fbc3176 100644 --- a/js/tests/universe.data +++ b/js/tests/universe.data @@ -1,35 +1,69 @@ +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser +TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=darwin, TEST_KERNEL=9.5.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell +TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser +TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser +TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser +TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp index 5ccba28a7dfd..e023e85de1a9 100644 --- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -1090,32 +1090,24 @@ void nsDisplayTransform::Paint(nsDisplayListBuilder *aBuilder, nsIRenderingContext *aCtx, const nsRect &aDirtyRect) { - /* Here's how this is going to work: - * 1. Convert the stored transform matrix into a gfxMatrix - * 2. Read out the old graphics matrix. - * 3. Compute the net graphics matrix at this point. - * 4. Set that as the active matrix. - * 5. Apply the inverse transform to the dirty rect so that children think - * they're drawing in local space. - * 6. Render everything. - * 7. Reset the matrix. + /* Get the local transform matrix with which we'll transform all wrapped + * elements. If this matrix is singular, we shouldn't display anything + * and can abort. */ + gfxMatrix newTransformMatrix = + GetResultingTransformMatrix(mFrame, aBuilder->ToReferenceFrame(mFrame), + mFrame->PresContext()->AppUnitsPerDevPixel(), + nsnull); + if (newTransformMatrix.IsSingular()) + return; + /* Get the context and automatically save and restore it. */ gfxContext* gfx = aCtx->ThebesContext(); gfxContextAutoSaveRestore autoRestorer(gfx); - /* Unit conversion is based on the local presentation context. */ - float factor = mFrame->PresContext()->AppUnitsPerDevPixel(); - - /* Compute the new matrix by taking the old matrix and multiplying the - * transform matrix of this frame only. The new transform is prepended to - * the old transform, since that way, if we have several stacked transforms, - * the innermost transform is applied first. + /* Get the new CTM by applying this transform after all of the + * transforms preceding it. */ - gfxMatrix newTransformMatrix = - GetResultingTransformMatrix(mFrame, aBuilder->ToReferenceFrame(mFrame), - factor, nsnull); - newTransformMatrix.Multiply(gfx->CurrentMatrix()); /* Set the matrix for the transform based on the old matrix and the new diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index ce709ef85067..52be4b169c83 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -1810,13 +1810,16 @@ static PRBool DoDelayedStop(nsPluginInstanceOwner *aInstanceOwner, PRBool aDelayedStop) { // Don't delay stopping QuickTime (bug 425157), Flip4Mac (bug 426524), - // XStandard (bug 430219), CMISS Zinc (bug 429604). + // XStandard (bug 430219), CMISS Zinc (bug 429604). ARM Flash (454756) if (aDelayedStop #ifndef XP_WIN && !::MatchPluginName(aInstanceOwner, "QuickTime") && !::MatchPluginName(aInstanceOwner, "Flip4Mac") && !::MatchPluginName(aInstanceOwner, "XStandard plugin") && !::MatchPluginName(aInstanceOwner, "CMISS Zinc Plugin") +#endif +#if defined(XP_UNIX) && defined(__arm__) + && !::MatchPluginName(aInstanceOwner, "Shockwave Flash") #endif ) { nsCOMPtr evt = new nsStopPluginRunnable(aInstanceOwner); diff --git a/layout/reftests/reftest-sanity/reftest.list b/layout/reftests/reftest-sanity/reftest.list index 672658552ce8..3eaa5b4b1f71 100644 --- a/layout/reftests/reftest-sanity/reftest.list +++ b/layout/reftests/reftest-sanity/reftest.list @@ -3,12 +3,13 @@ != data:text/plain,HELLO about:blank # these tests make sure async reftests work: -== test-async.xul test-async-ref.xul +== test-async.xul test-async-ref.xul == test-async.html test-async-ref.html -# This makes sure that the harness is choosing HTML vs. XHTML processing -# based on the file extensions. +# Makes sure that the file: protocol handler and HTTP server both +# choose HTML vs. XHTML processing based on the file extensions. != html-vs-xhtml-by-extension.html html-vs-xhtml-by-extension.xhtml +HTTP != html-vs-xhtml-by-extension.html html-vs-xhtml-by-extension.xhtml # make sure red and green colors are not the default and are different from # each other diff --git a/layout/reftests/svg/mask-transformed-01-ref.svg b/layout/reftests/svg/mask-transformed-01-ref.svg new file mode 100644 index 000000000000..54cbb68ebe8d --- /dev/null +++ b/layout/reftests/svg/mask-transformed-01-ref.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/layout/reftests/svg/mask-transformed-01.svg b/layout/reftests/svg/mask-transformed-01.svg new file mode 100644 index 000000000000..8b5a8dc57a19 --- /dev/null +++ b/layout/reftests/svg/mask-transformed-01.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index 3ed770b7d6cc..b9362c012139 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -52,6 +52,8 @@ fails == inline-in-xul-basic-01.xul pass.svg == invalid-text-01.svg pass.svg == linearGradient-basic-01.svg pass.svg == linearGradient-basic-02.svg pass.svg +# Bug 456323 +# == mask-transformed-01.svg mask-transformed-01-ref.svg == nested-viewBox-01.svg pass.svg == objectBoundingBox-and-pattern-01a.svg objectBoundingBox-and-pattern-01-ref.svg == objectBoundingBox-and-pattern-01b.svg objectBoundingBox-and-pattern-01-ref.svg diff --git a/layout/reftests/transform/reftest.list b/layout/reftests/transform/reftest.list index d97c7f869486..75124fe4bc58 100644 --- a/layout/reftests/transform/reftest.list +++ b/layout/reftests/transform/reftest.list @@ -1,16 +1,20 @@ +# Transforms specifying singular matrices shouldn't display at all. +# NOTE: Regressions might manifest themselves as reftest timeouts on +# this test. +== singular-1a.html about:blank # Multiple transforms should act identically to nested divs. == compound-1a.html compound-1-ref.html != compound-1a.html compound-1-fail.html # translatex should act like position: relative == translatex-1a.html translatex-1-ref.html -random == translatex-1b.html translatex-1-ref.html # bug 455138 +== translatex-1b.html translatex-1-ref.html == translatex-1c.html translatex-1-ref.html == translatex-1d.html translatex-1-ref.html == translatex-1e.html translatex-1-ref.html == translatex-1a.html translatex-1-ref-2.html # translatey should act like position: relative == translatey-1a.html translatey-1-ref.html -random == translatey-1b.html translatey-1-ref.html # bug 455138 +== translatey-1b.html translatey-1-ref.html == translatey-1c.html translatey-1-ref.html == translatey-1d.html translatey-1-ref.html == translatey-1e.html translatey-1-ref.html @@ -19,36 +23,40 @@ random == translatey-1b.html translatey-1-ref.html # bug 455138 == translatey-2.html translatey-1-ref.html # translate should act like position: relative != translate-1a.html translate-1-ref.html -random == translate-1b.html translate-1-ref.html # bug 455138 +== translate-1b.html translate-1-ref.html == translate-1c.html translate-1-ref.html == translate-1d.html translate-1-ref.html == translate-1e.html translate-1-ref.html == translate-2a.html translate-2-ref.html -# rotate: Several rotations of the same object should be idempotent -== rotate-1a.html rotate-1-ref.html -== rotate-1b.html rotate-1-ref.html -== rotate-1c.html rotate-1-ref.html -== rotate-1d.html rotate-1-ref.html -== rotate-1e.html rotate-1-ref.html -# rotate: 90deg rotations should be indistinguishable from objects constructed to look the same. +# rotate: Several rotations of the same object should be idempotent. These +# tests are currently disabled because of subpixel (< 0.00001 gfx units) +# rounding errors. +random == rotate-1a.html rotate-1-ref.html +random == rotate-1b.html rotate-1-ref.html +random == rotate-1c.html rotate-1-ref.html +random == rotate-1d.html rotate-1-ref.html +random == rotate-1e.html rotate-1-ref.html +# rotate: 90deg rotations should be indistinguishable from objects constructed +# to look the same. == rotate-2a.html rotate-2-ref.html -# -moz-transform-origin: We should NOT get the same images when using different -moz-transform-origins. +# -moz-transform-origin: We should NOT get the same images when using different +# -moz-transform-origins. != origin-1a.html origin-1-ref.html != origin-1b.html origin-1-ref.html -# -moz-transform-origin: We should get the same images when using equivalent -moz-transform-origins. +# -moz-transform-origin: We should get the same images when using equivalent +# -moz-transform-origins. == origin-2a.html origin-2-ref.html == origin-2b.html origin-2-ref.html == origin-2c.html origin-2-ref.html # "Translate" with percentages should be indistinguishable from translate with -# equivalent values. This entire family of reftests has subpixel rounding -# errors, however, and so they're marked "random" until a resolution is found. -random == percent-1a.html percent-1-ref.html -random == percent-1b.html percent-1-ref.html -random == percent-1c.html percent-1-ref.html -random == percent-1d.html percent-1-ref.html # bug 455138 -random == percent-1e.html percent-1-ref.html # bug 455138 -random == percent-1f.html percent-1-ref.html # bug 455138 -random == percent-1g.html percent-1-ref.html +# equivalent values. +== percent-1a.html percent-1-ref.html +== percent-1b.html percent-1-ref.html +== percent-1c.html percent-1-ref.html +== percent-1d.html percent-1-ref.html +== percent-1e.html percent-1-ref.html +== percent-1f.html percent-1-ref.html +== percent-1g.html percent-1-ref.html # Transformed elements are abs-pos and fixed-pos containing blocks. == abspos-1a.html abspos-1-ref.html == abspos-1b.html abspos-1-ref.html diff --git a/layout/reftests/transform/rotate-1-ref.html b/layout/reftests/transform/rotate-1-ref.html index f5ce8dbae528..4ebbf5a568ff 100644 --- a/layout/reftests/transform/rotate-1-ref.html +++ b/layout/reftests/transform/rotate-1-ref.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/reftests/transform/rotate-1a.html b/layout/reftests/transform/rotate-1a.html index 60f92f7616ba..fc8e67380d8a 100644 --- a/layout/reftests/transform/rotate-1a.html +++ b/layout/reftests/transform/rotate-1a.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/reftests/transform/rotate-1b.html b/layout/reftests/transform/rotate-1b.html index 2e01488438bc..79fa5c6b769e 100644 --- a/layout/reftests/transform/rotate-1b.html +++ b/layout/reftests/transform/rotate-1b.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/reftests/transform/rotate-1c.html b/layout/reftests/transform/rotate-1c.html index 61ffcd2865d1..780739ca2c2b 100644 --- a/layout/reftests/transform/rotate-1c.html +++ b/layout/reftests/transform/rotate-1c.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/reftests/transform/rotate-1d.html b/layout/reftests/transform/rotate-1d.html index 9243886f0c7d..ab44c7fc7fa5 100644 --- a/layout/reftests/transform/rotate-1d.html +++ b/layout/reftests/transform/rotate-1d.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/reftests/transform/rotate-1e.html b/layout/reftests/transform/rotate-1e.html index 71cfd3a92193..1f2ef1438137 100644 --- a/layout/reftests/transform/rotate-1e.html +++ b/layout/reftests/transform/rotate-1e.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/reftests/transform/singular-1a.html b/layout/reftests/transform/singular-1a.html new file mode 100644 index 000000000000..1ef61dc99cd0 --- /dev/null +++ b/layout/reftests/transform/singular-1a.html @@ -0,0 +1,9 @@ + + + + +
+ This shouldn't be visible. +
+ + diff --git a/layout/reftests/transform/translate-1b.html b/layout/reftests/transform/translate-1b.html index 9a8f25f76f12..a1e4b9f58dc3 100644 --- a/layout/reftests/transform/translate-1b.html +++ b/layout/reftests/transform/translate-1b.html @@ -2,7 +2,7 @@ -
+
Test Text
diff --git a/layout/style/nsStyleTransformMatrix.cpp b/layout/style/nsStyleTransformMatrix.cpp index a513e4b7911d..5afbb7ea0d0b 100644 --- a/layout/style/nsStyleTransformMatrix.cpp +++ b/layout/style/nsStyleTransformMatrix.cpp @@ -48,7 +48,8 @@ #include /* Arguably, this loses precision, but it doesn't hurt! */ -const float kPi = 3.1415926535897932384626433f; +const float kPi = 3.1415926535897932384626433832795f; +const float kTwoPi = 6.283185307179586476925286766559f; const float kEpsilon = 0.0001f; /* Computes tan(theta). For values of theta such that @@ -73,8 +74,20 @@ static float SafeTangent(float aTheta) return sinTheta / cosTheta; } +/* Helper function to constrain an angle to a value in the range [-pi, pi), + * which reduces accumulated floating point errors from trigonometric functions + * by keeping the error terms small. + */ +static inline float ConstrainFloatValue(float aValue) +{ + /* Get in range [0, 2pi) */ + aValue = fmod(aValue, kTwoPi); + return aValue >= kPi ? aValue - kTwoPi : aValue; +} + /* Converts an nsCSSValue containing an angle into an equivalent measure - * of radians. + * of radians. The value is guaranteed to be in the range (-pi, pi) to + * minimize error. */ static float CSSToRadians(const nsCSSValue &aValue) { @@ -84,13 +97,15 @@ static float CSSToRadians(const nsCSSValue &aValue) switch (aValue.GetUnit()) { case eCSSUnit_Degree: /* 360deg = 2pi rad, so deg = pi / 180 rad */ - return aValue.GetFloatValue() * kPi / 180.0f; + return + ConstrainFloatValue(aValue.GetFloatValue() * kPi / 180.0f); case eCSSUnit_Grad: /* 400grad = 2pi rad, so grad = pi / 200 rad */ - return aValue.GetFloatValue() * kPi / 200.0f; + return + ConstrainFloatValue(aValue.GetFloatValue() * kPi / 200.0f); case eCSSUnit_Radian: /* Yay identity transforms! */ - return aValue.GetFloatValue(); + return ConstrainFloatValue(aValue.GetFloatValue()); default: NS_NOTREACHED("Unexpected angular unit!"); return 0.0f; @@ -124,16 +139,18 @@ void nsStyleTransformMatrix::SetToIdentity() /* Adds the constant translation to the scale factor translation components. */ nscoord nsStyleTransformMatrix::GetXTranslation(const nsRect& aBounds) const { - return nscoord(aBounds.width * mX[0] + aBounds.height * mY[0]) + mDelta[0]; + return NSToCoordRound(aBounds.width * mX[0] + aBounds.height * mY[0]) + + mDelta[0]; } nscoord nsStyleTransformMatrix::GetYTranslation(const nsRect& aBounds) const { - return nscoord(aBounds.width * mX[1] + aBounds.height * mY[1]) + mDelta[1]; + return NSToCoordRound(aBounds.width * mX[1] + aBounds.height * mY[1]) + + mDelta[1]; } /* GetThebesMatrix converts the stored matrix in a few steps. */ gfxMatrix nsStyleTransformMatrix::GetThebesMatrix(const nsRect& aBounds, - PRInt32 aScale) const + float aScale) const { /* Compute the graphics matrix. We take the stored main elements, along with * the delta, and add in the matrices: @@ -146,7 +163,6 @@ gfxMatrix nsStyleTransformMatrix::GetThebesMatrix(const nsRect& aBounds, * | 0 0 dy2| * height * | 0 0 0| */ - return gfxMatrix(mMain[0], mMain[1], mMain[2], mMain[3], NSAppUnitsToFloatPixels(GetXTranslation(aBounds), aScale), NSAppUnitsToFloatPixels(GetYTranslation(aBounds), aScale)); @@ -176,12 +192,10 @@ nsStyleTransformMatrix::operator *= (const nsStyleTransformMatrix &aOther) newMatrix[1] = aOther.mMain[0] * mMain[1] + aOther.mMain[1] * mMain[3]; newMatrix[2] = aOther.mMain[2] * mMain[0] + aOther.mMain[3] * mMain[2]; newMatrix[3] = aOther.mMain[2] * mMain[1] + aOther.mMain[3] * mMain[3]; - newDelta[0] = - NSCoordMultiply(aOther.mDelta[0], mMain[0]) + - NSCoordMultiply(aOther.mDelta[1], mMain[2]) + mDelta[0]; - newDelta[1] = - NSCoordMultiply(aOther.mDelta[0], mMain[1]) + - NSCoordMultiply(aOther.mDelta[1], mMain[3]) + mDelta[1]; + newDelta[0] = NSToCoordRound(aOther.mDelta[0] * mMain[0] + + aOther.mDelta[1] * mMain[2]) + mDelta[0]; + newDelta[1] = NSToCoordRound(aOther.mDelta[0] * mMain[1] + + aOther.mDelta[1] * mMain[3]) + mDelta[1]; /* For consistent terminology, let u0, u1, v0, and v1 be the four transform * coordinates from our matrix, and let x0, x1, y0, and y1 be the four diff --git a/layout/style/nsStyleTransformMatrix.h b/layout/style/nsStyleTransformMatrix.h index 89fedffc2971..38f8f21c95af 100644 --- a/layout/style/nsStyleTransformMatrix.h +++ b/layout/style/nsStyleTransformMatrix.h @@ -81,7 +81,7 @@ class nsStyleTransformMatrix * @param aFactor The number of app units per device pixel. * @return A Thebes matrix corresponding to the transform. */ - gfxMatrix GetThebesMatrix(const nsRect& aBounds, PRInt32 aFactor) const; + gfxMatrix GetThebesMatrix(const nsRect& aBounds, float aFactor) const; /** * Multiplies this matrix by another matrix, in that order. If A' @@ -175,7 +175,7 @@ class nsStyleTransformMatrix * | 0 0 1| */ float mMain[4]; - nscoord mDelta[2]; + nscoord mDelta[2]; float mX[2]; float mY[2]; }; diff --git a/layout/svg/base/src/nsSVGMaskFrame.cpp b/layout/svg/base/src/nsSVGMaskFrame.cpp index 1089a4f6938d..acc96094b377 100644 --- a/layout/svg/base/src/nsSVGMaskFrame.cpp +++ b/layout/svg/base/src/nsSVGMaskFrame.cpp @@ -106,20 +106,13 @@ nsSVGMaskFrame::ComputeMaskAlpha(nsSVGRenderState *aContext, nsSVGUtils::PaintChildWithEffects(aContext, nsnull, kid); } + gfxRect clipExtents = gfx->GetClipExtents(); gfx->Restore(); nsRefPtr pattern = gfx->PopGroup(); if (!pattern || pattern->CairoStatus()) return nsnull; - nsRefPtr surface = pattern->GetSurface(); - if (!surface || surface->CairoStatus()) - return nsnull; - - surface->SetDeviceOffset(gfxPoint(0,0)); - - gfxRect clipExtents = gfx->GetClipExtents(); - #ifdef DEBUG_tor fprintf(stderr, "clip extent: %f,%f %fx%f\n", clipExtents.X(), clipExtents.Y(), @@ -143,10 +136,11 @@ nsSVGMaskFrame::ComputeMaskAlpha(nsSVGRenderState *aContext, new gfxImageSurface(surfaceSize, gfxASurface::ImageFormatARGB32); if (!image || image->CairoStatus()) return nsnull; + image->SetDeviceOffset(-clipExtents.pos); gfxContext transferCtx(image); transferCtx.SetOperator(gfxContext::OPERATOR_SOURCE); - transferCtx.SetSource(surface); + transferCtx.SetPattern(pattern); transferCtx.Paint(); PRUint8 *data = image->Data(); @@ -172,10 +166,7 @@ nsSVGMaskFrame::ComputeMaskAlpha(nsSVGRenderState *aContext, } gfxPattern *retval = new gfxPattern(image); - if (retval) { - retval->SetMatrix(gfxMatrix().Translate(-clipExtents.pos)); - NS_ADDREF(retval); - } + NS_IF_ADDREF(retval); return retval; } diff --git a/toolkit/components/microformats/src/Microformats.js b/toolkit/components/microformats/src/Microformats.js index 111c4a1e7c1e..8d67d6b0b1c4 100644 --- a/toolkit/components/microformats/src/Microformats.js +++ b/toolkit/components/microformats/src/Microformats.js @@ -80,18 +80,39 @@ var Microformats = { Microformats[name].attributeValues); } + + + function isVisible(node, checkChildren) { + if (node.getBoundingClientRect) { + var box = node.getBoundingClientRect(); + } else { + var box = node.ownerDocument.getBoxObjectFor(node); + } + /* If the parent has is an empty box, double check the children */ + if ((box.height == 0) || (box.width == 0)) { + if (checkChildren && node.childNodes.length > 0) { + for(let i=0; i < node.childNodes.length; i++) { + if (node.childNodes[i].nodeType == Components.interfaces.nsIDOMNode.ELEMENT_NODE) { + /* For performance reasons, we only go down one level */ + /* of children */ + if (isVisible(node.childNodes[i], false)) { + return true; + } + } + } + } + return false + } + return true; + } + /* Create objects for the microformat nodes and put them into the microformats */ /* array */ for (let i = 0; i < microformatNodes.length; i++) { /* If showHidden undefined or false, don't add microformats to the list that aren't visible */ if (!options || !options.hasOwnProperty("showHidden") || !options.showHidden) { if (microformatNodes[i].ownerDocument) { - if (microformatNodes[i].getBoundingClientRect) { - var box = microformatNodes[i].getBoundingClientRect(); - } else { - var box = microformatNodes[i].ownerDocument.getBoxObjectFor(microformatNodes[i]); - } - if ((box.height == 0) || (box.width == 0)) { + if (!isVisible(microformatNodes[i], true)) { continue; } } @@ -439,6 +460,15 @@ var Microformats = { if (Microformats.matchClass(propnode, "value")) { return Microformats.parser.textGetter(parentnode, parentnode); } else { + /* Virtual case */ + if (!parentnode && (Microformats.getElementsByClassName(propnode, "type").length > 0)) { + var tempNode = propnode.cloneNode(true); + var typeNodes = Microformats.getElementsByClassName(tempNode, "type"); + for (let i=0; i < typeNodes.length; i++) { + typeNodes[i].parentNode.removeChild(typeNodes[i]); + } + return Microformats.parser.textGetter(tempNode); + } return Microformats.parser.textGetter(propnode, parentnode); } }, @@ -469,6 +499,15 @@ var Microformats = { if (Microformats.matchClass(propnode, "value")) { return Microformats.parser.textGetter(parentnode, parentnode); } else { + /* Virtual case */ + if (!parentnode && (Microformats.getElementsByClassName(propnode, "type").length > 0)) { + var tempNode = propnode.cloneNode(true); + var typeNodes = Microformats.getElementsByClassName(tempNode, "type"); + for (let i=0; i < typeNodes.length; i++) { + typeNodes[i].parentNode.removeChild(typeNodes[i]); + } + return Microformats.parser.textGetter(tempNode); + } return Microformats.parser.textGetter(propnode, parentnode); } } @@ -524,9 +563,6 @@ var Microformats = { datatypeHelper: function(prop, node, parentnode) { var result; var datatype = prop.datatype; - if (prop.implied) { - datatype = prop.subproperties[prop.implied].datatype; - } switch (datatype) { case "dateTime": result = Microformats.parser.dateTimeGetter(node, parentnode); @@ -554,10 +590,18 @@ var Microformats = { break; case "microformat": try { - result = new Microformats[prop.microformat].mfObject(node); + result = new Microformats[prop.microformat].mfObject(node, true); } catch (ex) { - /* We can swallow this exception. If the creation of the */ - /* mf object fails, then the node isn't a microformat */ + /* There are two reasons we get here, one because the node is not */ + /* a microformat and two because the node is a microformat and */ + /* creation failed. If the node is not a microformat, we just fall */ + /* through and use the default getter since there are some cases */ + /* (location in hCalendar) where a property can be either a microformat */ + /* or a string. If creation failed, we break and simply don't add the */ + /* microformat property to the parent microformat */ + if (ex != "Node is not a microformat (" + prop.microformat + ")") { + break; + } } if (result != undefined) { if (prop.microformat_property) { @@ -571,15 +615,11 @@ var Microformats = { } /* This handles the case where one property implies another property */ /* For instance, org by itself is actually org.organization-name */ - if (prop.implied && (result != undefined)) { - var temp = result; - result = {}; - result[prop.implied] = temp; - } if (prop.values && (result != undefined)) { var validType = false; for (let value in prop.values) { if (result.toLowerCase() == prop.values[value]) { + result = result.toLowerCase(); validType = true; break; } @@ -683,8 +723,6 @@ var Microformats = { } else { result = Microformats.parser.datatypeHelper(propobj, propnode); } - } else if (propobj.implied) { - result = Microformats.parser.datatypeHelper(propobj, propnode); } } else if (!result) { result = Microformats.parser.datatypeHelper(propobj, propnode, parentnode); @@ -1357,13 +1395,13 @@ var hCard_definition = { "org" : { subproperties: { "organization-name" : { + virtual: true }, "organization-unit" : { plural: true } }, - plural: true, - implied: "organization-name" + plural: true }, "photo" : { plural: true, @@ -1392,11 +1430,11 @@ var hCard_definition = { values: ["msg", "home", "work", "pref", "voice", "fax", "cell", "video", "pager", "bbs", "car", "isdn", "pcs"] }, "value" : { - datatype: "tel" + datatype: "tel", + virtual: true } }, - plural: true, - implied: "value" + plural: true }, "tz" : { }, diff --git a/toolkit/components/microformats/tests/test_Microformats.html b/toolkit/components/microformats/tests/test_Microformats.html index 338e958c7b7a..564068721faa 100644 --- a/toolkit/components/microformats/tests/test_Microformats.html +++ b/toolkit/components/microformats/tests/test_Microformats.html @@ -5,6 +5,13 @@ + +
@@ -93,53 +100,67 @@
1998-01-22
+ +
+ John Doe + abc;def +
+
+ Party + The White House +
+
+ Party + The White House +
-
- -John - -Doe - -
-
- -John - -Doe - -
-
- - John - -Doe - -
-
- -John - Doe - -
-
- - John - Doe - -
- -John - - -Doe - -
-
- -John -Doe - -
+
+ + John + + Doe + +
+
+ + John + + Doe + +
+
+ + John + + Doe + +
+
+ + John + Doe + +
+
+ + John + Doe + +
+
+ + John + + + Doe + +
+
+ + John + Doe + +
Austin - Sixth Street @@ -156,8 +177,17 @@
-
+ +
+
+
John Doe
+
+
+
John Smith
+
+
+
 
diff --git a/toolkit/components/viewsource/content/viewSourceUtils.js b/toolkit/components/viewsource/content/viewSourceUtils.js
index 9d60b13d6f25..ee8d58ddeb12 100644
--- a/toolkit/components/viewsource/content/viewSourceUtils.js
+++ b/toolkit/components/viewsource/content/viewSourceUtils.js
@@ -129,6 +129,11 @@ var gViewSourceUtils = {
           webBrowserPersist.persistFlags = this.mnsIWebBrowserPersist.PERSIST_FLAGS_REPLACE_EXISTING_FILES;
           webBrowserPersist.progressListener = this.viewSourceProgressListener;
           webBrowserPersist.saveURI(uri, null, null, null, null, file);
+
+          // register the file to be deleted on app exit
+          Components.classes["@mozilla.org/uriloader/external-helper-app-service;1"]
+                    .getService(Components.interfaces.nsPIExternalAppLauncher)
+                    .deleteTemporaryFileOnExit(file);
         } else {
           // we'll use nsIWebPageDescriptor to get the source because it may not have to refetch
           // the file from the server
@@ -240,6 +245,11 @@ var gViewSourceUtils = {
             // clean up
             coStream.close();
             foStream.close();
+
+            // register the file to be deleted on app exit
+            Components.classes["@mozilla.org/uriloader/external-helper-app-service;1"]
+                      .getService(Components.interfaces.nsPIExternalAppLauncher)
+                      .deleteTemporaryFileOnExit(this.file);
           }
 
           // Determine the command line arguments to pass to the editor.
diff --git a/toolkit/content/Makefile.in b/toolkit/content/Makefile.in
index 45881f489e2b..6aac442cc232 100644
--- a/toolkit/content/Makefile.in
+++ b/toolkit/content/Makefile.in
@@ -45,7 +45,32 @@ CHROME_DEPS = buildconfig.html
 
 include $(DEPTH)/config/autoconf.mk
 
-DEFINES += -DMOZ_APP_VERSION=$(MOZ_APP_VERSION)
+DEFINES += \
+  -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
+  -Dtarget="$(target)" \
+  -Dac_configure_args="$(ac_configure_args)" \
+  -DCC="$(CC)" \
+  -DCC_VERSION="$(CC_VERSION)" \
+  -DCFLAGS="$(CFLAGS)" \
+  -DCXX="$(CXX)" \
+  -DCXX_VERSION="$(CXX_VERSION)" \
+  -DCXXFLAGS="$(CXXFLAGS)" \
+  -DCPPFLAGS="$(CPPFLAGS)" \
+  $(NULL)
+
+CHANGESET := $(shell cd $(topsrcdir) ; hg identify 2>/dev/null | cut -f1 -d' ')
+ifdef CHANGESET
+DEFINES += -DSOURCE_CHANGESET="$(CHANGESET)"
+endif
+
+# strip a trailing slash from the repo URL because it's not always present,
+# and we want to construct a working URL in buildconfig.html
+# make+shell+sed = awful
+_dollar=$$
+SOURCE_REPO := $(shell hg -R $(topsrcdir) showconfig paths.default 2>/dev/null | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" )
+ifdef SOURCE_REPO
+DEFINES += -DSOURCE_REPO="$(SOURCE_REPO)"
+endif
 
 ifdef ENABLE_TESTS
 DIRS += tests
@@ -55,6 +80,3 @@ EXTRA_JS_MODULES = debug.js
 EXTRA_PP_JS_MODULES = debug.js
 
 include $(topsrcdir)/config/rules.mk
-
-distclean::
-	$(RM) -f buildconfig.html
diff --git a/toolkit/content/buildconfig.html.in b/toolkit/content/buildconfig.html
similarity index 81%
rename from toolkit/content/buildconfig.html.in
rename to toolkit/content/buildconfig.html
index 76c23e1b5b21..b37d11d3189a 100644
--- a/toolkit/content/buildconfig.html.in
+++ b/toolkit/content/buildconfig.html
@@ -1,4 +1,5 @@
 
+#filter substitution
 
 
   about:buildconfig
@@ -7,6 +8,12 @@
 
 

about:buildconfig

+#ifdef SOURCE_REPO +#ifdef SOURCE_CHANGESET +

Source

+

Built from @SOURCE_REPO@/rev/@SOURCE_CHANGESET@

+#endif +#endif

Build platform

diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn index 7dcd644d412b..dac13fd771b0 100644 --- a/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn @@ -11,7 +11,7 @@ toolkit.jar: * content/global/about.xhtml (about.xhtml) content/global/plugins.html content/global/plugins.css -+ content/global/buildconfig.html (buildconfig.html) +*+ content/global/buildconfig.html (buildconfig.html) + content/global/charsetOverlay.js (charsetOverlay.js) + content/global/charsetOverlay.xul (charsetOverlay.xul) *+ content/global/commonDialog.js (commonDialog.js) diff --git a/toolkit/mozapps/installer/windows/nsis/common.nsh b/toolkit/mozapps/installer/windows/nsis/common.nsh index 3cdc1d43d561..8b869a47f519 100755 --- a/toolkit/mozapps/installer/windows/nsis/common.nsh +++ b/toolkit/mozapps/installer/windows/nsis/common.nsh @@ -3189,9 +3189,11 @@ * program files directory path and the current install location to determine * the sub-directory in the VirtualStore directory. * - * $R7 = stores the value of the open command and the path macros return values - * $R8 = stores the handler's registry key name - * $R9 = _DEFAULT_VALUE and _RESULT + * $R5 = various path values. + * $R6 = length of the long path to $PROGRAMFILES + * $R7 = length of the long path to $INSTDIR + * $R8 = long path to $PROGRAMFILES + * $R9 = long path to $INSTDIR */ !macro CleanVirtualStore @@ -3210,39 +3212,38 @@ Push $R9 Push $R8 Push $R7 + Push $R6 + Push $R5 - StrLen $R9 "$INSTDIR" - - ; Get the installation's directory name including the preceding slash - start: - IntOp $R8 $R8 - 1 - IntCmp $R8 -$R9 end end +1 - StrCpy $R7 "$INSTDIR" 1 $R8 - StrCmp $R7 "\" +1 start - - StrCpy $R9 "$INSTDIR" "" $R8 + ${${_MOZFUNC_UN}GetLongPath} "$INSTDIR" $R9 + StrCmp $R9 "" end +1 + ${${_MOZFUNC_UN}GetLongPath} "$PROGRAMFILES" $R8 StrCmp $R8 "" end +1 - ClearErrors - ${${_MOZFUNC_UN}GetLongPath} "$PROGRAMFILES$R9" $R8 - StrCmp $R8 "" end +1 - ${${_MOZFUNC_UN}GetLongPath} "$INSTDIR" $R7 - StrCmp $R7 "" end +1 + StrLen $R7 "$R9" + StrLen $R6 "$R8" + ; Only continue If the length of $INSTDIR is greater than the length of + ; $PROGRAMFILES + IntCmp $R7 $R6 end end +1 - ; Compare the installation's directory path with the path created by - ; concatenating the installation's directory name and the path to the - ; program files directory. - StrCmp "$R7" "$R8" +1 end + ; Copy from the start of $INSTDIR the length of $PROGRAMFILES + StrCpy $R5 "$R9" $R6 + StrCmp "$R5" "$R8" +1 end ; Check if $INSTDIR is under $PROGRAMFILES - StrCpy $R8 "$PROGRAMFILES" "" 2 ; Remove the drive letter and colon - StrCpy $R7 "$PROFILE\AppData\Local\VirtualStore$R8$R9" + ; Remove the drive letter and colon from the $INSTDIR long path + StrCpy $R5 "$R9" "" 2 + StrCpy $R5 "$PROFILE\AppData\Local\VirtualStore$R5" + ${${_MOZFUNC_UN}GetLongPath} "$R5" $R5 + StrCmp $R5 "" end +1 - IfFileExists "$R7" 0 end - RmDir /r "$R7" + IfFileExists "$R5" +1 end + RmDir /r "$R5" end: ClearErrors + Pop $R5 + Pop $R6 Pop $R7 Pop $R8 Pop $R9 @@ -3288,11 +3289,11 @@ * @param _REL_PROFILE_PATH * The relative path to the profile directory from $LOCALAPPDATA. * - * $R6 = stores single characters to find the first "\" from the right of - * $INSTDIR and the long path to $INSTDIR - * $R7 = long path of the concatenation of Program Files and the installation - * directory name (e.g. $PROGRAMFILES$R68) - * $R8 = installation directory name + * $R4 = various path values. + * $R5 = length of the long path to $PROGRAMFILES + * $R6 = length of the long path to $INSTDIR + * $R7 = long path to $PROGRAMFILES + * $R8 = long path to $INSTDIR * $R9 = _REL_PROFILE_PATH */ !macro CleanUpdatesDir @@ -3313,41 +3314,42 @@ Push $R8 Push $R7 Push $R6 + Push $R5 + Push $R4 - StrCmp $R9 "" end +1 ; The path to the app's profiles is required - StrLen $R8 "$INSTDIR" - - ; Get the installation's directory name including the preceding slash - start: - IntOp $R7 $R7 - 1 - IntCmp $R7 -$R8 end end +1 - StrCpy $R6 "$INSTDIR" 1 $R7 - StrCmp $R6 "\" +1 start - - StrCpy $R8 "$INSTDIR" "" $R7 + StrCmp $R9 "" end +1 ; The relative path to the app's profiles is required + ${${_MOZFUNC_UN}GetLongPath} "$INSTDIR" $R8 StrCmp $R8 "" end +1 - - ClearErrors - ${${_MOZFUNC_UN}GetLongPath} "$PROGRAMFILES$R8" $R7 + ${${_MOZFUNC_UN}GetLongPath} "$PROGRAMFILES" $R7 StrCmp $R7 "" end +1 - ${${_MOZFUNC_UN}GetLongPath} "$INSTDIR" $R6 - StrCmp $R6 "" end +1 - ; Compare the installation's directory path with the path created by - ; concatenating the installation's directory name and the path to the - ; program files directory. - StrCmp "$R6" "$R7" +1 end + StrLen $R6 "$R8" + StrLen $R5 "$R7" + ; Only continue If the length of $INSTDIR is greater than the length of + ; $PROGRAMFILES + IntCmp $R6 $R5 end end +1 + + ; Copy from the start of $INSTDIR the length of $PROGRAMFILES + StrCpy $R4 "$R8" $R5 + StrCmp "$R4" "$R7" +1 end ; Check if $INSTDIR is under $PROGRAMFILES + + ; Copy the relative path to $INSTDIR from $PROGRAMFILES + StrCpy $R4 "$R8" "" $R5 - StrCpy $R6 "$LOCALAPPDATA\$R9$R8" + ; Concatenate the path to $LOCALAPPDATA the relative profile path and the + ; relative path to $INSTDIR from $PROGRAMFILES + StrCpy $R4 "$LOCALAPPDATA\$R9$R4" + ${${_MOZFUNC_UN}GetLongPath} "$R4" $R4 + StrCmp $R4 "" end +1 - ${${_MOZFUNC_UN}GetLongPath} "$R6" $R6 - StrCmp $R6 "" end +1 - IfFileExists "$R6\updates" +1 end - RmDir /r "$R6" + IfFileExists "$R4\updates" +1 end + RmDir /r "$R4" end: ClearErrors + Pop $R4 + Pop $R5 Pop $R6 Pop $R7 Pop $R8 @@ -3823,7 +3825,7 @@ * will be inserted below this string. * * @param _SUFFIX_ERROR_CREATEDIR - * Prefix for the directory creation error message. The directory path + * Suffix for the directory creation error message. The directory path * will be inserted above this string. * * $0 = destination file's parent directory used in the create_dir label diff --git a/toolkit/toolkit-makefiles.sh b/toolkit/toolkit-makefiles.sh index b40e6105a1d6..c363138c2e2c 100644 --- a/toolkit/toolkit-makefiles.sh +++ b/toolkit/toolkit-makefiles.sh @@ -646,7 +646,6 @@ MAKEFILES_xulapp=" toolkit/crashreporter/google-breakpad/src/common/windows/Makefile toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/Makefile toolkit/content/Makefile - toolkit/content/buildconfig.html toolkit/obsolete/Makefile toolkit/components/alerts/Makefile toolkit/components/alerts/public/Makefile diff --git a/widget/src/cocoa/crashtests/444260-1.xul b/widget/src/cocoa/crashtests/444260-1.xul new file mode 100644 index 000000000000..f1a84023df65 --- /dev/null +++ b/widget/src/cocoa/crashtests/444260-1.xul @@ -0,0 +1,3 @@ + + + diff --git a/widget/src/cocoa/crashtests/444864-1.html b/widget/src/cocoa/crashtests/444864-1.html new file mode 100644 index 000000000000..f8bac76e6a0a --- /dev/null +++ b/widget/src/cocoa/crashtests/444864-1.html @@ -0,0 +1,6 @@ + + + +
+ + diff --git a/widget/src/cocoa/crashtests/449111-1.html b/widget/src/cocoa/crashtests/449111-1.html new file mode 100644 index 000000000000..44945918032c --- /dev/null +++ b/widget/src/cocoa/crashtests/449111-1.html @@ -0,0 +1,4 @@ + + +
+ diff --git a/widget/src/cocoa/crashtests/crashtests.list b/widget/src/cocoa/crashtests/crashtests.list index 91ff687d6fdc..3f2cf1bd1495 100644 --- a/widget/src/cocoa/crashtests/crashtests.list +++ b/widget/src/cocoa/crashtests/crashtests.list @@ -1,3 +1,6 @@ load 397209-1.html load 403296-1.xhtml load 419737-1.html +load 444260-1.xul +load 444864-1.html +load 449111-1.html diff --git a/widget/src/cocoa/nsChildView.mm b/widget/src/cocoa/nsChildView.mm index 59c0880346fa..4513ee540764 100644 --- a/widget/src/cocoa/nsChildView.mm +++ b/widget/src/cocoa/nsChildView.mm @@ -496,23 +496,6 @@ - (void)clickHoldCallback:(id)inEvent; GeckoRectToNSRect(mBounds, r); mView = [CreateCocoaView(r) retain]; if (!mView) return NS_ERROR_FAILURE; - -#if DEBUG - // if our parent is a popup window, we're most certainly coming from a