Version in base suite: 1.9.0.13-0lenny1 Version in overlay suite: 1.9.0.14-0lenny1 Base version: xulrunner_1.9.0.13-0lenny1 Target version: xulrunner_1.9.0.15-0lenny1 Base file: /org/ftp.debian.org/ftp/pool/main/x/xulrunner/xulrunner_1.9.0.13-0lenny1.dsc Target file: /org/ftp.debian.org/queue/p-u-new/xulrunner_1.9.0.15-0lenny1.dsc accessible/src/msaa/nsAccessibleWrap.cpp | 7 accessible/src/xul/nsXULTabAccessible.cpp | 14 browser/app/blocklist.xml | 16 browser/app/module.ver | 4 browser/components/feeds/src/FeedWriter.js | 4 browser/components/nsBrowserGlue.js | 13 browser/components/places/content/places.js | 10 browser/components/sessionstore/src/nsSessionStore.js | 9 browser/config/version.txt | 2 caps/src/nsScriptSecurityManager.cpp | 9 client.mk | 10 config/milestone.txt | 2 config/version_win.pl | 5 configure | 2 content/base/src/nsContentUtils.cpp | 2 content/html/document/src/nsHTMLDocument.cpp | 74 + content/html/document/src/nsHTMLDocument.h | 2 content/html/document/src/nsPluginDocument.cpp | 50 content/xul/document/src/nsXULDocument.cpp | 19 content/xul/document/src/nsXULDocument.h | 1 content/xul/templates/src/nsXULTemplateBuilder.cpp | 10 content/xul/templates/src/nsXULTemplateBuilder.h | 2 debian/changelog | 26 debian/control | 2 debian/libmozjs1d.symbols | 2 docshell/test/browser/browser_bug134911.js | 9 docshell/test/browser/browser_bug92473.js | 9 dom/public/nsDOMClassInfoID.h | 1 dom/src/base/nsDOMClassInfo.cpp | 7 dom/src/base/nsGlobalWindow.cpp | 10 dom/src/base/nsGlobalWindow.h | 2 editor/libeditor/html/nsHTMLEditor.cpp | 4 extensions/irc/js/lib/command-manager.js | 13 extensions/irc/js/lib/connection-xpcom.js | 82 + extensions/irc/js/lib/dcc.js | 12 extensions/irc/js/lib/irc.js | 45 extensions/irc/js/lib/menu-manager.js | 46 extensions/irc/js/lib/utils.js | 38 extensions/irc/js/tests/toys.js | 2 extensions/irc/locales/en-US/chrome/chatzilla.properties | 120 + extensions/irc/xpi/resources/install.rdf | 2 extensions/irc/xul/content/about/about.xul | 1 extensions/irc/xul/content/ceip/ceip.js | 1 extensions/irc/xul/content/channels.js | 5 extensions/irc/xul/content/commands.js | 75 - extensions/irc/xul/content/config.js | 6 extensions/irc/xul/content/config.xul | 1 extensions/irc/xul/content/handlers.js | 63 - extensions/irc/xul/content/menus.js | 33 extensions/irc/xul/content/mungers.js | 172 ++ extensions/irc/xul/content/networks.js | 2 extensions/irc/xul/content/output-base.css | 35 extensions/irc/xul/content/output-window.js | 2 extensions/irc/xul/content/prefs.js | 12 extensions/irc/xul/content/prefsOverlay.xul | 2 extensions/irc/xul/content/scripts.xul | 1 extensions/irc/xul/content/static.js | 136 ++ extensions/schema-validation/src/nsSchemaLoader.cpp | 8 extensions/schema-validation/src/nsSchemaPrivate.h | 5 extensions/xforms/nsXFormsLoadElement.cpp | 6 extensions/xforms/nsXFormsSetFocusElement.cpp | 59 extensions/xforms/nsXFormsSubmissionElement.cpp | 81 - extensions/xforms/nsXFormsToggleElement.cpp | 58 extensions/xforms/nsXFormsUtils.cpp | 75 + extensions/xforms/nsXFormsUtils.h | 23 extensions/xforms/resources/content/xforms-prefs-ui.xul | 1 extensions/xforms/resources/content/xforms-prefs.xul | 1 extensions/xforms/resources/content/xforms.css | 10 gfx/src/thebes/nsThebesFontMetrics.cpp | 3 js/src/js.c | 126 +- js/src/jsapi.c | 4 js/src/jsdbgapi.c | 12 js/src/jsdtoa.c | 27 js/src/jsinterp.c | 68 - js/src/jsregexp.c | 31 js/src/jsregexp.h | 8 js/src/jsstr.c | 2 js/src/xpconnect/src/XPCSafeJSObjectWrapper.cpp | 29 js/src/xpconnect/src/xpcJSWeakReference.cpp | 37 js/src/xpconnect/src/xpccallcontext.cpp | 11 js/src/xpconnect/src/xpcprivate.h | 9 js/src/xpconnect/src/xpcvariant.cpp | 70 - js/src/xpconnect/src/xpcwrappedjs.cpp | 7 js/src/xpconnect/src/xpcwrappednative.cpp | 2 js/src/xpconnect/tests/Makefile.in | 2 js/src/xpconnect/tests/chrome/Makefile.in | 51 js/src/xpconnect/tests/chrome/test_bug500931.xul | 43 js/src/xpconnect/tests/mochitest/Makefile.in | 5 js/src/xpconnect/tests/mochitest/bug500931_helper.html | 7 js/src/xpconnect/tests/mochitest/test_bug384632.html | 32 js/src/xpconnect/tests/mochitest/test_bug484107.html | 101 + layout/base/nsCSSFrameConstructor.cpp | 57 layout/base/nsCSSFrameConstructor.h | 32 layout/base/nsLayoutUtils.cpp | 21 layout/base/nsLayoutUtils.h | 9 layout/base/nsPresShell.cpp | 148 +- layout/base/nsStyleConsts.h | 3 layout/forms/nsTextControlFrame.cpp | 3 layout/generic/crashtests/399412-1.html | 31 layout/generic/crashtests/503961-1.xhtml | 25 layout/generic/crashtests/503961-2.html | 32 layout/generic/crashtests/511482.html | 42 layout/generic/crashtests/crashtests.list | 4 layout/generic/nsBRFrame.cpp | 10 layout/generic/nsBlockFrame.cpp | 53 layout/generic/nsBlockReflowContext.cpp | 2 layout/generic/nsBlockReflowState.cpp | 5 layout/generic/nsBlockReflowState.h | 2 layout/generic/nsColumnSetFrame.cpp | 7 layout/generic/nsContainerFrame.cpp | 5 layout/generic/nsHTMLReflowState.cpp | 77 - layout/generic/nsHTMLReflowState.h | 22 layout/generic/nsLineLayout.cpp | 17 layout/generic/nsPlaceholderFrame.cpp | 10 layout/generic/nsSpaceManager.cpp | 14 layout/reftests/bugs/363247-1-ref.html | 15 layout/reftests/bugs/363247-1.html | 20 layout/reftests/bugs/reftest.list | 1 layout/reftests/forms/input-text-dynamic-height-1-ref.xul | 9 layout/reftests/forms/input-text-dynamic-height-1.xul | 24 layout/reftests/forms/reftest.list | 2 layout/reftests/forms/textbox-align-baseline-1-ref.xul | 19 layout/reftests/forms/textbox-align-baseline-1.xul | 19 layout/style/nsCSSKeywordList.h | 1 layout/style/nsCSSParser.cpp | 2 layout/style/nsCSSPropList.h | 2 layout/style/nsCSSProps.cpp | 5 layout/style/nsCSSProps.h | 2 layout/style/nsComputedDOMStyle.cpp | 29 layout/style/nsRuleNode.cpp | 2 layout/style/test/property_database.js | 7 layout/style/test/test_value_computation.html | 4 layout/xul/base/src/crashtests/crashtests.list | 1 layout/xul/base/src/nsListBoxBodyFrame.cpp | 22 layout/xul/base/src/nsScrollBoxFrame.cpp | 2 layout/xul/base/src/tree/src/crashtests/399227-1.xul | 44 layout/xul/base/src/tree/src/crashtests/399227-2.xul | 50 layout/xul/base/src/tree/src/crashtests/crashtests.list | 2 layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp | 40 layout/xul/base/src/tree/src/nsTreeBodyFrame.h | 16 layout/xul/base/src/tree/src/nsTreeColumns.cpp | 11 layout/xul/base/src/tree/src/nsTreeColumns.h | 5 layout/xul/base/src/tree/src/nsTreeSelection.cpp | 22 modules/lcms/NEWS | 13 modules/lcms/README.1ST | 9 modules/lcms/include/lcms.h | 41 modules/lcms/src/cmscam97.c | 2 modules/lcms/src/cmscgats.c | 617 ++++++---- modules/lcms/src/cmsgamma.c | 6 modules/lcms/src/cmsintrp.c | 12 modules/lcms/src/cmsio0.c | 20 modules/lcms/src/cmsio1.c | 190 ++- modules/lcms/src/cmslut.c | 86 - modules/lcms/src/cmsmatsh.c | 11 modules/lcms/src/cmsmtrx.c | 10 modules/lcms/src/cmsnamed.c | 8 modules/lcms/src/cmspack.c | 113 + modules/lcms/src/cmsps2.c | 38 modules/lcms/src/cmssamp.c | 16 modules/lcms/src/cmsvirt.c | 2 modules/lcms/src/cmsxform.c | 92 - modules/libpr0n/decoders/gif/nsGIFDecoder2.cpp | 32 modules/libpr0n/decoders/gif/nsGIFDecoder2.h | 1 modules/libpref/src/prefapi.cpp | 2 modules/plugin/base/public/npapi.h | 13 modules/plugin/base/public/nsplugindefs.h | 12 netwerk/base/src/nsSerializationHelper.cpp | 20 netwerk/streamconv/converters/ParseFTPList.cpp | 26 netwerk/streamconv/converters/nsBinHexDecoder.cpp | 572 ++++----- netwerk/streamconv/converters/nsBinHexDecoder.h | 80 - netwerk/test/unit/test_bug515583.js | 72 + nsprpub/admin/repackage.sh | 8 nsprpub/config/prdepend.h | 1 nsprpub/configure | 86 - nsprpub/configure.in | 17 nsprpub/pr/include/prinit.h | 6 nsprpub/pr/src/misc/prdtoa.c | 32 nsprpub/pr/src/misc/prsystem.c | 43 nsprpub/pr/tests/vercheck.c | 8 parser/htmlparser/src/CNavDTD.cpp | 10 security/manager/.nss.checkout | 2 security/manager/Makefile.in | 1 security/manager/pki/resources/content/device_manager.js | 55 security/manager/ssl/public/Makefile.in | 1 security/manager/ssl/public/nsIPKCS11.idl | 49 security/manager/ssl/src/nsCrypto.cpp | 103 - security/manager/ssl/src/nsCrypto.h | 6 security/manager/ssl/src/nsIdentityChecking.cpp | 70 + security/manager/ssl/src/nsNSSCallbacks.cpp | 2 security/manager/ssl/src/nsNSSCallbacks.h | 2 security/manager/ssl/src/nsNSSCertHelper.cpp | 6 security/manager/ssl/src/nsNSSComponent.cpp | 81 + security/manager/ssl/src/nsNSSComponent.h | 21 security/manager/ssl/src/nsSSLThread.cpp | 14 security/nss/cmd/crlutil/crlgen_lex.c | 2 security/nss/cmd/shlibsign/shlibsign.c | 2 security/nss/cmd/ssltap/ssltap.c | 2 security/nss/lib/certdb/cert.h | 2 security/nss/lib/certdb/certdb.c | 2 security/nss/lib/certdb/certi.h | 2 security/nss/lib/certdb/certt.h | 2 security/nss/lib/certdb/crl.c | 2 security/nss/lib/certhigh/ocsp.c | 2 security/nss/lib/certhigh/ocsp.h | 2 security/nss/lib/certhigh/ocspi.h | 2 security/nss/lib/ckfw/Makefile | 2 security/nss/lib/ckfw/capi/cobject.c | 2 security/nss/lib/ckfw/capi/config.mk | 2 security/nss/lib/ckfw/crypto.c | 2 security/nss/lib/ckfw/find.c | 2 security/nss/lib/ckfw/hash.c | 2 security/nss/lib/ckfw/instance.c | 2 security/nss/lib/ckfw/mechanism.c | 2 security/nss/lib/ckfw/mutex.c | 2 security/nss/lib/ckfw/nssmkey/mobject.c | 2 security/nss/lib/ckfw/object.c | 2 security/nss/lib/ckfw/session.c | 2 security/nss/lib/ckfw/sessobj.c | 2 security/nss/lib/ckfw/slot.c | 2 security/nss/lib/ckfw/token.c | 2 security/nss/lib/ckfw/wrap.c | 2 security/nss/lib/dev/ckhelper.c | 2 security/nss/lib/dev/devslot.c | 2 security/nss/lib/dev/devutil.c | 2 security/nss/lib/freebl/aeskeywrap.c | 4 security/nss/lib/freebl/alg2268.c | 2 security/nss/lib/freebl/arcfive.c | 2 security/nss/lib/freebl/blapi.h | 2 security/nss/lib/freebl/blapit.h | 2 security/nss/lib/freebl/camellia.c | 2 security/nss/lib/freebl/dh.c | 2 security/nss/lib/freebl/drbg.c | 2 security/nss/lib/freebl/dsa.c | 2 security/nss/lib/freebl/hasht.h | 2 security/nss/lib/freebl/ldvector.c | 2 security/nss/lib/freebl/loader.c | 2 security/nss/lib/freebl/loader.h | 2 security/nss/lib/freebl/mpi/Makefile.win | 2 security/nss/lib/freebl/mpi/mpi-priv.h | 2 security/nss/lib/freebl/mpi/mpi.h | 2 security/nss/lib/freebl/nsslowhash.c | 2 security/nss/lib/freebl/pqg.c | 2 security/nss/lib/freebl/rijndael.c | 2 security/nss/lib/freebl/rsa.c | 2 security/nss/lib/freebl/sechash.h | 2 security/nss/lib/freebl/sha512.c | 2 security/nss/lib/freebl/shvfy.c | 2 security/nss/lib/freebl/tlsprfalg.c | 2 security/nss/lib/nss/nss.h | 2 security/nss/lib/pki/certificate.c | 2 security/nss/lib/pki/tdcache.c | 2 security/nss/lib/softoken/fipstest.c | 2 security/nss/lib/softoken/legacydb/keydb.c | 2 security/nss/lib/softoken/legacydb/lginit.c | 2 security/nss/lib/softoken/legacydb/pcertdb.c | 2 security/nss/lib/softoken/softoken.h | 2 security/nss/lib/softoken/softoknt.h | 2 security/nss/lib/ssl/ssl3con.c | 2 security/nss/lib/ssl/ssl3gthr.c | 2 security/nss/lib/ssl/sslcon.c | 2 security/nss/lib/ssl/sslenum.c | 2 security/nss/lib/ssl/sslimpl.h | 2 security/nss/lib/ssl/sslinfo.c | 2 security/nss/lib/ssl/sslmutex.c | 2 security/nss/lib/ssl/sslmutex.h | 2 security/nss/lib/ssl/sslproto.h | 2 security/nss/lib/ssl/sslsnce.c | 2 security/nss/lib/ssl/sslsock.c | 2 security/nss/lib/ssl/sslt.h | 2 security/nss/lib/ssl/win32err.c | 2 security/nss/lib/util/pkcs11n.h | 2 security/nss/lib/util/secitem.c | 2 security/nss/lib/util/secoid.h | 2 security/nss/lib/util/secoidt.h | 2 security/nss/lib/util/secport.h | 2 security/nss/pkg/solaris/SUNWtlsd/prototype | 2 toolkit/components/downloads/src/nsDownloadManager.cpp | 16 toolkit/components/passwordmgr/src/nsLoginManager.js | 3 toolkit/components/passwordmgr/test/test_basic_form_autocomplete.html | 36 toolkit/components/places/src/utils.js | 40 toolkit/components/places/tests/unit/test_utils_archiveBookmarksFile.js | 127 ++ toolkit/components/satchel/src/nsFormFillController.cpp | 103 + toolkit/components/satchel/src/nsFormFillController.h | 1 toolkit/components/satchel/test/Makefile.in | 1 toolkit/components/satchel/test/satchel_common.js | 40 toolkit/components/satchel/test/test_bug_511615.html | 399 ++++++ toolkit/content/license.html | 59 toolkit/content/widgets/tabbox.xml | 14 toolkit/content/xul.css | 6 toolkit/mozapps/update/src/nsUpdateService.js.in | 3 toolkit/mozapps/update/src/updater/updater.cpp | 2 toolkit/mozapps/update/test/unit/head_update.js | 48 toolkit/mozapps/update/test/unit/tail_update.js | 6 toolkit/mozapps/update/test/unit/test_0010_general.js | 1 toolkit/mozapps/update/test/unit/test_0020_general.js | 1 toolkit/mozapps/update/test/unit/test_0030_general.js | 1 toolkit/mozapps/update/test/unit/test_0040_general.js.in | 2 toolkit/mozapps/update/test/unit/test_0060_manager.js | 1 toolkit/mozapps/update/test/unit/test_0061_manager.js | 1 toolkit/mozapps/update/test/unit/test_0062_manager.js | 1 toolkit/mozapps/update/test/unit/test_0110_general.js | 1 toolkit/mozapps/update/test/unit/test_0111_general.js | 1 toolkit/xre/nsAppRunner.cpp | 23 uriloader/exthandler/nsExternalHelperAppService.cpp | 30 uriloader/exthandler/tests/mochitest/Makefile.in | 2 uriloader/exthandler/tests/mochitest/test_unsafeBidiChars.xhtml | 135 ++ uriloader/exthandler/tests/mochitest/unsafeBidiFileName.sjs | 47 view/src/nsScrollPortView.cpp | 3 widget/src/cocoa/nsChildView.mm | 43 widget/src/cocoa/nsCocoaWindow.mm | 16 widget/src/cocoa/nsMenuItemIconX.h | 14 widget/src/cocoa/nsMenuItemIconX.mm | 30 widget/src/cocoa/nsMenuItemX.mm | 4 widget/src/cocoa/nsMenuX.mm | 4 xpfe/components/filepicker/src/nsWildCard.cpp | 540 +++++--- xpfe/components/filepicker/src/nsWildCard.h | 60 316 files changed, 5851 insertions(+), 2189 deletions(-) diff -Nru xulrunner-1.9.0.13/accessible/src/msaa/nsAccessibleWrap.cpp xulrunner-1.9.0.15/accessible/src/msaa/nsAccessibleWrap.cpp --- xulrunner-1.9.0.13/accessible/src/msaa/nsAccessibleWrap.cpp 2008-08-16 07:00:35.000000000 +0000 +++ xulrunner-1.9.0.15/accessible/src/msaa/nsAccessibleWrap.cpp 2009-07-14 16:21:45.000000000 +0000 @@ -203,8 +203,13 @@ if (widget) { hwnd = (HWND)widget->GetNativeData(NS_NATIVE_WINDOW); NS_ASSERTION(hwnd, "No window handle for window"); + + nsIViewManager* viewManager = view->GetViewManager(); + if (!viewManager) + return E_UNEXPECTED; + nsIView *rootView; - view->GetViewManager()->GetRootView(rootView); + viewManager->GetRootView(rootView); if (rootView == view) { // If the current object has a widget but was created by an // outer object with its own outer window, then diff -Nru xulrunner-1.9.0.13/accessible/src/xul/nsXULTabAccessible.cpp xulrunner-1.9.0.15/accessible/src/xul/nsXULTabAccessible.cpp --- xulrunner-1.9.0.13/accessible/src/xul/nsXULTabAccessible.cpp 2007-11-15 19:53:41.000000000 +0000 +++ xulrunner-1.9.0.15/accessible/src/xul/nsXULTabAccessible.cpp 2009-08-26 01:38:01.000000000 +0000 @@ -41,6 +41,7 @@ #include "nsIDocument.h" #include "nsIFrame.h" #include "nsIDOMDocument.h" +#include "nsIDOMDocumentXBL.h" #include "nsIDOMXULSelectCntrlEl.h" #include "nsIDOMXULSelectCntrlItemEl.h" @@ -167,7 +168,18 @@ NS_ENSURE_TRUE(document, NS_ERROR_FAILURE); nsCOMPtr linkedPanel; - document->GetElementById(linkedPanelID, getter_AddRefs(linkedPanel)); + if (content->GetBindingParent()) { + nsCOMPtr documentXBL(do_QueryInterface(document)); + nsCOMPtr bindingParent = + do_QueryInterface(content->GetBindingParent()); + documentXBL->GetAnonymousElementByAttribute(bindingParent, + NS_LITERAL_STRING("id"), + linkedPanelID, + getter_AddRefs(linkedPanel)); + } + else { + document->GetElementById(linkedPanelID, getter_AddRefs(linkedPanel)); + } if (linkedPanel) { nsCOMPtr linkedPanelNode(do_QueryInterface(linkedPanel)); GetAccService()->GetAccessibleInWeakShell(linkedPanelNode, mWeakShell, diff -Nru xulrunner-1.9.0.13/browser/app/blocklist.xml xulrunner-1.9.0.15/browser/app/blocklist.xml --- xulrunner-1.9.0.13/browser/app/blocklist.xml 2009-02-14 05:22:01.000000000 +0000 +++ xulrunner-1.9.0.15/browser/app/blocklist.xml 2009-09-29 07:12:02.000000000 +0000 @@ -21,6 +21,14 @@ + + + + + + + + @@ -49,5 +57,13 @@ + + + + + + + + diff -Nru xulrunner-1.9.0.13/browser/app/module.ver xulrunner-1.9.0.15/browser/app/module.ver --- xulrunner-1.9.0.13/browser/app/module.ver 2009-07-31 03:31:14.000000000 +0000 +++ xulrunner-1.9.0.15/browser/app/module.ver 2009-10-06 17:07:29.000000000 +0000 @@ -1,7 +1,7 @@ WIN32_MODULE_COMPANYNAME=Mozilla Corporation WIN32_MODULE_COPYRIGHT=©Firefox and Mozilla Developers, according to the MPL 1.1/GPL 2.0/LGPL 2.1 licenses, as applicable. -WIN32_MODULE_PRODUCTVERSION=3,0,13,0 -WIN32_MODULE_PRODUCTVERSION_STRING=3.0.13 +WIN32_MODULE_PRODUCTVERSION=3,0,15,0 +WIN32_MODULE_PRODUCTVERSION_STRING=3.0.15 WIN32_MODULE_TRADEMARKS=Firefox is a Trademark of The Mozilla Foundation. WIN32_MODULE_DESCRIPTION=Firefox WIN32_MODULE_PRODUCTNAME=Firefox diff -Nru xulrunner-1.9.0.13/browser/components/feeds/src/FeedWriter.js xulrunner-1.9.0.15/browser/components/feeds/src/FeedWriter.js --- xulrunner-1.9.0.13/browser/components/feeds/src/FeedWriter.js 2008-08-29 15:45:29.000000000 +0000 +++ xulrunner-1.9.0.15/browser/components/feeds/src/FeedWriter.js 2009-08-12 08:33:38.000000000 +0000 @@ -1331,6 +1331,8 @@ // nsIObserver observe: function FW_observe(subject, topic, data) { + subject = new XPCNativeWrapper(subject); + if (!this._window) { // this._window is null unless this.write was called with a trusted // window object. @@ -1402,6 +1404,8 @@ // nsINavHistoryService onPageChanged: function FW_onPageChanged(aURI, aWhat, aValue) { + aURI = new XPCNativeWrapper(aURI); + if (aWhat == Ci.nsINavHistoryObserver.ATTRIBUTE_FAVICON) { // Go through the readers menu and look for the corresponding // reader menu-item for the page if any. diff -Nru xulrunner-1.9.0.13/browser/components/nsBrowserGlue.js xulrunner-1.9.0.15/browser/components/nsBrowserGlue.js --- xulrunner-1.9.0.13/browser/components/nsBrowserGlue.js 2008-11-20 21:47:58.000000000 +0000 +++ xulrunner-1.9.0.15/browser/components/nsBrowserGlue.js 2009-08-26 23:54:31.000000000 +0000 @@ -489,6 +489,7 @@ getService(Ci.nsIPrefBranch); var importBookmarks = false; + var importBookmarksHTML = false; var restoreDefaultBookmarks = false; try { restoreDefaultBookmarks = prefBranch.getBoolPref("browser.bookmarks.restore_default_bookmarks"); @@ -502,7 +503,8 @@ } else { try { - importBookmarks = prefBranch.getBoolPref("browser.places.importBookmarksHTML"); + importBookmarks = importBookmarksHTML = + prefBranch.getBoolPref("browser.places.importBookmarksHTML"); } catch(ex) {} } @@ -546,11 +548,12 @@ // Report the error, but ignore it. Cu.reportError(err); } - prefBranch.setBoolPref("browser.places.importBookmarksHTML", false); - if (restoreDefaultBookmarks) - prefBranch.setBoolPref("browser.bookmarks.restore_default_bookmarks", - false); } + if (importBookmarksHTML) + prefBranch.setBoolPref("browser.places.importBookmarksHTML", false); + if (restoreDefaultBookmarks) + prefBranch.setBoolPref("browser.bookmarks.restore_default_bookmarks", + false); } // Initialize bookmark archiving on idle. diff -Nru xulrunner-1.9.0.13/browser/components/places/content/places.js xulrunner-1.9.0.15/browser/components/places/content/places.js --- xulrunner-1.9.0.13/browser/components/places/content/places.js 2009-04-21 00:49:04.000000000 +0000 +++ xulrunner-1.9.0.15/browser/components/places/content/places.js 2009-08-25 00:37:01.000000000 +0000 @@ -538,11 +538,7 @@ var backupsDir = dirSvc.get("Desk", Ci.nsILocalFile); fp.displayDirectory = backupsDir; - // Use YYYY-MM-DD (ISO 8601) as it doesn't contain illegal characters - // and makes the alphabetical order of multiple backup files more useful. - var date = (new Date).toLocaleFormat("%Y-%m-%d"); - fp.defaultString = PlacesUIUtils.getFormattedString("bookmarksBackupFilenameJSON", - [date]); + fp.defaultString = PlacesUtils.getBackupFilename(); if (fp.show() != Ci.nsIFilePicker.returnCancel) { PlacesUtils.backupBookmarksToFile(fp.file, [PlacesUIUtils.leftPaneFolderId]); @@ -551,9 +547,7 @@ var latestBackup = PlacesUtils.getMostRecentBackup(); if (!latestBackup || latestBackup != fp.file) { latestBackup.remove(false); - var date = new Date().toLocaleFormat("%Y-%m-%d"); - var name = PlacesUtils.getFormattedString("bookmarksArchiveFilename", - [date]); + var name = PlacesUtils.getBackupFilename(); fp.file.copyTo(this.bookmarksBackupDir, name); } } diff -Nru xulrunner-1.9.0.13/browser/components/sessionstore/src/nsSessionStore.js xulrunner-1.9.0.15/browser/components/sessionstore/src/nsSessionStore.js --- xulrunner-1.9.0.13/browser/components/sessionstore/src/nsSessionStore.js 2008-12-17 05:18:26.000000000 +0000 +++ xulrunner-1.9.0.15/browser/components/sessionstore/src/nsSessionStore.js 2009-08-26 01:38:02.000000000 +0000 @@ -379,8 +379,13 @@ break; case "TabOpen": case "TabClose": - var panelID = aEvent.originalTarget.linkedPanel; - var tabpanel = aEvent.originalTarget.ownerDocument.getElementById(panelID); + let target = aEvent.originalTarget; + let panelID = target.linkedPanel; + let ownerDoc = target.ownerDocument; + let bindingParent = ownerDoc.getBindingParent(target); + let tabpanel = + ownerDoc.getAnonymousElementByAttribute(bindingParent, "id", + panelID); if (aEvent.type == "TabOpen") { this.onTabAdd(aEvent.currentTarget.ownerDocument.defaultView, tabpanel); } diff -Nru xulrunner-1.9.0.13/browser/config/version.txt xulrunner-1.9.0.15/browser/config/version.txt --- xulrunner-1.9.0.13/browser/config/version.txt 2009-07-31 03:31:14.000000000 +0000 +++ xulrunner-1.9.0.15/browser/config/version.txt 2009-10-06 17:07:30.000000000 +0000 @@ -1 +1 @@ -3.0.13 +3.0.15 diff -Nru xulrunner-1.9.0.13/caps/src/nsScriptSecurityManager.cpp xulrunner-1.9.0.15/caps/src/nsScriptSecurityManager.cpp --- xulrunner-1.9.0.13/caps/src/nsScriptSecurityManager.cpp 2009-06-24 02:30:21.000000000 +0000 +++ xulrunner-1.9.0.15/caps/src/nsScriptSecurityManager.cpp 2009-08-11 00:12:48.000000000 +0000 @@ -2191,6 +2191,15 @@ nsresult *rv) { NS_PRECONDITION(rv, "Null out param"); + if (!JS_ObjectIsFunction(cx, obj)) + { + // Protect against pseudo-functions (like SJOWs). + nsIPrincipal *result = doGetObjectPrincipal(obj); + if (!result) + *rv = NS_ERROR_FAILURE; + return result; + } + JSFunction *fun = (JSFunction *) caps_GetJSPrivate(obj); JSScript *script = JS_GetFunctionScript(cx, fun); diff -Nru xulrunner-1.9.0.13/client.mk xulrunner-1.9.0.15/client.mk --- xulrunner-1.9.0.13/client.mk 2009-07-31 03:31:13.000000000 +0000 +++ xulrunner-1.9.0.15/client.mk 2009-10-06 17:07:28.000000000 +0000 @@ -409,11 +409,11 @@ # # For branches, uncomment the MOZ_CO_TAG line with the proper tag, # and commit this file on that tag. -MOZ_CO_TAG = FIREFOX_3_0_13_RELEASE -NSPR_CO_TAG = FIREFOX_3_0_13_RELEASE -NSS_CO_TAG = FIREFOX_3_0_13_RELEASE -LDAPCSDK_CO_TAG = FIREFOX_3_0_13_RELEASE -LOCALES_CO_TAG = FIREFOX_3_0_13_RELEASE +MOZ_CO_TAG = FIREFOX_3_0_15_RELEASE +NSPR_CO_TAG = FIREFOX_3_0_15_RELEASE +NSS_CO_TAG = FIREFOX_3_0_15_RELEASE +LDAPCSDK_CO_TAG = FIREFOX_3_0_15_RELEASE +LOCALES_CO_TAG = FIREFOX_3_0_15_RELEASE ####################################################################### # Defines diff -Nru xulrunner-1.9.0.13/config/milestone.txt xulrunner-1.9.0.15/config/milestone.txt --- xulrunner-1.9.0.13/config/milestone.txt 2009-07-31 03:31:14.000000000 +0000 +++ xulrunner-1.9.0.15/config/milestone.txt 2009-10-06 17:07:30.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -1.9.0.13 +1.9.0.15 diff -Nru xulrunner-1.9.0.13/config/version_win.pl xulrunner-1.9.0.15/config/version_win.pl --- xulrunner-1.9.0.13/config/version_win.pl 2008-01-14 15:24:19.000000000 +0000 +++ xulrunner-1.9.0.15/config/version_win.pl 2009-08-15 04:41:49.000000000 +0000 @@ -54,8 +54,9 @@ $d || die("Unrecognized buildid string."); my $secondstodays = 60 * 60 * 24; - return (POSIX::mktime(00, 00, 00, $d, $m, $y - 1900) - - POSIX::mktime(00, 00, 00, 01, 01, 100)) / $secondstodays; + return sprintf("%d", + (POSIX::mktime(00, 00, 00, $d, $m - 1, $y - 1900) - + POSIX::mktime(00, 00, 00, 01, 00, 100)) / $secondstodays); } #Creates version resource file diff -Nru xulrunner-1.9.0.13/configure xulrunner-1.9.0.15/configure --- xulrunner-1.9.0.13/configure 2009-10-29 09:02:50.000000000 +0000 +++ xulrunner-1.9.0.15/configure 2009-10-29 09:03:04.000000000 +0000 @@ -1112,7 +1112,7 @@ STARTUP_NOTIFICATION_VERSION=0.8 DBUS_VERSION=0.60 LCMS_VERSION=1.17 -SQLITE_VERSION=3.6.7 +SQLITE_VERSION=3.6.10 MSMANIFEST_TOOL= diff -Nru xulrunner-1.9.0.13/content/base/src/nsContentUtils.cpp xulrunner-1.9.0.15/content/base/src/nsContentUtils.cpp --- xulrunner-1.9.0.13/content/base/src/nsContentUtils.cpp 2009-06-14 14:31:11.000000000 +0000 +++ xulrunner-1.9.0.15/content/base/src/nsContentUtils.cpp 2009-09-23 22:08:36.000000000 +0000 @@ -3639,7 +3639,7 @@ // i is unsigned, so i >= is always true for (PRUint32 i = 0; i < childCount; ++i) { nsIContent* child = aContent->GetChildAt(removeIndex); - if (removeIndex == 0 && child->IsNodeOfType(nsINode::eTEXT)) { + if (removeIndex == 0 && child && child->IsNodeOfType(nsINode::eTEXT)) { nsresult rv = child->SetText(aValue, PR_TRUE); NS_ENSURE_SUCCESS(rv, rv); diff -Nru xulrunner-1.9.0.13/content/html/document/src/nsHTMLDocument.cpp xulrunner-1.9.0.15/content/html/document/src/nsHTMLDocument.cpp --- xulrunner-1.9.0.13/content/html/document/src/nsHTMLDocument.cpp 2009-03-17 01:16:24.000000000 +0000 +++ xulrunner-1.9.0.15/content/html/document/src/nsHTMLDocument.cpp 2009-10-14 22:13:42.000000000 +0000 @@ -242,6 +242,14 @@ if (mNameContentList && mNameContentList != NAME_NOT_VALID) { NS_RELEASE(mNameContentList); } + + if (mIdContentList.Count() != 1 || + mIdContentList[0] != ID_NOT_IN_DOCUMENT) { + for (PRInt32 i = 0; i < mIdContentList.Count(); ++i) { + nsIContent* content = static_cast(mIdContentList[i]); + NS_RELEASE(content); + } + } } nsIContent* GetIdContent() { @@ -253,8 +261,11 @@ PRBool RemoveIdContent(nsIContent* aContent) { // XXXbz should this ever Compact() I guess when all the content is gone // we'll just get cleaned up in the natural order of things... - return mIdContentList.RemoveElement(aContent) && - mIdContentList.Count() == 0; + if (!mIdContentList.RemoveElement(aContent)) { + return PR_FALSE; + } + NS_RELEASE(aContent); + return mIdContentList.Count() == 0; } void FlagIDNotInDocument() { @@ -264,10 +275,13 @@ mIdContentList.AppendElement(ID_NOT_IN_DOCUMENT); } + void Traverse(nsCycleCollectionTraversalCallback* cb); + nsCOMPtr mKey; nsBaseContentList *mNameContentList; nsRefPtr mDocAllList; private: + // The content nodes are stored addrefed. nsSmallVoidArray mIdContentList; }; @@ -282,12 +296,20 @@ if (GetIdContent() == ID_NOT_IN_DOCUMENT) { NS_ASSERTION(mIdContentList.Count() == 1, "Bogus count"); - return mIdContentList.ReplaceElementAt(aContent, 0); + if (!mIdContentList.ReplaceElementAt(aContent, 0)) { + return PR_FALSE; + } + NS_ADDREF(aContent); + return PR_TRUE; } // Common case if (mIdContentList.Count() == 0) { - return mIdContentList.AppendElement(aContent); + if (!mIdContentList.AppendElement(aContent)) { + return PR_FALSE; + } + NS_ADDREF(aContent); + return PR_TRUE; } // We seem to have multiple content nodes for the same id, or we're doing our @@ -314,7 +336,11 @@ } } while (start != end); - return mIdContentList.InsertElementAt(aContent, start); + if (!mIdContentList.InsertElementAt(aContent, start)) { + return PR_FALSE; + } + NS_ADDREF(aContent); + return PR_TRUE; } @@ -388,13 +414,24 @@ nsCycleCollectionTraversalCallback *cb = static_cast(arg); IdAndNameMapEntry *entry = static_cast(hdr); + entry->Traverse(cb); - if (entry->mNameContentList != NAME_NOT_VALID) - cb->NoteXPCOMChild(entry->mNameContentList); + return PL_DHASH_NEXT; +} + +void +IdAndNameMapEntry::Traverse(nsCycleCollectionTraversalCallback* cb) +{ + if (mNameContentList != NAME_NOT_VALID) + cb->NoteXPCOMChild(mNameContentList); - cb->NoteXPCOMChild(static_cast(entry->mDocAllList)); + cb->NoteXPCOMChild(static_cast(mDocAllList)); - return PL_DHASH_NEXT; + if (mIdContentList.Count() != 1 || mIdContentList[0] != ID_NOT_IN_DOCUMENT) { + for (PRInt32 i = 0; i < mIdContentList.Count(); ++i) { + cb->NoteXPCOMChild(static_cast(mIdContentList[i])); + } + } } NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsHTMLDocument, nsDocument) @@ -3027,8 +3064,13 @@ consoleService->LogStringMessage(NS_LITERAL_STRING("Deprecated method document.getSelection() called. Please use window.getSelection() instead.").get()); } - nsIDOMWindow *window = GetWindow(); - NS_ENSURE_TRUE(window, NS_OK); + nsCOMPtr window = do_QueryInterface(GetScopeObject()); + nsCOMPtr pwin = do_QueryInterface(window); + NS_ENSURE_TRUE(pwin, NS_OK); + NS_ASSERTION(pwin->IsInnerWindow(), "Should have inner window here!"); + NS_ENSURE_TRUE(pwin->GetOuterWindow() && + pwin->GetOuterWindow()->GetCurrentInnerWindow() == pwin, + NS_OK); nsCOMPtr selection; nsresult rv = window->GetSelection(getter_AddRefs(selection)); @@ -4800,3 +4842,13 @@ aDocumentDefaultType, aResult); } #endif + +void +nsHTMLDocument::Destroy() +{ + nsDocument::Destroy(); + + // Try really really hard to make sure we don't leak things through + // mIdAndNameHashTable + InvalidateHashTables(); +} diff -Nru xulrunner-1.9.0.13/content/html/document/src/nsHTMLDocument.h xulrunner-1.9.0.15/content/html/document/src/nsHTMLDocument.h --- xulrunner-1.9.0.13/content/html/document/src/nsHTMLDocument.h 2009-02-03 14:18:47.000000000 +0000 +++ xulrunner-1.9.0.15/content/html/document/src/nsHTMLDocument.h 2009-10-14 22:13:41.000000000 +0000 @@ -201,6 +201,8 @@ nsIContent** aResult); #endif + virtual NS_HIDDEN_(void) Destroy(); + nsresult ChangeContentEditableCount(nsIContent *aElement, PRInt32 aChange); virtual EditingState GetEditingState() diff -Nru xulrunner-1.9.0.13/content/html/document/src/nsPluginDocument.cpp xulrunner-1.9.0.15/content/html/document/src/nsPluginDocument.cpp --- xulrunner-1.9.0.13/content/html/document/src/nsPluginDocument.cpp 2008-04-17 22:30:52.000000000 +0000 +++ xulrunner-1.9.0.15/content/html/document/src/nsPluginDocument.cpp 2009-09-29 09:53:03.000000000 +0000 @@ -153,11 +153,22 @@ void nsPluginDocument::SetScriptGlobalObject(nsIScriptGlobalObject* aScriptGlobalObject) { - if (!aScriptGlobalObject) { + // Set the script global object on the superclass before doing + // anything that might require it.... + nsMediaDocument::SetScriptGlobalObject(aScriptGlobalObject); + + if (aScriptGlobalObject) { + if (!mPluginContent) { + // Create synthetic document +#ifdef DEBUG + nsresult rv = +#endif + CreateSyntheticPluginDocument(); + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create synthetic document"); + } + } else { mStreamListener = nsnull; } - - nsMediaDocument::SetScriptGlobalObject(aScriptGlobalObject); } @@ -179,6 +190,17 @@ PRBool aReset, nsIContentSink* aSink) { + // do not allow message panes to host full-page plugins + // returning an error causes helper apps to take over + nsCOMPtr dsti (do_QueryInterface(aContainer)); + if (dsti) { + PRBool isMsgPane = PR_FALSE; + dsti->NameEquals(NS_LITERAL_STRING("messagepane").get(), &isMsgPane); + if (isMsgPane) { + return NS_ERROR_FAILURE; + } + } + nsresult rv = nsMediaDocument::StartDocumentLoad(aCommand, aChannel, aLoadGroup, aContainer, aDocListener, aReset, @@ -192,12 +214,6 @@ return rv; } - // Create synthetic document - rv = CreateSyntheticPluginDocument(); - if (NS_FAILED(rv)) { - return rv; - } - mStreamListener = new nsPluginStreamListener(this); if (!mStreamListener) { return NS_ERROR_OUT_OF_MEMORY; @@ -211,16 +227,14 @@ nsresult nsPluginDocument::CreateSyntheticPluginDocument() { - // do not allow message panes to host full-page plugins - // returning an error causes helper apps to take over - nsCOMPtr dsti (do_QueryReferent(mDocumentContainer)); - if (dsti) { - PRBool isMsgPane = PR_FALSE; - dsti->NameEquals(NS_LITERAL_STRING("messagepane").get(), &isMsgPane); - if (isMsgPane) { - return NS_ERROR_FAILURE; - } +#ifdef DEBUG + PRBool didInitialReflow = PR_FALSE; + nsIPresShell *shell = GetPrimaryShell(); + if (shell) { + shell->GetDidInitialReflow(&didInitialReflow); } + NS_ASSERTION(!didInitialReflow, "Creating synthetic plugin document content too late"); +#endif // make our generic document nsresult rv = nsMediaDocument::CreateSyntheticDocument(); diff -Nru xulrunner-1.9.0.13/content/xul/document/src/nsXULDocument.cpp xulrunner-1.9.0.15/content/xul/document/src/nsXULDocument.cpp --- xulrunner-1.9.0.13/content/xul/document/src/nsXULDocument.cpp 2009-06-25 01:03:49.000000000 +0000 +++ xulrunner-1.9.0.15/content/xul/document/src/nsXULDocument.cpp 2009-09-21 21:38:22.000000000 +0000 @@ -694,9 +694,11 @@ nsCOMPtr broadcaster = do_QueryInterface(aBroadcaster); nsCOMPtr listener = do_QueryInterface(aListener); - // We may be copying event handlers etc, so we must also copy - // the script-type to the listener. - listener->SetScriptTypeID(broadcaster->GetScriptTypeID()); + PRBool notify = mInitialLayoutComplete || mHandlingDelayedBroadcasters; + + // We may be copying event handlers etc, so we must also copy + // the script-type to the listener. + listener->SetScriptTypeID(broadcaster->GetScriptTypeID()); if (aAttr.EqualsLiteral("*")) { PRUint32 count = broadcaster->GetAttrCount(); @@ -721,7 +723,7 @@ nsAutoString value; if (broadcaster->GetAttr(nameSpaceID, name, value)) { listener->SetAttr(nameSpaceID, name, attributes[count].mPrefix, - value, mInitialLayoutComplete); + value, notify); } #if 0 @@ -740,11 +742,9 @@ nsAutoString value; if (broadcaster->GetAttr(kNameSpaceID_None, name, value)) { - listener->SetAttr(kNameSpaceID_None, name, value, - mInitialLayoutComplete); + listener->SetAttr(kNameSpaceID_None, name, value, notify); } else { - listener->UnsetAttr(kNameSpaceID_None, name, - mInitialLayoutComplete); + listener->UnsetAttr(kNameSpaceID_None, name, notify); } #if 0 @@ -3256,12 +3256,15 @@ } PRUint32 length = mDelayedBroadcasters.Length(); nsTArray delayedBroadcasters; + PRBool oldValue = mHandlingDelayedBroadcasters; + mHandlingDelayedBroadcasters = PR_TRUE; mDelayedBroadcasters.SwapElements(delayedBroadcasters); for (PRUint32 i = 0; i < length; ++i) { SynchronizeBroadcastListener(delayedBroadcasters[i].mBroadcaster, delayedBroadcasters[i].mListener, delayedBroadcasters[i].mAttr); } + mHandlingDelayedBroadcasters = oldValue; } } diff -Nru xulrunner-1.9.0.13/content/xul/document/src/nsXULDocument.h xulrunner-1.9.0.15/content/xul/document/src/nsXULDocument.h --- xulrunner-1.9.0.13/content/xul/document/src/nsXULDocument.h 2009-06-15 07:28:51.000000000 +0000 +++ xulrunner-1.9.0.15/content/xul/document/src/nsXULDocument.h 2009-09-21 21:38:23.000000000 +0000 @@ -693,6 +693,7 @@ }; nsTArray mDelayedBroadcasters; + PRPackedBool mHandlingDelayedBroadcasters; void MaybeBroadcast(); private: diff -Nru xulrunner-1.9.0.13/content/xul/templates/src/nsXULTemplateBuilder.cpp xulrunner-1.9.0.15/content/xul/templates/src/nsXULTemplateBuilder.cpp --- xulrunner-1.9.0.13/content/xul/templates/src/nsXULTemplateBuilder.cpp 2009-06-10 19:07:31.000000000 +0000 +++ xulrunner-1.9.0.15/content/xul/templates/src/nsXULTemplateBuilder.cpp 2009-08-08 14:06:22.000000000 +0000 @@ -100,7 +100,7 @@ #include "plhash.h" #include "nsIDOMClassInfo.h" #include "nsPIDOMWindow.h" - +#include "nsThreadUtils.h" #include "nsNetUtil.h" #include "nsXULTemplateBuilder.h" #include "nsXULTemplateQueryProcessorRDF.h" @@ -1108,7 +1108,9 @@ // case we may need to nuke and rebuild the entire content model // beneath the element. if (aAttribute == nsGkAtoms::ref) - Rebuild(); + nsContentUtils::AddScriptRunner( + NS_NEW_RUNNABLE_METHOD(nsXULTemplateBuilder, this, + RunnableRebuild)); // Check for a change to the 'datasources' attribute. If so, setup // mDB by parsing the vew value and rebuild. @@ -1118,7 +1120,9 @@ PRBool shouldDelay; LoadDataSources(aDocument, &shouldDelay); if (!shouldDelay) - Rebuild(); + nsContentUtils::AddScriptRunner( + NS_NEW_RUNNABLE_METHOD(nsXULTemplateBuilder, this, + RunnableRebuild)); } } } diff -Nru xulrunner-1.9.0.13/content/xul/templates/src/nsXULTemplateBuilder.h xulrunner-1.9.0.15/content/xul/templates/src/nsXULTemplateBuilder.h --- xulrunner-1.9.0.13/content/xul/templates/src/nsXULTemplateBuilder.h 2008-02-13 23:41:17.000000000 +0000 +++ xulrunner-1.9.0.15/content/xul/templates/src/nsXULTemplateBuilder.h 2009-08-08 14:06:22.000000000 +0000 @@ -152,6 +152,8 @@ virtual nsresult RebuildAll() = 0; // must be implemented by subclasses + void RunnableRebuild() { Rebuild(); } + /** * Find the